- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)