-1

How to use IMUL and MUL in emu8086? .. movzx in emu8086 is not allowed

like for example movzx is not allowed in emu8086, this alternative would allow me to use the instruction, does emu8086 has something like this alternative so i use instructions 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

is there something like this with the IMUL/MUL in emu8086 so i can these instructions?

4

1 回答 1

4

正如您通过查看 x86 指令集指南(此处此处)所看到的那样,自 8086 以来就已支持mulandimul指令。因此,如果 Emu8086 实际上模拟了 Intel 8086,那么它也应该模拟这两个指令. 使用它们应该没有问题。

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

  • MUL r16|m16   ⇔  dx: ax= ax*r16|m16

  • MUL r8|m8   ⇔  ax= 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
于 2016-06-10T09:59:29.843 回答