乘数位数 | 隐含的被乘数 | 乘积的存放位置 | 举例 |
---|---|---|---|
8位 | AL | AX中 | MUL BL |
16位 | AX | DX与AX中(DX存放高16位、AX存放低16位) | MUL BX |
MOV AL,0B4H ;AL=B4H=180 解释以下,只要十六进制数以字母为开头的都要在开头加0表示区分十六进制数与一些常见指令的区别 例如0B4H、74H、0A12H
MOV BL,11H ;BL=11H=17
MUL BL ;AX=0BF4H=3060
解释:首先MUL BL
就是将AL×BL=不带符号的结果存放到AX中
即计算0B4H×11H
无符号
步骤①H—>B(十进制变二进制)
步骤②B—>D(二进制变十进制)
步骤③俩数相乘结果为十进制D—>转换为十六进制H
按步骤来:
①:
0B4H ---> 1011 0100(B)
1011 0100(B) ---> 180(D)
11H ---> 0001 0001(B)
0001 0001(B) ---> 17(D)
②:
180(D)×17(D)=3060(D)
③:
3060(D) ---> 0BF4H
即最后结果AX里面存放的值为0BF4H
MOV AL,0B4H ;AL=B4H=-76
MOV BL,11H ;BL=11H=17
MUL BL ;AX=FAF4H=-1292
解释:首先IMUL BL
就是将AL×BL=带符号的结果存放到AX中
即计算0B4H×11H
有符号
步骤①H—>B(十进制变二进制)
步骤②B—>求其对应补码(所得二进制求其补码)
步骤③其对应补码—>D(求其对应补码结果转换为十进制)
步骤④俩数相乘结果为十进制D—>转换为二进制B(相乘结果转换为二进制)
步骤⑤转换成的二进制—>求其对应补码(所得二进制结果求其补码)
步骤⑥其对应补码—>转换为其对应的十六进制H(所得其补码转换为其对应的十六进制数)
按步骤来:
①:
0B4H ---> 1011 0100(B)
11H ---> 0001 0001(B)
②:求其对应补码
1011 0100(B) ---> 1100 1011(其反码) ---> 1100 1100(其补码)
11H为正数,其补码为本身 0001 0001(其补码)
③:
1100 1100(B补码) --> -76(D)
0001 0001(B补码) ---> 17(D)
④:
-76(D)×17(D)=-1292(D)
-1292(D) ---> 1000 0101 0000 1100(B)
⑤:1000 0100 0000 1100(B) ---> 1111 1011 1111 0011(其反码) ---> 1111 1011 1111 0100(其补码)
⑥:1111 1011 1111 0100(其补码) ---> FAF4(H)
即最后结果AX里面存放的值为FAF4H
AL ---> -86(D) ---> 1101 0110(B)
BL ---> 21(D) ---> 0001 0101(B)
-86×21=-1806(D) ---> 1000 0111 0000 1110(B) ---> 1111 1000 1111 0001(其反码) ---> 1111 1000 1111 0010(其补码) ---> F8F2(H)
AL ---> -86(D) ---> 1101 0110(B) ---> 214(D)
BL ---> 21(D)
214(D)×21(D)=4494(D) ---> 118E(H)