gpt4 book ai didi

assembly - 寄存器AL和AX溢出到哪里?

转载 作者:行者123 更新时间:2023-12-02 19:08:20 26 4
gpt4 key购买 nike

请告诉我以下汇编(伪)代码的结果是什么?
我们已将寄存器 EAX 的所有位设置为 0,因此依次还有 AHALAX 为 0。但是当我减去 AL 的最低位时,我们将取二进制补码并相加,得到一堆 1 后跟一个 0。

XOR eax, eax
SUB al 0x01

总而言之,我的问题是,在执行上面的代码时,只是 AL 充满 1,还是也会结转到 AXEAX

最佳答案

add/sub 的进位进入 CF,进位标志进入 EFLAGS。

sub al, 1 的操作数是 AL,而不是 EAX。 EAX 的高 24 位不受 8 位操作数大小的指令影响。

如果您想将整个 EAX 翻转为全 1,则需要使用 sub eax, 1。 (或not eax,或dec eax)。 sub al, 1 是一条不同的指令,不同之处在于它只影响 AL(和 EFLAGS),而不影响 AL 之外的任何位。

<小时/>

giving us a bunch of 1s followed by a 0.

没有。在 2 的补码中,-1 由一个设置了所有位的数字表示。例如,在 8 位中它是 0xFF,在 32 位中它是 0xFFFFFFFF。底部有一个0位,它代表-2

will just AL be full of 1s, or will it also carry over to AX and EAX.

只是阿尔。您可以自己尝试一下(如果您仍然感到困惑,然后要求对结果进行解释)。

关于assembly - 寄存器AL和AX溢出到哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58214555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com