小编Les*_*mim的帖子

为什么 8 位 MUL 合并到 AX 中,而 16 位和 32 位 MUL 将结果拆分为 [E]DX:[E]AX?

  • MUL CL CL 是 BYTE 大小,它等于 AX = AL * CL

  • MUL BX BX 是 WORD 大小,它等于 DX:AX = AX * BX

  • MUL EBX EBX 是 DWORD 大小,它等于 EDX:EAX = EAX * EBX

我想知道为什么 8 位大小的MUL指令给出的结果是 inAX而不是 in DL:AL

是因为对于 16 位 MUL,结果可以是EAX,对于 32 位 MUL 结果可以是RAX,但是对于 64 位mul rcx,不会有足够宽的单个寄存器来保存结果吗?

assembly x86-64 multiplication instructions x86-16

4
推荐指数
1
解决办法
82
查看次数

标签 统计

assembly ×1

instructions ×1

multiplication ×1

x86-16 ×1

x86-64 ×1