【发布时间】:2023-11-05 05:21:01
【问题描述】:
累加器寄存器是保存临时值的寄存器。只有 EAX、AX、AL 寄存器是累加器。
据我所知,BX、CX、DX 和扩展版本可以保持永久价值。那么,我们为什么要用 EAX、AX、AL 寄存器作为累加器呢?
什么是累加器?
【问题讨论】:
-
“永久价值”是什么意思?
-
算术和逻辑运算的结果没有保存在内存中的任何地方
-
但是这些值是如何永久存在的?
-
ax
被称为累加器寄存器,但它与其他通用寄存器bx
、cx
、dx
、si
、di
和 @987654327 并没有什么不同@。您可以使用它们中的任何一个来保存您喜欢的任何值。 -
BTW, "eax, ax, al registers" = 同一个寄存器,不是三个寄存器。这些不同的别名仅表示指令将针对/影响的位大小(在 64b 模式下不是 100% 正确/精确,其中 32b
eax
目标将自动清除高位 32b,即像mov eax,2
这样的指令将影响整个 @987654330 @)。所以代码:mov eax,0x11223344
mov ax,0x5566
mov al,0xBB
将产生eax = 0x112255BB
(由三个不同的指令组成)。
标签: assembly x86 cpu-registers accumulator