汇编语言程序设计复习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《汇编语言程序设计》复习题
一、填空题
1、8086CPU内部结构按功能分为两部分,即 BU(执行部件)和 BIU(总线接口部件)。
2、CPU中的总线接口部件BIU,根据执行部件EU的要求,完成CPU与主存储器或I/0端口之间的数据传送。
3、8086中的BIU由四个 16 位段寄存器、一个 16 位指令指针、 6 字节指令队列、 20 位地址加法器和总线控制电路组成。
4、8086/8088的执行部件EU由 8 个通用寄存器、 1 个专用寄存器、一个标志寄存器和 ALU 等构成。
5、根据功能不同,8086的标志位可分为状态标志和控制标志。
6、8086/8088构成的微机中,每个主存单元对应两种地址:段基值和偏移量。
7、8086CPU具有 20 根地址线,直接寻址能力可达 1M 。
8、逻辑地址由段基值和偏移量组成,其中的段基值是由段寄存器存储。
9、计算机的指令由操作码和地址码两部分组成。
10. 零地址指令是不带地址码的机器指令,其操作数是由隐含指定提供的。
11. 8088CPU中共有 14 个寄存器,这些寄存器为 16 位。
12. F标志寄存器共有9个标志位,除OF、SF、AF和CF外,还有 DF 、 IF 、 TF 、
▁ ZF 和 PF ,其中用于记录是否产生进位的标志位是 CF 。
13. 标号和变量所具有的三种属性分别为段属性、偏移量属性和类型属性。
14. 操作数有三种类型,分别为常数操作数、寄存器操作数和存储器操作数。
15. 一个源程序中可以包含代码段、数据段堆栈段及附加段。
其中代码
段是源程序中必不可少的,其它的段可有可无。
16. SEGMENT/ENDS称为段定义伪指令;ASSUME称为段寻址伪指令;
NAME/END称为模块定义伪指令;源程序结束伪指令为 END ;过程定义伪指令为 PROC/ENDP 。
数据定义伪指令为 DB 、 DW 、
DD 。
17. 一般DOS系统功能调用的步骤为:(1) 送入口参数到指定寄存器;(2)送功
能号至AH ;(3)软中断指令INT 。
18. 常用的DOS功能调用中的1号功能调用完成带显示的键盘输入操作,2号功
能调用完成单字符显示。
19. DOS功能调用可分为磁盘的读/写控制、内存管理、文件操作和目录管
理、基本输入/输出(对键盘、打印机和显示器等)控制、日期管理
和时间管理五类。
20.一般称SP为堆栈指针寄存器,称AX为累加寄存器。
21.汇编程序一般采用二次扫描完成对源程序的汇编任务。
每一遍扫描都
在遇到伪指令 END 时结束。
22、指出下列指令源操作数的寻址方式:
MOV AX,ARRAY[SI] 变址寻址
MOV AX,ES:[BX] 寄存器间接寻址
MOV AX,[200H] 直接寻址
MOV AX,[BX+DI] 基址变址寻址
MOV AX,BX 寄存器寻址
MOV AX,1200H 立即寻址
MOV AX,20[BX+SI] 相对基址变址寻址
MOV AX,[DI+20] 变址寻址
23、现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21023H)=65H,下列指令执行后填入AX寄存器的内容:
(1)MOV AX,1200H;(AX)= 1200H
(2)MOV AX,BX;(AX)= 0100H
(3)MOV AX,[1200H];(AX)= 4C2AH
(4)MOV AX,[BX];(AX)= 3412H
(5)MOV AX,1100[BX];(AX)= 4C2AH
(6)MOV AX,[BX][SI];(AX)= 7856H
(7)MOV AX,1100[BX][SI];(AX)= 65B7H
24、对于乘法、除法指令,结果存放在 DX或 AX 中,而其源操作数可以用除立即寻址以外的任一种寻址方式。
25、当指令SUB AX,BX执行后,ZF=1,说明AX和BX中的内容相等;OF=1,说明AX和BX中的数据符号不同。
26、指令SAR可用来有符号数除以2,而指令SHR则可用来无符号数除以2。
27、对于指令XCHG BX,[BP+SI],如果指令执行前,(BX)=6F30H,(BP)=0200H,(SI)=0064H,(SS)=2F00H,(2F246H)=4154H,则执行指令后:(BX)= 4154H ,(2F246H)= 6F30H 。
(BL)=22H,则执行指令MUL BL后,(AX)= ,OF= ,CF= 。
28、令(AL)=11H,
29、设(SS)=0FFA0H,(SP)=00B0H,(AX)=8057H,(BX)=0F79H,执行指令“PUSH AX”后,(SP)= 00AEH;再执行指令:
PUSH BX
POP AX
后,(SP)= 00AEH,(AX)= 0F79H,(BX)= 0F79H。
二、选择题
1、控制器的功能是 C 。
A)产生时序信号 B)从主存取出指令并完成指令操作码译码
C)从主存取出指令、分析指令并产生有关的操作控制信号
2、运算器的主要功能是 C 。
A)算术运算 B)逻辑运算
C)算术运算与逻辑运算 D)函数运算
3、在一般微处理器中, A 包含在CPU中。
A)算术逻辑单元 B)主内存
C)输入/输出设备 D)磁盘驱动器
4、8086/8088的状态标志有 D 个。
A)3 B)4
C)5 D)6
5、8086/8088的控制标志有 C 个。
A)1 B)2
C)3 D)4
6、8086/8088可用于间接寻址的寄存器有 B 个。
A)2 B)4
C)6 D)8
7、计算机的外部设备是指 B 。
A)软盘、硬盘驱动器 B)输入输出设备
C)电源及机箱 D)RAM及ROM
8、堆栈的工作方式是 A 。
A)先进后出 B)后进后出
C)先进先出
9、寄存器间接寻址方式中,操作数在 C 中。
A)通用寄存器 B)堆栈
C)主存单元 D)段寄存器
10、直接、间接、立即三种寻址方式指令的执行速度,由快至慢的排序为 C 。
A)直接、立即、间接 B)直接、间接、立即
C)立即、直接、间接 D)不一定
11、MOV AX,ES:[BX][SI]的源操作数的物理地址是 B 。
A)16d×(DS)+(BX)+(SI) B)16d×(ES)+(BX)+(SI)
C)16d×(SS)+(BX)+(SI) D)16d×(CS)+(BX)+(SI)
12、逻辑移位指令SHL用于 C ;而算术移位指令SAR用于 B 。
A)带符号数乘以2 B)带符号数除以2
C)无符号数乘以2 D)无符号数除以2
13、假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执行指令PUSH AX后,存放数据21H 的物理地址是 B 。
A)20102H B)20101H
C)200FEH D)200FFH
14、设(AL)=-68,(BL)=86,执行SUB AL,BL指令后,正确的结果是 A 。
A)SF=1 B)ZF=0
C)CF=1 D)OF=1
15、将寄存器AX的内容求反的正确操作是 C 。
A)NEG AX B)XOR AX,0FFFFH
C)NOT AX D)CMP AX,AX
16、使ZF=1,而AX的内容又不变的正确操作是 D 。
A)AND AX,0 B)XOR AX,AX
C)SUB AX,AX D)CMP AX,AX
17.如果SS=600H,则说明堆栈段物理地址起始于 C
A.60H
B.600H
C.6000H
D.60000H
三、分析题
1. 指出下列指令的功能。
(1) MOV AX,DISP[SI] ;把内存单元中的数取出传送给AX
(2) LEA DX,BUF ;把BUF单元的有效地址装入DX
(3) PUSH BX ;把BX寄存器中的内容压入堆栈
(4) JNC NEXT ;当CF=O,则转移至标号为NEXT的语句
2. 指出下列指令的错误。
(1) MOV [BX],[DI] ;两个操作数不能同时在存储器中
(2) MOV DS,100H ;立即数不能传送给段寄存器
(3) RLC AX,4 ;操作码错误(没有此指令)
(4) CMP BYTE PTR[BX],AB ;不能对两个存储器中的操作数进行比较
(5) MOV AX,[BX][BP] ;基址变址寻址不能同时用基址寄存器
(6) ADD 15H,BX ;源操作数不能为立即数
(7) MOV CS,AX ;不允许在指令中修改CS中的值
(8) MOV AX,[SI]{DI} ; DI的括号不对
3. 指出下列指令中源操作数分别采用的是哪种寻址方式。
(1) MOV DAT,64H ;立即寻址
(2) ADD AL,DAT[BX][SI] ;相对基址变址寻址
(3) MUL [BX] ;寄存器间接寻址
(4) MOV BX,100H ;立即寻址
(5) MOV AX,DAT[BX][DI] ;相对基址变址寻址
(6) MOV SW ;
(7) ADD AX,BX ;寄存器寻址
(8) MOV BX,[100] ;直接寻址
4. 已知DS=091DH,()=1E4AH,BP=0024H,AX=1234H,BX=0024H,CX=0078H,SI=0012H,DI=0032H,(09226H)=0024H,(09228)H=1E40H,(1E4F6H)=091DH,试写出下列程序段执行后有关寄存器和存储单元的结果。
MOV CL,20H[BX][SI]
MOV [BP][DI],CX
LEA BX,20H[BX],[SI]
MOV AX,2[BX]
MOV [SI],BX
AX= 1E4OH BX= 0056H CX= 0024H (1E4F6H)= 091DH (091E2H)=0056H
6.若DATA1与DATA2都是内存单元的地址,请指出下列程序段的功能:
MOV AL,0
LEA SI,DATA1
LEA BX,DATA2
MOV CX,64H
NEXT: MOV AL,[SI]
MOV [BX],AL
INC SI
INC BX
LOOP NEXT
HLT
(把DATA1单元开始的数(100个)传至DATA2开始的单元)
四﹑程序设计题
1. 已知数据段变量datax、datay、dataz定义如下:
datax dw 5678h,89abh
datay dw 9ef0h,1234h
dataz dw 2 dup (?)
编写一个程序段,实现将datax和datay中双字数据相加,并存入dataz单元。
程序参考如下:
add ax,datay
mov da,datax+2
adc dx,datay+2
mov dataz,ax
mov dataz+2,dx
2.编写一程序段,计算数组ARY各元素的累加和,并存入SUM单元中(数据段如下),设累加和不超过8位二进制数。
DATA SEGMENT
ARY DB 5,12,3,6,7,23,0,50,3,1
SUM DB?
DATA ENDS
程序参考如下:
MOV SI,0FFSET ARY
MOV AL,0
MOV CX,10
LOP:ADD AL,[SI]
INC SI
MOV SUM,AL
3.有一带符号8位数X存于DAT单元,编程判断该数,若X小于0则将0FFH送MARK单元;若X等于0的则将MARK+1单元置0FFH;若X大于0则置MARK+2单元为0FFH。
程序参考如下:MOV AL,DAT
AND AL,AL
JS LP1
JZ LP2
MOV MARK十2,OFFH
JMP DONE
LP1:MOV MARK,OFFH
JMP DONE
LP2:MOV MARK十1,OFFH
DONE: HLT
4. 试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为奇数,则将进位位置1,否则进位位清0。
DATA SEGMENT
DA1 DW XXXX
DATA ENDS
程序参考如下:CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA SI,DA1
XOR BL,BL
AGAIN: MOV AL,[SI] HL AL,1
JC NEXT
INC BL
NEXT:INC SI
LOOP AGAIN TEST BL,01H JNE L1
CLC
JMP DONE
L1: STC
DONE: MOV AH,4CH INT 21H
CODE ENDS
END START。