微机原理 th-乘除法指令

微机原理

第三章

算术运算类指令

乘法指令

截屏2023-10-07 15.57.35

截屏2023-10-07 16.06.36

  1. 无符号数乘法
    格式为MUL OP,只有一个操作数,8位x8位就是16位,16位x16位是32位。
    8x8是操作数xAL最后的数据存放在AL
    16x16是操作数xAL最后的数据存放在DX和AX
    例:
    MUL BL;ALxBL的结果送AX
    MUL WORD PTR [SI];AX[SI+1] [SI]的结果回送(DX,AX) *“DX是高16位,AX是低16位”
  2. 带符号数乘法
    操作同上,但是操作数为带符号数。
    格式为IMUL OP;

注意

截屏2023-10-07 16.19.54

  1. 对于MUL(例)
    截屏2023-10-07 16.50.13

    (图为16位 )

    8位x8位时,若AH(高8位)为0,则CF=OF=0;
    当AL=2,BL=3时,MUL BL;2x3=6—>AX,此时AH=0,AL=6,所以CF=OF=0;
    16位x16位看高16位是否为0,若为0,CF=OF=0,否则CF=OF=1。

  2. 对于IMUL
    截屏2023-10-07 17.02.55

    有符号数的乘法必须转换成真值来做。
    -1x3=-3转换为补码:0000-3=0FFFDH
    符号扩展是指:
    做字节乘法时,乘积低8位的最高位为0,高8位也扩展为0,或者低8位的最高位为1,高8位也扩展为1的情况。
    对两个字相乘,符号扩展是指乘积的低16位的最高位为0,高16位也扩展为0,或者低16位的最高位为1,高16位也扩展为1的情况。

例题

截屏2023-10-07 17.44.09

  1. 无符号,0FEH*0AH = 1111 1110B x 10 (2的3次方+2的1次方)
    其中AH(高8位)不等于0所以CF=OF=1

截屏2023-10-07 17.46.55

  1. 有符号,-2*(+10) = -20(补),-20转为16进制为14H,真值=0000H-14H = 0FFECH
    其中AH为1111 1111 AL为1110 1100,高是低一半的符号扩展,所以CF=OF=0

除法指令

截屏2023-10-07 17.56.27

  1. 无符号数除法
    格式为DIV OP;除数不能为0且指令要求被除数是除数的双倍字长。
    OP为8位时,16/8;OP为16位时,32/16
    字节除法:AX/OP,商存放在AL中,余数存放在AH中。
    字除法:(DX、AX)/OP,商存放在AX中,余数存放在DX中。

截屏2023-10-07 18.30.14

  1. 有符号数除法
    格式为IDIV OP,操作同上,但操作数为带符号数。

注意

截屏2023-10-07 18.17.14

图中解释为0号中断。

符号扩展指令格式

截屏2023-10-07 18.22.00

符号扩展指令不需要操作数。
图中为字节扩展指令。

截屏2023-10-07 18.24.23

图中为字扩展指令。

十进制运算调整指令

截屏2023-10-07 18.35.38

截屏2023-10-07 18.34.51

非组合BCD码的加法调整指令

截屏2023-10-07 18.43.01

格式:AAA;

组合BCD码的加法调整指令

截屏2023-10-07 18.54.46

非组合/组合BCD的减\乘\除

截屏2023-10-07 18.55.56

截屏2023-10-07 18.57.13

截屏2023-10-07 19.00.34

特殊的指令:非组合BCD码的除法调整指令
格式:AAD;只能在DIV运算前使用。
对BCD码进行调整,8086不支持BCD码直接运算的,实际上还是在用二进制计算。

总结

截屏2023-10-07 19.03.57

例题

截屏2023-10-07 19.06.55

© 2022 - 2024 PWN022. All rights reserved.
载入天数...载入时分秒...