习题1——指令系统 参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《汇编语言》习题1——指令系统参考答案
习题1-1 在8086CPU中,如果SS的内容设置为1A4BH,堆栈的长度为100H字节,问SP寄存器的初始化值为多少?SP初始指向哪个主存物理地址?
答:SP寄存器的初始化值为:100H
SP初始指向的主存物理地址是:1A5B0H
习题1-2 分别说明下述8086指令中的源操作数和目的操作数的寻址方式。
指令目的操作数源操作数
(1) MOV ES, AX 寄存器寻址寄存器寻址
(2) ADD DS:[12H],AL 直接寻址寄存器寻址
(3) SUB BX,1200H 寄存器寻址立即寻址
(4) SHR AX,1 寄存器寻址立即寻址
(5) AND -28H[BP][DI], AX 基址变址寻址寄存器寻址
(6) MOV CX,LAB1[BX] 寄存器寻址基址/变址寻址
(7) SBB AX, [BX] 寄存器寻址寄存器间接寻址
(8) OR DX,-360H[SI] 寄存器寻址基址/变址寻址
(9) ADC VAR1,CX 直接寻址寄存器寻址
(10) XOR [DI],AX 寄存器间接寻址寄存器寻址
习题1-3分别说明下述指令语句的语法正确与否,如果有错,说明其错误。
指令正误
(1)MOV DS, 1234H 错误,立即数不能直接传送到段寄存器中
(2)ADD AH,AL 正确
(3)SUB CS,AX 错误,不能对CS直接操作
(4)MOV BX,[BX][SI] 正确
(5)ADC VAR1,[BP][DI] 错误,两个操作数不能同时都在存储器中
(6) SBB [BX][BP],AX 错误, 基址变址寻址方式中不能两个寄存器都是基址寄存器
(7)PUSH 5678H 错误,立即数不能作为源操作数直接压入堆栈
(8)SHL [BP][SI],CL 错误,目的操作数没有明确指明是字还是字节
(9)ROR AX,2 错误,移位次数大于1时,需将其提前存入CL中
(10)NEG AX,BX 错误,操作数个数错误
(11)LEA CS,AX 错误,目的操作数只能是16位通用寄存器
(12)MOV AL,BX 错误, 操作数位数不一致
(13)ADD DS:200H,AX 正确
(14)AND [BX][BP],AH 错误, 基址变址寻址方式中不能两个寄存器都
是基址寄存器
(15)OR BH,-16H[BP] 正确
(16)CLC AX 错误,操作数个数错误
(17)MUL AX,BX 错误,操作数个数错误
(18)DIV 12H 错误,源操作数不能是立即数
习题1-4 在8086中,如果(DS)=1A26H,(SS)=20B0H,(BX)=1200H,(SI)=0034H, (BP)=5700H(1B484H)=1234H,(26200H)=5678H,给出下面各指令或指令组执行后相应寄存器/存储单元的结果。
(1) MOV AL,BH
答:(AL) = 12H
(2) MOV CX,-10H[BX][SI]
MOV DX, [BP]
答:
DS:1A260H
BX:1200H SS:20B00H
SI:0034H BP:5700H
-10H ---------------------
--------------------- 26200H
1B484H
所以,(CX)= 1234H,(DX)= 5678H
(3)LEA SI,34H[BX]
MOV [SI],8765H
答:1200H+34H=1234H, (SI)=1234H
(DS)+(SI)=1A260H+1234H=1B494H
所以,(SI)=1234H, (1B494H)=8765H
习题1-5 在8086中,假设(SS)=1F00H,(SP)=1120H,(BX)=11ABH。在执行下面指令后,堆栈中栈顶的4个字节内容分别是什么?栈顶单元的偏移量是多少?PUSH BX
ADD BX,1200H
PUSH BX
答:(1)栈顶的4个字节内容是:11AB23ABH
(2)栈顶单元的偏移量是:111CH