【发布时间】:2016-06-10 06:25:14
【问题描述】:
如何在emu8086中使用IMUL和MUL? .. 不允许在 emu8086 中使用 movzx
例如 movzx 在 emu8086 中是不允许的,这种替代方案将 请允许我使用指令,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 有类似的东西,所以我可以提供这些说明吗?
【问题讨论】:
-
您的代码中没有 MUL 或 IMUL,您询问的是完全不同的指令。你到底想做什么?
-
您不需要替代
imul或mul;单操作数形式是 8086 的一部分,后来没有添加。 (有关显示何时添加每条指令的每种形式的链接,请参阅the x86 tag wiki)。要乘以小的汇编时常数,通常值得使用移位和加法或减法而不是乘法......或者至少如果shl r, imm8可用的话。当然,现代 Intel CPU 的乘法速度非常快(imul r64, r64, imm32有 3 个周期延迟。) -
@peter 标记 wiki 中的哪个链接显示了添加每条指令的每种形式的时间?我浏览了一下,但找不到这样的链接。
-
@CodyGray: posix.nl/linuxassembly/nasmdochtml/nasmdoca.html,NASM 手册的旧版本,在他们删除每条指令的解释之前。 (这很有趣,因为它包含仅 Cyrix 的 MMX 指令,以及未记录的 Intel 和其他 insn)。它位于标签 wiki 中英特尔手册和 Felix Cloutier 的 HTML 版本链接下方。抱歉故意含糊/懒惰:P