如何在emu8086中使用IMUL和MUL指令?

时间:2016-06-10 06:25:14

标签: assembly tasm emu8086

如何在emu8086中使用IMULMUL?不允许在emu8086中使用movzx

例如,emu8086中不允许使用movzx,这种替代方案会     允许我使用该指令,emu8086是否有这样的东西     替代方案,所以我使用说明IMUL / MUL?

1  movzx bx,centerBot ;not allowed in emu8086
2
3  mov bh,00          ;alternative of line 1 
4  mov bl,centerBot   ;to move centerBot to bx
                      ;in emu8086

emu8086中的IMUL / MUL是这样的,所以我可以这些说明吗?

1 个答案:

答案 0 :(得分:4)

正如您所看到的x86指令集指南(herehere)所示,自8086以来,mulimul指令得到了支持因此,如果Emu8086实际上模拟了Intel 8086,那么它也应该模拟这两个指令。使用它们应该没问题。

MUL用于无符号乘法,在8086上有两种形式:16位版本和8位版本:

  • MUL r16|m16dxax = ax * r16|m16

  • MUL r8|m8ax = al * r8|m8

IMUL具有相同的两个版本,但将值视为已签名。

关于movzx的解决方法/仿真,最好使用:

xor bx, bx          ; clear BX (upper and lower bits)
mov bl, centerBot   ; copy centerBot to the lower bits of BX

或者您可以安排centerBot成为字大小的变量/内存,这样可以直接移动:

mov bx, centerBot