汇编语言程序设计复习题 一、 选择题
1.用户为了解决自己的问题,用汇编语言所编写的程序,称为( B ) A.目标程序 B.源程序 C.可执行程序 D.汇编程序
2.某系列微机对存储器的分段,如果每一个段最多的字节存储单元是64K,那么表示段内字节单元偏移地址的二进制位数应是( B )
A.20位 B.16位 C.15位 D.12位
3.设 SP初值为2000H,执行指令“PUSH AX”后,SP的值是( D ) A.1FFFH B.1998H C.2002H D.1FFEH 4.循环指令LOOP产生循环的条件是( C ) A.CX-1=1 B.CX-1=0 C.CX-1≠0 D.CF=1和ZF=0
5.汇编语言源程序中,每个语句可由四项组成,其中名字项是一个符号,下面列出的有效名字是( A )
A. Variable B. First & ld C.0FFFFH D. ?Memphis?
6. 要求将A,B两个字符的ASCⅡ码41H,42H顺序存放在连续两个字存储单元中,可选用的语句是( A )
A. DA1 DB ?AB? B.DA1 DW ?AB? C. DA1 DB 0ABH D.DA1 DW ?ABH
7.某程序装入内存后,DS=1200H,CS=1400H,则程序中数据段中的数据最多是( C )字节。
A.2K B.4K C.8K D.16K
8.有语句:COUNT EQU 256下列四种叙述中,正确的是( C )。 A.COUNT是变量 B.COUNT占用一个字节存储单元 C.COUNT是符号常数 D.COUNT占用二个字节存储单元 9.下面指令中,源操作数的寻址方式为立即寻址的是( C )。 A.MOV AX,OFFSET A B.MOV AX,A C.MOV AX,1 D.MOV AX,A〔BX〕 10.下列指令执行后,不改变AL寄存器内容的指令是( B )。 A.AND AL,1 B.CMP AL,DL C.XOR AL,AL D.SUB AL,DL
11.执行1号DOS系统功能调用,从键盘输入的字符值存放在( A )寄存器中。 A.AL B.BL C.CL D.DL
12.将CX寄存器低4位清零的正确指令是( B )。 A. AND CX,0F0H B.AND CX,0FFF0H
C.AND CX,1110H D.MOV CX,0
13.微机中,有符号数是用( B )表示的 A.原码 B.补码 C.反码 D.BCD码 14.把汇编源程序变成目标代码程序的过程是( B ) A.编译 B.汇编 C.编辑 D.链接
二、 填空题
1.ZF标志位是标志结果是否为零的,若结果为零,ZF为( 1 ),否则ZF为( 0 )。当ZF为1时,SF为( 0 ) 2.
从80386开始,Intel的CPU具有3种运行模式:实模式、保护模式和虚拟8086模式。
3. 16位无符号整数的表示范围为0--65535,写成16进制形式为(0H--FFFFH),16位有符号整数的表示范围为-32768--+32767,写成16进制形式为(8000H—7FFFH ) 4.
寻址方式指的是指令按什么方式给出操作数或与其有关的地址信息,80386以上的微处理器指令寻址方式有八种:立即寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式 、基址变址寻址方式 、相对基址变址寻址方式 、比例变址寻址方式 。
5.循环程序通常由( 循环准备 )(循环体)(循环的控制与修改)和循环结果处理四部分构成 。
6. 宏指令定义必须由伪指令( MACRO )开始,伪指令( ENOM )结束,两者之间的语句称为( 宏定义体 )
7.调用程序与子程序之间的参数传递方法有四种,即堆栈法、(约定寄存器,)(约定存储单元法,)( 向量传递法 ) 8.分别用一条语句实现下述指明的功能
(1)栈顶内容弹出送字变量AYW( POP AYW ) (2)双字变量AYD存放的地址指针送ES和SI( LES SI,AYD ) (3)变量AY2类型属性送AH( MOV AH,TYPE AY2 ) (4)不允许中断即关中断( CLI )
(5)将字符串?HOW ARE YOU!?存入变量AYB( AYB DB ?HOW ARE YOU!?) (6)子程序返回调用程序( RET )
(7)地址表达式AYY[4]的偏移地址送字变量ADDR( MOV ADDR,OFFSET AYY[4] ) (8)AX的内容加1,要求不影响CF( INC AX )
(9)BX的内容加1,要求影响所有标志位( ADD BX,1 ) (10)若操作结果为零转向标号GOON( JZ GOON ) (11)BX寄存器低4位置 1( OR BX,000FH ) (12)AL寄存器最低位置 0( AND AL ,0FEH ) (13)AX与BX的值互换( XCHG AX , BX )
(14)变量 ARRAY 的地址送DI 寄存器 ( LEA DI, ARRAY
或 MOV DI , OFFSET ARRAY )
三. 排错题:每小题列出了一条指令,判断该指令有无语法错误,如果存在语法错误,请指出具体的错误原因。
1.PUSH 5588H ;push的源操作数不能是立即数 2.MOV DS, 1720H ;给段寄存器赋值不能给立即数
3.ADD AX, CL ;AX是16位的,CL是8位的,不能相加 4.AND AX,[DX] ;DX不是基址寄存器
5. MOV CS, AX ;MOV 指令不能给CS段寄存器传送数据 6. MOV M1 , M2 ;MOV指令不能给两个存储单元之间直接传送数据 7. LEA BX , OFFSET VAR ;多了 OFFSET 项
四、简答题
1.试述CMP AX,BX和SUB AX,BX两条语句的异同点?
相同点:都执行AX-BX操作,影响所有标志位且对档志位的影响相同 不同点:CMP执行后AX,BX内容不改变,而SUB执行后,AX内为AX-BX之差,即内容变化了。 2.标号有哪三个属性?其含义是什么?
段属性指定义该标号的段地址; 偏移属性:指该标号的偏移地址
类型属性:指标号是在定义它的段内引用还是在其它段引用 3.子程序和中断处理子程序在调用方法及返回指令上有何区别?
子程序调用是由CALL 指令调用的,而中断分为内中断和外中断,内中断是通过 INT n指令调用中断处理子程序的,外中断是来自于CPU外部的中断,它的产生是不可预测的,当这些中断产生时由系统自动完成中断处理子程序的调用。子程序返回执行RET 指令,而中断处理子程序的返回执行 IRET。
4.简述宏指令与子程序的区别。
采用宏和子程序均能达到代码共享、简化源程序的目的,但它们的区别也是显而易见的。区别主要有以下几点: (1) 工作方式的区别
宏调用是在汇编时由汇编程序进行宏扩展的,而子程序是在程序执行期间由调用程序调用的。因此使用宏指令占用较大的空间但速度较快,而使用子程序占用较小的空间但执行时间较长。
(2) 参数传递的方便性
宏指令定义时可以带有形式参数,宏调用时可以直接在宏指令名后带有实参数以替换形式参数,参数传递十分方便。而子程序参数的传递是通过寄存器、堆栈等方法实现的,实现起来不是很方便。
(3) 参数的多样性及灵活性:宏指令的实参数可以是常数、寄存器、内存变量、操作码或操作码的一部分等,这是子程序所不能比拟的。
5.简述子程序设计注意事项。
(1).子程序说明:为了便于引用,子程序就在开头对其功能、调用参数各返回参数等予以说明,例如参数的类型、格式及存放位置等。
(2).寄存器的保存与恢复:设计良好的子程序在其开头应保存它将用到的寄存器的内容,而在返回前再恢复它们,以保证调用程序的寄存器内容不被破坏。
(3).密切注意堆栈状态:在含有子程序的汇编语言程序设计中,要密切注意堆栈的变化,这包括要注意一切与堆栈有关的操作。当执行RET指令时,从堆栈弹出的数据应该正好是由相应的CALL 指令压入的值,否则后果不可预测。
6.简述完整段定义和简化段定义的汇编语言程序的一般结构。
完整段定义汇编语言程序一般格式如下: STSG SEGMENT STACK ‘S’
DW
32 DUP(?) ;堆栈段定义
STSG ENDS DATA SEGMENT CODE MAIN MAIN
SEGMENT ;代码段定义 PROC MOV MOV MOV INT ENDP CODE END
ENDS MAIN ;主程序开始
AX , DATA ;设置DS段的值 DS , AX
AX ,4C00H ;程序结束返回DOS 21H
ASSUME CS:CODE , DS:DATA,SS:STSG 。。。。。。;数据段定义
DATA ENDS
。。。。。。。。。。。。;
简化段定义汇编语言程序的一般结构: (1)使用16位指令模式的一般格式 .MODEL SMALL ;存储模式 .586 ;指令集 .STACK 64 ;堆栈段定义 .DATA ;数据段定义 。。。。。。。。。。
.CODE ;代码段定义 .STARTUP ;主程序起始 。。。。。。。。。
.EXIT ;程序结束返回DOS END
(2)使用32位指令模式的一般格式 .model flat, stdcall ;存储模式 option casemap:none .586 ;指令集
includelib msvcrt.lib ;函数库包含 。。。。。。。
.stack 64 ;堆栈段定义 .data ;数据段定义 。。。。。。。。。。
.code ;代码段定义 start: ;主程序起始 。。。。。。。。。
ret ;程序结束 end start
五.程序分析题: 每小题列出了一段小的程序片段和相关存储单元的初始值,请按题目的要求分析各程序片段的运行结果或按功能要求填写指令。(寄存器中的内容请使用十六进制形式给出) 1.阅读如下程序片段 MOV AL,0F3H MOV DL,0C4H ADD AL,DL AND AL,0FH
执行上述程序片段后,(AL)= 7 H , AF= 0 ,CF= 0 ,OF= 0 ,PF= 1 . 2.阅读如下程序片段 MOV AL, 7EH MOV CL, 04H ROL AL,CL
执行上述程序片段后,(AL)= e7 H , (CL)= 4 , CF= 1 , OF= 0 . 3.阅读如下程序片段 MOV AX,0632H MOV BX,0C202H SUB AX,BX
INC AX
执行上述程序片段后,(AX)= 4431H , CF= 1 , OF= 0 . 4.阅读如下程序片段,假设(SP)=0064H MOV AX,0001H MOV BX,0002H PUSH AX PUSH BX POP AX POP BX
执行上述程序片段后,(AX)= 0002H ,(BX)= 0001H , (SP)= 0064H ,
5 .阅读如下程序段,回答所提出的问题,假定X1,X2,...XN为无符号数。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库汇编语言复习题与答案在线全文阅读。
相关推荐: