计算机组成原理与汇编语言程序设计编程练习题.doc_第1页
计算机组成原理与汇编语言程序设计编程练习题.doc_第2页
计算机组成原理与汇编语言程序设计编程练习题.doc_第3页
计算机组成原理与汇编语言程序设计编程练习题.doc_第4页
计算机组成原理与汇编语言程序设计编程练习题.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机组成原理与汇编语言程序设计编程练习题一、填空题1、 构成MSAM汇编语言程序的三种语句是:指令语句、 和宏指令语句。2、 构成MSAM汇编语言程序的三种语句是: 、伪指令语句和宏指令语句。3、 构成MSAM汇编语言程序的三种语句是:指令语句、伪指令语句和 。4、 在汇编程序中的变量均有三个属性:段属性、偏移量属性和 。5、 在汇编程序中的变量均有三个属性: 、偏移量属性和类型属性。6、 在汇编程序中的变量均有三个属性:段属性、 和类型属性。7、 在汇编语言程序设计中的三种构成方法是:顺序程序设计、 和循环程序设计。8、 在汇编语言程序设计中的三种构成方法是: 、分支程序设计和循环程序设计。9、 在汇编语言程序设计中的三种构成方法是:顺序程序设计、分支程序设计和 。10、汇编语言中的常数有 和字符常数。11、在汇编语言程序设计中的三种构成方法分别是:顺序程序设计、和循环程序设计。12、汇编语言源程序至少须有一个_段和一条_伪指令,而_段和_段则视需要而设。二、判断题1、 指令TEST AL,0执行后AL的内容一定是全零。( )2、 逻辑右移1位和算术右移1位结果都是一样的。( )3、 下面是合法的数据传送指令:MOV AL,255。( )4、 指令之间的衔接方式有两种:串行的重叠处理方式和并行的顺序安排方式。( ) 5、 指令SHRAX,4可以将AX的内容逻辑右移4位。( )三、单项选择题1、 把源程序变成目标程序的应用软件是_。A、EDIT B、MASM C、LINKD、DEBUG 四、简答题1. 请简述汇编语言程序开发的过程2. 请简述汇编语言源程序和机器语言程序有什么不同?3. 汇编程序开发步骤中的汇编程序MASM的主要作用是什么?4. MASM汇编程序开发步骤中的LINK的主要作用是什么?5. 顺序程序设计的主要特点是什么?6. 一个循环程序通常由哪5个部份组成?7. 请回答汇编语言程序开发的四个主要步骤8. 请回答汇编语言程序开发过程中的第二和第三步所需要的软件名称和生成的主要文件的扩展名。(如第一步需要软件名称是字编辑软件PE等,生成的源程序的扩展名是ASM)9. 请简述调用系统功能子程序的设计格式是什么?10. 指令语句和伪指令语句有什么不同?11. 简述汇编语言的组成及各基本语句的作用。12. 什么是系统调用?如何进行系统调用?五、分析设计题1. 如下程序是准备将0至100中的奇数求和,结果送SUM字单元,请用汇编语言完成此程序的设计。DATA SEGMENT ;(1)定义结果单元,初值为0DATA ENDSSTACT SEGMENT PARA STACK DB 100 DUP(?)STACK ENDS ;定义好堆栈CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACKSTART: MOV ;(2) MOV DS,AX ;装填DATA数据段地址 MOV AX,0 MOV DX,1LOOP1: CMP DX,100 JG EXIT ;大于转移 ADD AX,DX ;(3)调整DX的值 JMP LOOP1 ;无条件转移EXIT: ;(4)将结果存入SUM单元 MOV AH, 4CH INT 21H ;正常返回DOSCODE ENDS ;(5)程序结束2. 如下程序是准备将100至200中的奇数求和,结果送SUM字单元,请用汇编语言完成此程序的设计。DATA SEGMENTSUM DW 0 ;定义结果单元,初值为0DATA ENDSSTACT SEGMENT PARA STACKDB 100 DUP(?) ;(1)定义好堆栈CODE SEGMENT ;(2)分配段寄存器START: MOV AX,DATA ;(3)装填DATA数据段地址 MOV AX,0 MOV DX,101LOOP1: ;(4)比较,形成条件 JG EXIT ;大于转移 ADD AX,DX INC DX ;调整DX的值 INC DX ; (5)做下一次EXIT: MOV SUM, AX ;将结果存入SUM单元 MOV AH, 4CH INT 21H ;正常返回DOSCODE ENDS END START ;程序结束3. 如下程序是准备将0至100中的偶数求和,结果送SUM字单元,请用汇编语言完成此程序的设计。DATA SEGMENT SUM DW 0 ;定义结果单元,初值为0DATA ENDSSTACT SEGMENT PARA STACK DB 100 DUP(?)STACK ENDS ;定义好堆栈CODE SEGMENT ;(1)分配段寄存器START: MOV AX,DATA MOV DS,DATA ;装填DATA数据段地址 ;(2)设定初值 MOV DX,2LOOP1: ;(3)比较,形成条件 JG EXIT ;大于转移 ADD AX,DX INC DX ;调整DX的值 INC DX JMP LOOP1 ; 做下一次EXIT: ;(4)将结果存入SUM单元 ;(5)置入口参数 INT 21H ;正常返回DOSCODE ENDS END START ;程序结束4. 如下程序是准备将100至200中的偶数求和,结果送SUM字单元,请用汇编语言完成此程序的设计。DATA SEGMENTSUM DW 0 ;定义结果单元,初值为0 DATA ENDSSTACT SEGMENT PARA STACK ; (1)定义100个字节的堆栈空间STACK ENDS CODE SEGMENT ;(2)分配段寄存器START: MOV AX,DATA MOV DS,DATA ;装填DATA数据段地址 MOV AX,0 ;(3)设定初值LOOP1: ;(4)比较,形成条件 JG EXIT ;大于准备结束 ADD AX,DX INC DX ;调整DX的值 INC DX JMP LOOP1 ; 做下一次EXIT: MOV SUM, AX ;将结果存入SUM单元 MOV AX,4C00H ;(5)正常返回DOSCODE ENDS END START ;程序结束5. 如下程序是准备将VAR单元中低四位的二进值转换成ASCII码,结果送ABC单元,请用汇编语言完成此程序的设计。DATA SEGMENT ABC DB 0 ;定义结果单元,初值为0 VAR DB ?DATA ENDSSTACT SEGMENT PARA STACK ;(1)定义100个字节的堆栈空间STACK ENDS CODE SEGMENT ;(2)分配段寄存器START: MOV AX,DATA MOV DS,DATA ;装填DATA数据段地址 MOV AL, VAR ;(3)将AL高4位清零 CMP 9,AL JAE EXIT ;AL小于等于9时转EXIT ;(4)大于9时调整ALEXIT: ADD AL, 30H MOV ABC,AL MOV AH,4CH ;(5)返回DOS CODE ENDS END START ;程序结束6. 已知VAR低4位的值是小于16的无符号数,如下程序是准备将VAR单元中低4位的值转换成ASCII码,结果送ABC单元,请用汇编语言完成此程序的设计。DATA SEGMENT ABC DB 0 ;定义结果单元,初值为0 VAR DB ? ;小于16DATA ENDSSTACT SEGMENT PARA STACK ; (1)定义100个字节的堆栈空间STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK ;分配段寄存器START: MOV AX,DATA ;(2)装填DATA数据段地址 MOV AL, VAR AND AL,0FH ; 将BL的高四位清零 9,AL ;(3)比较AL是否大于9 JAE EXIT ;AL小于等于9时转EXIT ADD AL,7EXIT: ;(4)对AL加工为ASCII码 MOV ABC,AL ;(5)返回DOS系统调用入口参数 INT 21HCODE ENDS END START ;程序结束7. 如下程序是准备将VAR单元中高四位的二进值转换成ASCII码,结果送ABC单元,请用汇编语言完成此程序的设计。DATA SEGMENT ABC DB 0 ;定义结果单元,初值为0 VAR DB ?DATA ENDSSTACT SEGMENT PARA STACK DB 100 DUP(?) ;定义100个字节的堆栈空间STACK ENDS CODE SEGMENT ;(1)分配段寄存器START: MOV AX,DATA ;(2)装填DATA数据段地址 MOV AL, VAR ;(3)移位次数送寄存器 SHL AL,CL AND AL,0FH CMP 9,AL JAE EX09 ;AL小于等于9时转EX09 ;(4)大于9时AL加工 JMP EXITEX09: ADD AL,30HEXIT: MOV ABC,AL MOV AH,4CH ;(5)返回DOSCODE ENDS END START ;程序结束8. 如下程序是准备将VAR单元中D2至D5四位的二进值转换成ASCII码,结果送ABC单元,请用汇编语言完成此程序的设计。DATA SEGMENTABC DB 0 ;定义结果单元,初值为0VAR DB ?DATA ENDSSTACT SEGMENT PARA STACK DB 100 DUP(?) ;定义100个字节的堆栈空间STACK ENDS CODE SEGMENT ;(1)分配段寄存器START: ;(2)装填DATA数据段地址 MOV DS,AX MOV AL, VAR ;(3)移位次送寄存器 SHL AL,CL ;(4)清AL高4位为0 CMP 9,AL JAE EXIT ;AL小于等于9时转EXIT ADD AL, 7 ;大于9时AL加工为BCD码EXIT: ADD AL,30H ;(5)存结果 MOV AH,4CH INT 21H ;返回DOSCODE ENDS END START ;程序结束9. 已知STR是一个以$为结束的字符串,如下程序统计字符A在字符串中出现的次数,并将统计结果送COUNT单元,请用汇编语言完成此程序的设计。DATA SEGMENTSTR DB ACabAabbbAHJA,$ ;定义STR串 ; (1)定义COUNT 字节单位,初值为零DATA ENDSSTACT SEGMENT PARA STACK| DB 100 DUP(?) ;定义100个字节的堆栈空间STACK ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK ;分配段寄存器START: MOV AX,DATA MOV DS,AX ; 装填DATA段段地址 MOV CL,0 ; (2) 装入STR有效地址到SI LOOP1: ; (3)取STR中的一个字符送寄存器 CMP AL, A JZ SUM ; 如果是A字符转统计 CMP AL , $ ; 比较是否为串结束符 ; (4)如果是$转 ; (5)调整SI JMP LOOP1SUM: INC CL INC SI JMP LOOP1EXIT: MOV COUNT,CL ;结果送入COUNT单元 MOV AH,4CH INT 21H ;返回DOSCODE ENDS END START10. 已知STR是一个以$为结束的字符串,如下程序统计字符A在字符串中出现的次数,并将统计结果送COUNT单元,请用汇编语言完成此程序的设计。DATA SEGMENTSTR DB AVCFACabAabbbAHJA,$ ;定义STR串COUNT DB 0 ;定义COUNT 字节单位,初值为零DATA ENDSSTACT SEGMENT PARA STACK ;(1)定义1K个字节的堆栈空间STACK ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK ;分配段寄存器START: MOV AX,DATA MOV DS,AX ; 装填DATA段段地址 MOV CL,0 ; (2) 装入STR有效地址到LOOP1:MOV AL ,SI ;取STR中的一个字符送AL寄存器 ; (3)比较取出的字符是A? JZ SUM ;如果是A字符转统计 CMP AL , $ ;比较是否为串结束符 JZ EXIT ;如果是$转 ; (4)调整SI JMP LOOP1SUM: ; (5)统计数加1 INC SI JMP LOOP1EXIT: MOV COUNT,CL ;结果送入COUNT单元 MOV AH,4CH INT 21H ;返回DOSCODE ENDS END START二、第5章练习题解答1、填空题参考答案1、 伪指令语句2、 指令语句3、 宏指令语句4、 类型属性5、 段属性6、 偏移量属性 (或位移量属性)7、 分支程序设计8、 顺序程序设计9、 循环程序设计10、 数值常数11、 分支程序设计。12、 代码;END;数据;堆栈。2、判断题参考答案1.(错)2. (错)3. (对)4.(错)5.(错) 3、单项选择题参考答案1.B 4、简答题参考答案1用文字编辑软件编辑源程序文件(1)调用汇编程序MASM将源程序汇编成目标程序(2)如果有错则转(1),无错则下一步(3)调用连接文件LINK将目标程序转成可执行文件(4)装载运行(或用框图作答也对)2(1)机器语言程序是指用二进制代码组成的指令序列(2)汇编语言是将机器语言“符号化”,汇编的指令语句与机器指令一一对应3对源程序进行汇编,如果源程序无语法错,就把源程序汇编生成目标程序。4连接程序LINK将目标程序(OBJ)转换为一个可执行文件(EXE)5程序运行时,完全按照编写的指令顺序执行,且每条指令仅执行一次。6(1)初始化部份;(2)工作部份(3)修改部份(4)控制部份(5)结束处理部份7(1)编辑生成源程序(2)汇编源程序生成目标程序(3)连接目标程序生成可执行文件(4)运行调试可执行文件8(1)汇编程序MASM。生成的目标程序扩展名OBJ;(2)连接程序LINK。生成的可执行文件扩展名EXE。9(1)送入口参数到指定寄存器(2)送子功能号到AH(3)发出软中断指令 INT10 (1)指令语句汇编时生成可供执行的指令代码。 (2)伪指令语句是指示汇编程序如何汇编源程序,汇编时不生成指令代码。11 (1)汇编语言是由指令语句、伪指令语句、和宏指令语句组成。 (2)指令语句是程序运行时所执行的语句; (3)伪指令语句是汇编过程中执行的语句; (4)宏指令语句是在汇编过程中产生指令代码用于替代程序中多次出现的程序段。12 系统调用DOS调用中通过INT 21H的调用。 其过程是: (1)置入口参数(1分); (2)将系统功能号送入AH: (3)执行系统调用INT 21H。5、分析设计题参考答案1、 解答:(1)SUM DW 0(2) AX,DATA (3)ADD DX ,2(4) MOV SUM ,AX(5)END START2、 解答:(1)STACK ENDS(2)ASSUME CS:CODE,DS:DATA,SS,STACK(3)MOV DS,AX(4)CMP DX,200(5)JMP LOOP13、 解答:(1)ASSUME CS:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论