8086乘除指令详解(二)

今天我继续为大家更新乘除指令。


一、乘法指令

乘法指令就两个MUL,IMUL

①无符号乘法指令MUL


无符号字节乘法:AX <-- (AL) * (SRC)

无符号字乘法:  DX.AX <-- (AX) * (SRC)




例如:

MUL CX        ;ax 和 cx 中连个16位相乘,结果在dx 和 ax中,dx放高位,ax放低位


对标志位的影响:若乘积的高一半(AH/DX)为0,则OF = CF = 0,否则 OF=CF=1;



②有符号的乘法指令IMUL


有符号字节乘法:AX <-- (AL) * (SRC)

有符号字乘法 : DX.AX <-- (AX) * (SRC)


例如:

IMUL CL          ;AL中与CL中的两个8位有符号数相乘,结果在AX中


对标志位的影响:若乘积的高一半是低一半的符号扩展,则OF=CF=0;否则均为1.


乘法指令对其它标志位没有定义,不知到到底什么值。


二、除法指令DIV,IDIV


①无符号除法DIV


无符号字节除法(AX)/(SRC)    AL←商,AH←余数
无符号字除法(DX.AX)/(SRC)    AX←商,DX←余数


例如:

DIV CL        ;AX中的数据除以CL中的数据,商在AL中,余数在AH中


②有符号除法IDIV

有符号字节除法(AX)/(SRC)           AL←商,AH←余数
有符号字除法(DX.AX)/(SRC)         AX←商,DX←余数


说明:除法运算时,要求被除数的数位是除数的2倍,否则就必须将被除数进行扩展

除法运算对AF,CF,OF,PF,SF,ZF都是不确定的。


三、类型转换指令CBW/CWD

C:convert(转换)  B:byte(字节)   W:word(字)      D:double(双字)     自己理解的哈!如果不对,谢谢指出

功能:就是符号扩展,将字节扩展为字,将字扩展为双字,以适应除法运算的要求


四、BCD码指令

实际应该叫BCD吗调整指令,它其实就是对数据的一种调整。

可用四位2进制码表示1个十进制码,这个就叫做BCD码。

BCD码有两类:1.组合的BCD码(一个字节表示2位BCD码,就是通常的8421码),2.非组合BCD码(1个字节只用低4位来表示BCD码,高四位为0)。


①组合BCD加法调整指令DAA

比如:8+7 = 15

   0000 1000

+ 0000 0111

——————

    0000 1111

显然不对,所以进行调整 ,+6,(即加上110)


9+9 = 18

   0000 1001

+ 0000 1001

——————

   0001 0010

不对,低四位向高四位进位时,内部机器是逢16进1,而BCD码要求是逢十进一,就必须调整加上011,这是辅助进位标志AF就有用了,它如果为1,就表示有进位,这是加011,就可以调整过来了

调整:4位二进制码对应的BCD码大于9时,则加6调整,低四位往高四位进位时,加6调整


②组合BCD码减法指令DAS

和上面一样,就是将一个数调整为BCD码的形式,这里我不想多说,如果大家感兴趣的话,自己查找相关资料


好了,今天就更到这里吧,明天我会更新逻辑运算指令,还有最后的BCD码这里我讲的不太好,大家有兴趣自己翻阅资料,我理解透彻了,会在讲的。


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值