资源描述:
《新版汇编语言程序设计课后答案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第2章(03)2.12;指令 注释 执行结果 CFOFSFZFPFmovsi,ax si=ax si=0008h - - - - -shlsi,1 si=2*ax si=0010h 0 0 0 0 0addsi,ax si=3*ax si=0018h 0 0 0 0 1movdx,bx dx=bx
2、 dx=0010h - - - - -movcl,03h cl=03h - - - - -shldx,cl dx=8*bx dx=0080h 0 u 0 0 0subdx,bx dx=7*bx dx=0070h 0 0 0 0 0adddx,si dx=7*bx+3*ax dx=0088h 0 0 0 0 1注意:1.左移N次相当
3、于乘于2的N次方,右左移N次相当于除乘于2的N次方。2.移位指令根据是否移入“1”到CF,设置CF,根据移位后的结果影响SF,ZF,PF。根据最高符号位是否改变设置OF,如改变OF=1.3.‘u’表示无定义,‘-’表示无影响。2.13;(1);不考虑进位movbl,almovcl,3shlal,claddal,bl ;shlbl,1addal,bl;考虑进位xorah,ahmovbx,axmovcl,3shlax,claddax,bx ;shlbx,1addax,bx(2)数字0~9的ASCII码是:30h~39h非压缩BCD码的0~9是:00h~09h方法一
4、:andal,0fh ;实现ASCII到非压缩BCD码的转换oral,30h ;实现非压缩BCD码到ASCII的转换方法二:xoral,30h ;求反D5D4位,其他不变;即高4位为3,则变为0;高4位为0,则变为3movcl,4again:shrdx,1 ;实现逻辑右移;采用“sardx,1”,则实现算术右移 rcrax,1 deccl jnzagain2.14;(1)用sar编写 moval,0f7h ;-9送al saral,1 ;结果:al=0fbh 即-5(2)用idiv编写
5、moval,0f7h ;-9送al cbw ;字节符号扩展位字 movbl,2 ;注意除数不可为立即数 idivbl ;结果:商为al=fch (-4) ;余数为ah=ffh(-1) 结论:符号数的除法用idiv准确2.19;短转移:指段内-128~127之间的转移,位移量用一个字节表示近转移:指段内±32K之间的转移,位移量用一个字表示远转移:指段间1MB范围的转移段内转移:指在同一个代码段内的转移,可以是短转移或者近转移段间转移:指转移到另外
6、一个代码段,就是远转移8086/8088CPU的JMP、CALL和INTn指令可以实现段间转移 第2章(04)2.20;8086的条件转移的转移范围:在当前指令地址的+127-----128之内。如条件转移的转移范围超出此范围,可在此范围内安排一条无条件转移,再转移到范围外的目标地址。2.21;(1)JMPBx ;转移的有效地址EA=BX=1256h(2)JMPtABLE[Bx];转移的有效地址EA=[ds:20a1h+1256h]=[232f7]=3280h(3)J
7、MP[Bx][si] ;转移的有效地址EA=[ds:1256h+528fh]=264e5h=2450h2.22;(1)xorax,1e1eh jeequal ;AX=1e1eh(异或后为0)(2)testal,b jnzthere ;AL的D0或D7至少有一位为1(3)cmpcx,64h jbthere ;CX(无符号数)<64h2.23;movcx,0 不循环,因为一进入循环就判cx=0?如cx=0就退出循环delay:loopdelay2.24;(1)若DX>