3.3.2 算术运算类指令.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1. 加法指令(s 代表源操作数,d 代表目标操作数) (1)不带进位的加法指令 add d,s s和d相加的结果存入d。 (2)带进位的加法指令adc d,s S和d相加后再加上标志位CF,结果存入d Add主要用来计算低位字加法,adc用来计算高位字加法,实现32位加法 比如一个32位数,高16位存在dx中,低16位存在ax中 另一个32位数, 高16位置存在cx中,低16位存在bx中 计算加法add ax,bx Adc dx,cx (3)加1指令 inc d 则d=d+1 Inc ax Inc bl 2. 减法指令 (1)不带借位的减法sub d, s d-s结果存入d (2)带借位的减法sbb d,s d-s-CF,结果存入d 比如一个32位数,高16位存在dx中,低16位存在ax中 另一个32位数, 高16位置存在cx中,低16位存在bx中 计算减法,第一个数减第二个数 sub ax,bx sbb dx,cx (3)减1指令 dec d 则d=d-1 dec ax dec bl (4)求补 NEG d 将d包括符号位在内各位取反,末位加1 相当于d=0-d 比如字节型 -5计算机中存的补后即5 比如字节型 +7计算机中存的补后-7 (5)比较 cmp d,s 类似做减法sub,但不保存结果,只用来影响标志位,主要通过执行后的标志位来判断两个数的大小关系 比如cmp ax,bx (类似做ax-bx) Jz label1 (JZ意思是两数相等则跳转, jmp if zf=1) 3. 乘法指令 (1) 无符号数乘法 (用于正数) Mul s (该指令隐含了操作数ax或al) s为无符号word型,将s与AX相乘,结果存入DX,AX; s为无符号byte型,将s与AL相乘,结果存入AX (2) 有符号数乘法 (用于负数) imul s (该指令隐含了操作数ax或al) s为有符号word型,将s与AX相乘,结果存入DX,AX; s为有符号byte型,将s与AL相乘,结果存入AX 乘法指令影响of位和cf位,乘积结果用到高字(节)寄存器,则of=1,cf=1; 没用到高字(节)寄存器(结果在8位或16位范围内) 则of=0,cf=0 书p97 4. 除法指令 (隐含被除数在ax或dx,ax中) (1)无符号数除法 Div s S为无符号byte型,则用ax/s ,商存在al中,余数存在ah中 S为无符号word型,则用dx,ax/s,商存在ax中,余数存在dx中 (2)有符号数除法 idiv s 和无符号数除法类似,用于有符号数 假设用30001/2 ,代码如下 Mov ax, 30001 Mov bl, 2 Div bl 得到的是divide override,这样的情况暂不考虑,只考虑结果能够存放到相应寄存器中的情况 (3)字节转换成字(隐含操作数为al) CBW 将al中的符号位扩展到ah中,比如-5,mov al,-5= mov al, al中经cbw扩展后AX中为1111111111111011b; al存的如果是正数,直接在ah中存 (4)字转换成双字(隐含操作数为ax) Cwd (convert word to dword) 和cbw类似,将ax中的符号位扩展到dx中。 Cbw和cwd的作用是把8位扩展成16位、把16位扩展到32位,这样如果出现16位除以16位或8位除以8位的除法可以先把被除数扩展后再进行计算。 另外不只除法,加减法如果出现32位加减16位或16位加减8位的情况,也要先进行扩展后再计算。 5. 十进制调整指令 只看压缩bcd码进行加减法后的调整指令: DAA和DAS (针对2位十进制) 压缩bcd码进行加减法,得到的结果需要仍然是压缩BCD码的形式,也就是需要按十进制进行加减法,但计算机计算时是按照十六进制计算,因此需要对结果进行调整。 比如23h+4

文档评论(0)

82393aa + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档