好文档 - 专业文书写作范文服务资料分享网站

新版汇编语言程序设计【课后习题答案】 钱晓捷 主编 电子工业出版社

天下 分享 时间: 加入收藏 我要投稿 点赞

新版汇编语言程序设计【课后习题答案】 钱晓捷 主编 电子工业出版社 第2章 8086的指令系统(全)

第2章 8086的指令系统

〔习题2.1〕已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12 34 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。 (1) mov ax,1200h (2) mov ax,bx

(3) mov ax,[1200h] (4) mov ax,[bx]

(5) mov ax,[bx+1100h] (6) mov ax,[bx+si]

(7) mov ax,[bx][si+1100h] 〔解答〕

(1)AX=1200H (2)AX=0100H

(3)AX=4C2AH ;偏移地址=bx=0100h (4)AX=3412H ;偏移地址=bx=0100h (5)AX=4C2AH ;偏移地址=bx+1100h=1200h

(6)AX=7856H ;偏移地址=bx+si=0100h+0002h=0102h

(7)AX=65B7H ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h

〔习题2.2〕指出下列指令的错误 (1) mov cx,dl (2) mov ip,ax (3) mov es,1234h (4) mov es,ds (5) mov al,300 (6) mov [sp],ax (7) mov ax,bx+di (8) mov 20h,ah 〔解答〕

(1)两操作数类型不匹配

(2)IP指令指针禁止用户访问 (3)立即数不允许传给段寄存器 (4)段寄存器之间不允许传送 (5)两操作数类型不匹配 (6)目的操作数应为[ SI ] (7)源操作数应为 [BX+DI] (8)立即数不能作目的操作数

〔习题2.3〕已知数字0 ~ 9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、

11H、12H、14H,它存在于以table为首地址(设为200H)的连续区域中。请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。 lea bx,table mov al,8 xlat 〔解答〕

lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8

xlat ;转换为格雷码,AL=12H P35

〔习题2.4〕什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令? 〔解答〕

堆栈是一种按“先进后出”原则存取数据的存储区域,位于堆栈段中,使用SS段寄存器记录其段地址;它的工作原则是先进后出;堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。

〔习题2.5〕已知SS = 2200H、SP = 00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化?

mov ax,8057h push ax

mov ax,0f79h push ax pop bx pop [bx] 〔解答〕

mov ax,8057h push ax

mov ax,0f79h push ax

pop bx ;bx=0f79h

pop [bx] ;DS:[0f79h]=8057h

〔习题2.6〕给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态: mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al 〔解答〕

mov al,89h ; AL=89h CF ZF SF OF PF

add al,al ; AL=12h 1 0 0 1 1 ; 1000 1001 +1000 1001 10001 0010

add al,9dh ; AL=0afh 0 0 1 0 1 ; 0001 0010 + 1001 1101 1010 1111

cmp al,0bch ; AL=0afh 1 0 1 0 1 ; 1010 1111 -1011 1100 * 0100 0011

sub al,al ; AL=00h 0 1 0 0 1

dec al ; AL=0ffh 0 0 1 0 1 ; 0000 0000 - 0000 0001 *1111 1111 inc al ; AL=00h 0 1 0 0 1 ;1111 1111 +0000 0001 *1111 1111

〔习题2.7〕设X、Y、Z均为双字数据,分别存放在地址为X、X+2;Y、Y+2;Z、Z+2的存储单元中,它们的运算结果存入W单元。阅读如下程序段,给出运算公式。 mov ax,X mov dx,X+2

add ax,Y adc dx,Y+2

add ax,24 adc dx,0

sub ax,Z sbb dx,Z+2

mov W,ax mov W+2,dx 〔解答〕

W=X+Y+24-Z

〔习题2.8〕请分别用一条汇编语言指令完成如下功能:

(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。

(2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。 (3)用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中。

(4)用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中。

(5)把数0A0H与AL寄存器的内容相加,并把结果送回AL中。 〔解答〕

(1)ADD DX,BX

(2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX

(4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H

〔习题2.9〕设X、Y、Z、V均为16位带符号数,分别装在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。 mov ax,X ;ax=X

imul Y ;DX.AX=X*Y

mov cx,ax mox bx,dx

mov ax,Z cwd

add cx,ax adc bx,dx

sub cx,540 sbb bx,0 低位借位

mov ax,V cwd

sub ax,cx 位-540)

sbb dx,bx 低位进位-低位借位)-低位借位

idiv X ;/X 〔解答〕

[V-(X*Y+Z-540)]/X AX存商,DX存余数

〔习题2.10〕指出下列指令的错误: (1) xchg [si],30h (2) pop cs

(3) sub [si],[di] (4) push ah (5) adc ax,ds (6) add [si],80h (7) in al,3fch (8) out dx,ah 〔解答〕

的低16位 的高16位 ;ax=Z 的低16位+X*Y的低16位

;bx=Z的高16位+X*Y的高16位+低位进位 的低16位+X*Y的低16位-540 ;bx=Z的高16位+X*Y的高16位+低位进位- ;ax=V ;ax=V的低16位-(Z的低16位+X*Y的低16;dx=V的高16位-(Z的高16位+X*Y的高16位+ ;cx=X*Y ;bx=X*Y ;cx=Z ;cx=Z

新版汇编语言程序设计【课后习题答案】 钱晓捷 主编 电子工业出版社

新版汇编语言程序设计【课后习题答案】钱晓捷主编电子工业出版社第2章8086的指令系统(全)第2章8086的指令系统〔习题2.1〕已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12345678H,[21200H]~[21203H]依次存放2A4CB765H,说明下列每条指令
推荐度:
点击下载文档文档为doc格式
644sy9ci8v507xn0uyq64mg6283nbb00pyl
领取福利

微信扫码领取福利

微信扫码分享