如何在emu8086中使用IMUL
和MUL
?不允许在emu8086中使用movzx
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
是这样的,所以我可以这些说明吗?
答案 0 :(得分:4)
正如您所看到的x86指令集指南(here或here)所示,自8086以来,mul
和imul
指令得到了支持因此,如果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