版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 习题参考答案1分别指出下列指令中的源操作数和目的操作数的寻址方式。答: 源操作数 目的操作数(1)mov ax,si 寄存器寻址 寄存器间接寻址(2)mov di,100 寄存器寻址 立即寻址(3)mov bx,al 寄存器间接 寄存器(4)mov bxsi,cx 基址+变址 寄存器(5)add dx,106hsi 寄存器 变址(6)push ax 寄存器(7)add ds:bp,ax 带段超越寄存器间接寻址 寄存器(8)or ax,dx 寄存器 寄存器2设寄存器(ds)=2000h,(ss)=1500h,(es)=3200h,(si)=0a0h,(bx)=100h,(bp)=10h,
2、数据段中变量val的偏移地址为50h。试指出下列各条指令中源操作数的寻址方式是什么?对于存储器操作数,其物理地址是多少?答: 操作数的寻址方式 存储器操作数pa(1)mov ax,100h 直接寻址 20100h(2)mov cx,es:bx 带段超越的寄存器间接寻址 32100h(3)mov dx,bxsi 基址+变址寻址 200f0h(4)mov ax,valsi 变址寻址 200f0h(5)mov bx,1234bx 基址寻址 205d2h(6)mov ax,bp 寄存器间接寻址 15010h 3. 判断下列指令有误错误,若有,则改之。答:(1)push cl 有错,对堆栈操作数总是16
3、位的。改为:phsh cx(2)adcax,0abh 无,只是cf的值是不确定的(0或1)(3)out 3ebh, ax 有,输出设备的端口地址若超过8位,应使用dx间接寻址。改为:mov dx, 3ebhout dx,ax(4)mul al, cl 有错。乘法指令中有ax或al寄存器是隐含的。改为:mul cl(5)mul ax, 25 有错。乘法指令中不能用立即数。改为:mov bx,25mul bx(6)rol dx,5 有错。移位的次数由cl寄存器控制。改为:mov cl,5rol dx,cl (7)call far sum 无错。(8)pop fr 有错。寄存器fr是不能单独操作的,
4、改为:popf(9)mov 234h, bx 有错。立即数不能作为目的操作数。改为:mov bx, 234h(10)inc si 有错。该错误主要是针对汇编程序的。由于翻译这条指令时,不知是8位的还是16位的目标码,故要加入宏汇编的综合运算符ptr。改为:inc byte ptr si(11)add bx,456h有错。改为:add word ptr bx, 456h(12)int o有错。这条指令是没有的(13)div ax ,bx 有错。除法指令中,ax或dx.ax作为被除数是隐含的。改为:div bx(14)dec bp 有错。与题(10)有类似的错误。改为: dec word ptr
5、bp(15)xlat bx xlat的操作数是隐含的,它是一条复合指令,在执行该指令之前,将bx指向表的手地址,al中存入被转换的码,然后执行该指令。(16)add cx+1 有错。操作数cx+1是完全错误的。改为: inc cx(17)daa ax 有错。调整指令是专门对al寄存器的内容进行调整的,故指令中操作数是隐含的。改为:daa4选择题(1)带符号数-86所表示的二进制数值是(a)a. 10101010b b. 01100101bc. 10011101b d. 11001011b(2)执行mov dl, 2ah 和shr dl,1两条指令后,dl寄存器与cf标志分别为(d)a. dl=
6、10110110 cf=1 b. dl=00110101 cf=0c. dl=00110100 cf=1 d. dl=00010101 cf=1(3)可将ax寄存器中d0, d5, d8和d11位求反,其余位不变的指令是(c)a. and ax,921h b. or ax,910hc. xor ax,0921h d. xor ax,0110h (4)某存储单元物理地址为3b4fh,其段地址和偏移地址可选为(b)a. 3b4fh和104eh b. 3b40h和00feh c. 2a00h和114feh d. 3b4fh和0h (5)两个8位二进制数00110101及10110110做“异或”操作
7、后,寄存器fr的下面3个状态标志分别是(c)a. pf=1 sf=1 zf=0 b. pf=0 sf=1 zf=1c. pf=0 sf=1 zf=0 d. pf=1 sf=1 zf=1(6)当执行存储器写指令时,如mov si,ax, 则cpu的外部管脚状态是(d)a. wr=1 rd=1 mio=0 b. wr=0 rd=1 mio=1c. wr=1 rd=0 mio=1 d. wr=0 rd=1 mio=15:已知(ds)=2000h,(bx)=100h,(si)=02h,从物理地址20100h单元开始,依次存放数据12h,34h,56h,78h,而从物理地址21200h单元开始,依次存放
8、数据2ah,,4ch,8bh,98h。试说明下列各条指令单独执行后ax寄存器的内容。答:(1)mov ax,3600h 3600h (2)mov ax,1200h 4c2ah (3)mov ax,bx 0100h(4)mov ax,bx 3412h (5)mov ax,1100hbx 4c2ah (6)mov ax,bxsi 7856h 6.设堆栈指针sp的初值为2400h,(ax)=4000h,(bx)=3600h,问:(1)执行指令“push ax”后,sp=?(2)再执行“push ax”和”pop ax”后,(sp)=? (ax)=? (bx)=? 试画出堆栈变化示意图。答:(1)执行
9、指令“push ax”后,则将ax的内容推入堆栈,sp先减2(sp)=23feh),以指示栈顶位置,al的内容推入23feh,而ah的内容推入23ffh(2)再执行“push ax”,sp先减2(sp)=23fch),bl的内容推入23fch,而bh的内容推入23fdh(3)再执行“pop ax”,从sp指针指示的单元(23fch)中弹出数据,存入ax中,sp加2(sp)=23feh),指示栈顶位置。故3条指令执行完毕,(sp)=23feh (ax)=3600h (bx)=3600h7. 指出下面指令序列 的执行结果。答:(1)mov dx, 2000hmov bx, 1000hxhgh bx
10、, dx(bx)=2000h, (dx)=1000h(2)mov ax,1234hpush axpop bx(ax)=1234h, (bx)=1234h (3)lea dx, 2000hmov bx, dx (bx)=2000h (4)mov al,08add al,08aaa(ax)=0106(5)mov al,48h add al,39hdaa(al)=87h (6)and al,almov al,80adc al,al(al)=0a0h(7)mov dx,offfhneg dx(dx)=0001h(8)mov bl,ob8hror bl,1(bl)=5ch, cf=0 (9)sub ax,axand dx,ax(dx)=0 (10)mov cl,3 mov ah,42h shr ah,xl(ah)=08h,cf=0(11)mov ax, 34ebhmov cl,5fhdiv cl(ax)=8fh (12)m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论