欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:63124948       资源大小:154.59KB        全文页数:41页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    新版汇编编语言程程序设计计【课后后习题答答案】 钱晓捷捷 主编编 电子子工业出出版社 第2章章 80086的的指令系系统(全全)第2章 80886的指指令系统统习题22.1已知DDS220000H、BBX001000H、SSI000022H,存存储单元元2001000H2001033H依依次存放放12 34 56 78HH,2212000H2212003H依次存存放2AA 4CC B77 655H,说说明下列列每条指指令执行行完后AAX寄存存器的内内容。(1) movv axx,12200hh(2) movv axx,bxx(3) movv axx,112000h(4) movv axx,bbx(5) movv axx,bbx+111000h(6) movv axx,bbx+ssi(7) movv axx,bbxsi+11000h解答(1)AAX112000H(2)AAX001000H(3)AAX44C2AAH    ;偏偏移地址址=bxx=01100hh(4)AAX334122H     ;偏移地地址=bbx=001000h(5)AAX44C2AAH    ;偏偏移地址址=bxx+11100hh=12200hh(6)AAX778566H     ;偏移地地址=bbx+ssi=001000h+000022h=001022h(7)AAX665B77H     ;偏移地地址=bbx+ssi+111000h=001000h+000022h+111000h=112022h 习题题2.22指出出下列指指令的错错误(1) movv cxx,dll(2) movv ipp,axx(3) movv ess,12234hh(4) movv ess,dss(5) movv all,3000(6) movv ssp,ax(7) movv axx,bxx+dii(8) movv 200h,aah解答(1)两两操作数数类型不不匹配(2)IIP指令令指针禁禁止用户户访问(3)立立即数不不允许传传给段寄寄存器(4)段段寄存器器之间不不允许传传送(5)两两操作数数类型不不匹配(6)目目的操作作数应为为 SSI (7)源源操作数数应为 BXX+DII  (8)立立即数不不能作目目的操作作数习题22.3已知数数字0 99对应的的格雷码码依次为为:188H、334H、005H、006H、009H、00AH、00CH、111H、112H、114H,它它存在于于以taablee为首地地址(设设为2000H)的的连续区区域中。请请为如下下程序段段的每条条指令加加上注释释,说明明每条指指令的功功能和执执行结果果。               leea bbx,ttablle              moov aal,88              xllat解答              leea bbx,ttablle             ;获取ttablle的首首地址,BBX2200HH              moov aal,88                    ;传送送欲转换换的数字字,ALL8              xllat                              ;转转换为格格雷码,AAL112H   P335习题22.4什么是是堆栈,它它的工作作原则是是什么,它它的基本本操作有有哪两个个,对应应哪两种种指令? 解答堆栈是一一种按“先先进后出出”原则则存取数数据的存存储区域域,位于于堆栈段段中,使使用SSS段寄存存器记录录其段地地址;它它的工作作原则是是先进后后出;堆堆栈的两两种基本本操作是是压栈和和出栈,对对应的指指令是PPUSHH和POOP。习题22.5已知SSS = 22200HH、SPP = 00BB0H,画画图说明明执行下下面指令令序列时时,堆栈栈区和SSP的内内容如何何变化?               moov aax,880577h              puush ax              moov aax,00f799h                puush ax              poop bbx              poop bx解答              moov aax,880577h              puush ax              moov aax,00f799h              puush ax              poop bbx                     ;bx=0f779h              poop bx                  ;DS:0ff79hh=880577h 习题题2.66给出出下列各各条指令令执行后后AL值值,以及及CF、ZZF、SSF、OOF和PPF的状状态:              moov aal,889h              addd aal,aal              addd aal,99dh              cmmp aal,00bchh              suub aal,aal              deec aal              innc aal解答mov al,89hh              ; ALL=899h    CFF  ZZF  SF   OFF  PPFadd al,al                   ; ALL=122h    1    00   0    1    11; 10000 10001+10000 110011 100001 000100  add al,9dhh                 ; ALL=0aafh   0    00   1    0    11; 00001 00110+ 10001 11001  10010 11111  cmp al,0bcch             ; ALL=0aafh   1    00   1    0    11; 10010 11111-10111 111000* 01100 00111 sub al,al                     ALL=000h    0    11   0    0    11 dec al                         ; AAL=00ffhh  00   0    1    00   1; 00000 00000- 00000 00001 *11111 11111 inc al                           ; AL=00hh   0    1    00   0    1;11111 111111+00000 000011*11111 111111 习题题2.77设XX、Y、ZZ均为双双字数据据,分别别存放在在地址为为X、XX+2;Y、YY+2;Z、ZZ+2的的存储单单元中,它它们的运运算结果果存入WW单元。阅阅读如下下程序段段,给出出运算公公式。               moov aax,XX              moov ddx,XX+2               addd aax,YY              addc ddx,YY+2               addd aax,224              addc ddx,00               suub aax,ZZ              sbbb ddx,ZZ+2               moov WW,axx              moov WW+2,dx 解答          WX+YY+244-Z习题22.8请分别别用一条条汇编语语言指令令完成如如下功能能: (1)把把BX寄寄存器和和DX寄寄存器的的内容相相加,结结果存入入DX寄寄存器。(2)用用寄存器器BX和和SI的的基址变变址寻址址方式把把存储器器的一个个字节与与AL寄寄存器的的内容相相加,并并把结果果送到AAL中。(3)用用BX和和位移量量0B22H的寄寄存器相相对寻址址方式把把存储器器中的一一个字和和CX寄寄存器的的内容相相加,并并把结果果送回存存储器中中。(4)用用位移量量为05520HH的直接接寻址方方式把存存储器中中的一个个字与数数34112H相相加,并并把结果果送回该该存储单单元中。(5)把把数0AA0H与与AL寄寄存器的的内容相相加,并并把结果果送回AAL中。解答(1)AADD DX,BX(2)AADD AL,BXX+SII(3)AADD BXX+0BB2H,CXX(4)AADD WORRD PPTR 05520HH,334122H(5)AADD AL,0A00H习题22.9设X、YY、Z、VV均为116位带带符号数数,分别别装在XX、Y、ZZ、V存存储单元元中,阅阅读如下下程序段段,得出出它的运运算公式式,并说说明运算算结果存存于何处处。               moov aax,XX      ;ax=X              immul Y         ;DX.AX=X*YY               moov ccx,aax     ;cx=X*YY的低116位              moox bbx,ddx     ;bx=X*YY的高116位               moov aax,ZZ        axx=Z              cwwd              addd ccx,aax     ;cx=Z的低低16位位+X*Y的低低16位位              addc bbx,ddx     bx=Z的高高16位位+X*Y的高高16位位+低位位进位               suub ccx,5540    ;cx=Z的低低16位位+X*Y的低低16位位-5440              sbbb bbx,00        bbx=ZZ的高116位+X*YY的高116位+低位进进位-低低位借位位               moov aax,VV       ;axx=V              cwwd              suub aax,ccx       axx=V的的低166位-(ZZ的低116位+X*YY的低116位-5400)            sbbb dxx,bxx      dx=V的高高16位位-(ZZ的高116位+X*YY的高116位+低位进进位-低低位借位位)-低低位借位位             idiiv XX ;/X解答        V-(X*Y+ZZ-5440)/X        AX存存商,DDX存余余数 习题22.100指出出下列指指令的错错误: (1) xchhg si,300h(2) popp css(3) subb ssi,dii(4) pussh aah(5) adcc axx,dss(6) addd ssi,80hh(7) in al,3fcch(8) outt dxx,ahh解答(1)xxchgg的操作作数不能能是立即即数(2)不不应对CCS直接接赋值(3)两两个操作作数不能能都是存存储单元元(4)堆堆栈的操操作数不不能是字字节量(5)aadc的的操作数数不能是是段寄存存器(6)没没有确定定是字节节还是字字操作(7)iin不支支持超过过FFHH的直接接寻址(8)oout只只能以AAL/AAX为源源操作数数习题22.111给出出下列各各条指令令执行后后的结果果,以及及状态标标志CFF、OFF、SFF、ZFF、PFF的状态态。               moov aax,114700h              annd aax,aax              orr axx,axx              xoor aax,aax              noot aax              teest ax,0f00f0hh解答                                                                            moov aax,114700h             ;AX14770H CF   ZFF  SSF  OF   PFF                                                                                  annd aax,aax                      ;AXX14470HH 0    00   0    0    00               ;00001 001000 01111 00000               orr axx,axx                         ;AAX114700H 00   0    0    00   0              xoor aax,aax                      ;AXX00000HH 0    11   0    0    11              noot aax                            ;AXFFFFFH 0    1    00   0    1              teest ax,0f00f0hh          ;AXXFFFFFHH 0    00   1    0    11注意:MMOV和和NOTT指令不不影响标标志位;其他逻逻辑指令令使CFFOFF0,根根据结果果影响其其他标志志位。习题22.122假设设例题22.322的程序序段中,AAX = 088H,BBX = 100H,请请说明每每条指令令执行后后的结果果和各个个标志位位的状态态。 解答              指令令                   执行行结果                            CCF OOF SSF ZZF PPF              moov ssi,aax     ; SII=AXX=00008HH                     -      -        -   -      -              shhl ssi,11         ; SII=2*AX=00110H                  0     00    0      0     00              addd ssi,aax      ; SSI=33*AXX=00018HH                 0     0     00    0      1               moov ddx,bbx     DX=BX=00110H                   0     0     00    0     1               moov ccl,003h    CL=03HH                                 0      0     00     0     1               shhl ddx,ccl        ; DXX=8*BX=00880H             0     uu     0     0    00               suub ddx,bbx     ; DXX=7*BX=00770H               0      0    00    0      0              addd ddx,ssi        DDX=77*BXX+3*AX=00888H   0     0     00    0     1注意:逻逻辑左移移N次相相当于无无符号整整数乘以以2的NN次方,逻逻辑右移移N次相相当于无无符号整整数除以以2的NN次方。移移位指令令根据移移位的数数据设置置CF,根根据移位位后的结结果影响响SF,ZZF,PPF。在在进行一一位移位位时,根根据最高高符号位位是否改改变设置置OF,如如改变则则OF1。另另外,程程序注释释用“uu”表示示标志无无定义(不不确定),“-”表示示无影响响。习题22.133编写写程序段段完成如如下要求求: (1)用用位操作作指令实实现ALL(无符符号数)乘乘以100(2)用用逻辑运运算指令令实现数数字0 99的ASSCIII码与非非压缩BBCD码码的互相相转换(3)把把DX.AX中中的双字字右移44位解答(1)  不考考虑进位位                       movv bll,all              moov ccl,33              shhl aal,ccl                    ;*8              addd aal,bbl                 ;shll bll,1                 addd aal,bbl              ;考考虑进位位              xoor aah,aah              moov bbx,aax              moov ccl,33              shhl aax,ccl              addd aax,bbx                 ;shll bxx,1              addd aax,bbx(2)数数字09的AASCIII码是是:300h339h          非压压缩BCCD码的的099是:000h09hh方法一:              annd aal,00fh                ;实现AASCIII到非非压缩BBCD码码的转换换              orr all,300h                 ;实现非非压缩BBCD码码到ASSCIII的转换换方法二:              xoor aal,330h                ;求反DD5D44位,其其他不变变              ;即即高4位位为3,则则变为00;高44位为00,则变变为3(3)    mmov cl,4agaiin:   shhr ddx,11                  ;实现逻逻辑右移移                                                     ;采采用“ssar dx,1”,则则实现算算术右移移                 rcrr axx,1                 decc cll               jnzz aggainn习题22.144已知知AL = FF7H(表表示有符符号数-9),分分别编写写用SAAR和IIDIVV指令实实现的除除以2的的程序段段,并说说明各自自执行后后,所得得的商是是什么? 解答(1)用用sarr编写              moov aal,00f7hh              ; -99送ALL 11111 10001              saar aal,11                  ; 结果果:ALL=11111 11000B=0FBBH  即-55(2)用用idiiv编写写              moov aal,00f7hh              ; -99送all              cbbw                         ; 字节节符号扩扩展位字字              moov bbl,22                  ; 注意意除数不不可为立立即数              iddiv bl                    ; 结果果:商为为al=fchh  (-4)                                          ; 余数:ah=ffhh (-1) 结论:符符号数的的除法用用idiiv 准准确。  习题题2.115已已知数据据段5000h 6000h处处存放了了一个字字符串,说说明下列列程序段段执行后后的结果果:              moov ssi,6600hh              moov ddi,6601hh              moov aax,dds              moov ees,aax              moov ccx,2256              sttd              reep mmovssb解答 习题题2.116说说明下列列程序段段的功能能              clld              moov aax,00feffh              moov ccx,55              moov bbx,330000h              moov ees,bbx              moov ddi,220000h              reep sstossw解答 将ess:dii (即即30000:220000h或3320000h)开始的的5个单单元的内内容置为为0feefh。习题22.177指令令指针IIP是通通用寄存存器还是是专用寄寄存器?有指令令能够直直接它赋赋值吗?哪类指指令的执执行会改改变它的的值? 解答指令指针针IP不不是通用用寄存器器,不可可直接赋赋值,属属于专用用寄存器器。有且且仅有循循环、转转移、子子程序调调用和返返回、中中断类等等指令可可以改变变它的值值。习题22.188控制制转移类类指令中中有哪三三种寻址址方式? 解答控制转移移类指令令的寻址址方式:相对寻寻址、直直接寻址址方式和和间接寻寻址方式式(又可可以分成成寄存器器和存储储器间接接寻址)。习题22.199什么么是短转转移shhortt juump、近近转移nnearr juump和和远转移移farr juump?什么是是段内转转移和段段间转移移?80086有有哪些指指令可以以实现段段间转移移? 解答短转移:指段内内12281127之之间的转转移,位位移量用用一个字字节表示示近转移:指段内内±322K之间间的转移移,位移移量用一一个字表表示远转移:指段间间1MBB范围的的转移段内转移移:指在在同一个个代码段段内的转转移,可可以是短短转移或或者近转转移段间转移移:指转转移到另另外一个个代码段段,就是是远转移移80866/80088CCPU的的JMPP、CAALL和和INTT n指指令可以以实现段段间转移移习题22.20080086的的条件转转移指令令的转移移范围有有多大?实际编编程时,你你如何处处理超出出范围的的条件转转移? 解答80866的条件件转移的的转移范范围:在在当前指指令地址址的 +1277-1128之之内。如条件转转移的转转移范围围超出此此范围,可可在此范范围内安安排一条条无条件件转移,再再转移到到范围外外的目标标地址。习题22.211假设设DS=20000H,BBX=112566H,SSI=5528FFH,位位移量TTABLLE=220A11H,2322F7HH=332800H,2644E5HH=224500H,试试问执行行下列段段内间接接寻址的的转移指指令后,转转移的有有效地址址是什么么? (1) JMPP BXX(2) JMPP TAABLEEBXX(3) JMPP BBXSI解答(1)转转移的有有效地址址EA= BXX=12256HH(2)转转移的有有效地址址EA= DDS:220A11H+112566H=2332F77=332800H(3)转转移的有有效地址址EA= DDS:112566H+5528FFH=2644E5HH=24450HH习题22.222判断断下列程程序段跳跳转的条条件               (11) xxor ax,1e11eh                             jee eqquall              (22)teest al,1000000001bb                           jjnz theere              (33)cmmp ccx,664h                           jjb ttherre解答(1)AAX11e1eeh(异异或后为为0)(2)AAL的DD0或DD7至少少有一位位为1(3)CCX(无无符号数数) 64hh习题22.233设置置CX = 00,则LLOOPP指令将将循环多多少次?例如:                  movv cxx,0delaay:    lloopp deelayy解答   2216次次。习题22.244假设设AX和和SI存存放的是是有符号号数,DDX和DDI存放放的是无无符号数数,请用用比较指指令和条条件转移移指令实实现以下下判断: (1)若若DX > DDI,转转到abbovee执行;(2)若若AX > SSI,转转到grreatter执执行;(3)若若CX = 00,转到到zerro执行行;(4)若若AXSI产产生溢出出,转到到oveerfllow执执行;(5)若若SIAX,转转到leess_eq执执行;(6)若若DIDX,转转到beeloww_eqq执行。解答(1)若若DX > DDI,转转到abbovee执行              cmmp ddx,ddi              jaa abbovee                  ;jnnbe aboove(2)若若AX > SSI,转转到grreatter执执行              cmmp aax,ssi              jgg grreatter                ;jnnle greeateer(3)若若CX = 00,转到到zerro执行行              cmmp ccx,00              jzz zeero                    ; jjcxzz zeero    (4)若若AXSI产产生溢出出,转到到oveerfllow执执行;              cmmp aax,ssi              joo ovverffloww(5)若若SIAX,转转到leess_eq执执行;              cmmp ssi,aax                 ; cmmp aax,ssi              jlle llesss_eqq              ; jgge llesss_eqq(6)若若DIDX,转转到beeloww_eqq执行。              cmmp ddi,ddx                 ; cmmp ddx,ddi              jbbe bbeloow_eeq             ; jaae bbeloow_eeq习题22.255有一一个首地地址为aarraay的220个字字的数组组,说明明下列程程序段的的功能。               moov ccx,220              moov aax,00              moov ssi,aaxsum_looop:   addd aax,aarraayssi              addd ssi,22              looop summ_looop              moov ttotaal,aax解答将首地址址为arrrayy得200个字的的数组求求和,并并将结果果存入 tottal 单元中中。习题22.266按照照下列要要求,编编写相应应的程序序段: (1)起起始地址址为sttrinng的主主存单元元中存放放有一个个字符串串(长度度大于66),把把该字符符串中的的第1个个和第66个字符符(字节节量)传传送给DDX寄存存器。(2)从从主存bbufffer开开始的44个字节节中保存存了4个个非压缩缩BCDD码,现现按低(高高)地址址对低(高高)位的的原则,将将它们合合并到DDX中。(3)编编写一个个程序段段,在DDX高44位全为为0时,使使AX = 00;否则则使AXX = -1。(4)有有两个664位数数值,按按“小端端方式”存存放在两两个缓冲冲区buuffeer1和和buffferr2中,编编写程序序段完成成buffferr1bbufffer22功能。(5)假假设从BB8000h : 0开开始存放放有1000个116位无无符号数数,编程程求它们们的和,并并把322位的和和保存在在DX.AX中中。(6)已已知字符符串sttrinng包含含有322KB内内容,将将其中的的$符号替替换成空空格。(7)有有一个1100个个字节元元素的数数组,其其首地址址为arrrayy,将每每个元素素减1(不不考虑溢溢出)存存于原处处。(8)统统计以 $ 结尾尾的字符符串srrtinng的字字符个数数。解答(1)解解答:              moov ssi,00              moov ddl,sstriingsi   ;第11个字符符送dll寄存器器:moov ddl,sstirrng0              moov ssi,55              moov ddh,sstriingsi   ;第66个字符符送dhh寄存器器:moov ddl,sstirrng5(2)解解答:              xoor ssi,ssi              ;sii清零              moov aal,bbufffersi   ;第一一字节              innc ssi              moov aah,bbufffersi   ;第二二字节              moov ccl,44              shhl aah,ccl                 ;BCDD码移到到高半字字节              orr all,ahh                  ;组合成成压缩BBCD码码              moov ddl,aal                         ;存入ddl寄.              innc ssi              moov aal,bbufffersi   ;第三三字节              innc ssi              moov aah,bbufffersi   ;第四四字节              moov ccl,44              shhl aah,ccl                ;BCDD码移到到高半字字节              orr all,ahh                 ;组合成成压缩BBCD码码              moov ddh,aal                ;存入ddh寄.(3)解解答:              teest dx,0f0000hh          ; teest dh,0f00h              jzz neext                    ; jnnz nnextt              moov aax,-1                 ; moov aax,00              jmmp aagaiinnextt:   movv axx,0                   ; movv axx,0ffffffhagaiin:       .(4)解解答:              moov aax, worrd pptr buffferr1      

    注意事项

    本文(新版汇编语言程序设计【课后习题答案】 钱晓捷 主编 电子工业出版社hbgj.docx)为本站会员(you****now)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开