汇编语言程序设计第四版第2章课后答案汇编.docx

上传人:b****5 文档编号:3038980 上传时间:2022-11-17 格式:DOCX 页数:20 大小:40.75KB
下载 相关 举报
汇编语言程序设计第四版第2章课后答案汇编.docx_第1页
第1页 / 共20页
汇编语言程序设计第四版第2章课后答案汇编.docx_第2页
第2页 / 共20页
汇编语言程序设计第四版第2章课后答案汇编.docx_第3页
第3页 / 共20页
汇编语言程序设计第四版第2章课后答案汇编.docx_第4页
第4页 / 共20页
汇编语言程序设计第四版第2章课后答案汇编.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

汇编语言程序设计第四版第2章课后答案汇编.docx

《汇编语言程序设计第四版第2章课后答案汇编.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计第四版第2章课后答案汇编.docx(20页珍藏版)》请在冰豆网上搜索。

汇编语言程序设计第四版第2章课后答案汇编.docx

汇编语言程序设计第四版第2章课后答案汇编

汇编语言程序设计第四版

【课后习题答案】--囮裑為檤

第2章8086的指令系统

〔习题2.1〕已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12345678H,[21200H]~[21203H]依次存放2A4CB765H,说明下列每条指令执行完后AX寄存器的内容。

(1)movax,1200h

(2)movax,bx

(3)movax,[1200h]

(4)movax,[bx]

(5)movax,[bx+1100h]

(6)movax,[bx+si]

(7)movax,[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)movcx,dl

(2)movip,ax

(3)moves,1234h

(4)moves,ds

(5)moval,300

(6)mov[sp],ax

(7)movax,bx+di

(8)mov20h,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)的连续区域中。

请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。

          leabx,table

          moval,8

          xlat

〔解答〕

          leabx,table         ;获取table的首地址,BX=200H

          moval,8              ;传送欲转换的数字,AL=8

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

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

〔解答〕

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

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

          movax,8057h

          pushax

          movax,0f79h 

          pushax

          popbx

          pop[bx]

〔解答〕

          movax,8057h

          pushax

          movax,0f79h

          pushax

          popbx               ;bx=0f79h

          pop[bx]             ;DS:

[0f79h]=8057h

 

〔习题2.6〕给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态:

          moval,89h

          addal,al

          addal,9dh

          cmpal,0bch

          subal,al

          decal

          incal

〔解答〕

moval,89h          ;AL=89h  CF ZF SF OF PF

addal,al             ;AL=12h  1  0  0  1  1

;10001001

+10001001

100010010

 

addal,9dh            ;AL=0afh 0  0  1  0  1

;00010010

+10011101

 10101111

 

cmpal,0bch         ;AL=0afh 1  0  1  0  1

;10101111

-10111100

*01000011

 

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

 

decal                 ;AL=0ffh 0  0  1  0  1

;00000000

-00000001

 *11111111

 

incal                   ;AL=00h  0  1  0  0  1

;11111111

+00000001

*11111111

 

〔习题2.7〕设X、Y、Z均为双字数据,分别存放在地址为X、X+2;Y、Y+2;Z、Z+2的存储单元中,它们的运算结果存入W单元。

阅读如下程序段,给出运算公式。

          movax,X

          movdx,X+2

 

          addax,Y

          adcdx,Y+2

 

          addax,24

          adcdx,0

 

          subax,Z

          sbbdx,Z+2

 

          movW,ax

           movW+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)ADDDX,BX

(2)ADDAL,[BX+SI]

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

(4)ADDWORDPTR[0520H],3412H

(5)ADDAL,0A0H

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

          movax,X    ;ax=X

          imulY      ;DX.AX=X*Y

 

          movcx,ax   ;cx=X*Y的低16位

          moxbx,dx   ;bx=X*Y的高16位

 

          movax,Z     ;ax=Z

          cwd

          addcx,ax   ;cx=Z的低16位+X*Y的低16位

          adcbx,dx   ;bx=Z的高16位+X*Y的高16位+低位进位

 

          subcx,540  ;cx=Z的低16位+X*Y的低16位-540

          sbbbx,0      ;bx=Z的高16位+X*Y的高16位+低位进位-低位借位

 

          movax,V    ;ax=V

          cwd

          subax,cx    ;ax=V的低16位-(Z的低16位+X*Y的低16位-540)

         sbbdx,bx    ;dx=V的高16位-(Z的高16位+X*Y的高16位+低位进位-低位借位)-低位借位

 

         idivX;/X

〔解答〕

      [V-(X*Y+Z-540)]/X

      AX存商,DX存余数

〔习题2.10〕指出下列指令的错误:

(1)xchg[si],30h

(2)popcs

(3)sub[si],[di]

(4)pushah

(5)adcax,ds

(6)add[si],80h

(7)inal,3fch

(8)outdx,ah

〔解答〕

(1)xchg的操作数不能是立即数

(2)不应对CS直接赋值

(3)两个操作数不能都是存储单元

(4)堆栈的操作数不能是字节量

(5)adc的操作数不能是段寄存器

(6)没有确定是字节还是字操作

(7)in不支持超过FFH的直接寻址

(8)out只能以AL/AX为源操作数

〔习题2.11〕给出下列各条指令执行后的结果,以及状态标志CF、OF、SF、ZF、PF的状态。

          movax,1470h

          andax,ax

          orax,ax

          xorax,ax

          notax

          testax,0f0f0h

〔解答〕                                              

          movax,1470h         ;AX=1470HCF ZF SF OF PF

                                                   

          andax,ax               ;AX=1470H0  0  0  0  0

           ;0001010001110000

 

          orax,ax                 ;AX=1470H0  0  0  0  0

          xorax,ax               ;AX=0000H0  1  0  0  1

          notax                    ;AX=FFFFH0  1  0  0  1

          testax,0f0f0h       

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1