0

我意识到这可能看起来像一个骗局,但我没有发现任何与我的问题很相似的东西。说我有 yasm:

segment .data

a  db 0

...

main:

    mov rax, 0xffffffff

    mov [a], rax

为什么在进入 a 时不设置进位标志?只是一个字节!当我清楚地移入它时,它比一个字节大得多。事实上,在 gdb 中,整个数字都存储在 a 中。鉴于它的声明,这怎么可能?

4

2 回答 2

2

因为mov没有设置标志。没有比这更深层次的原因了。

引用英特尔指令集参考手册:

受影响的标志

没有任何。

于 2013-01-29T16:42:47.447 回答
0

The carry bit gets set with mathematical operations only. You might be thinking of the overflow bit, but this also does nothing in this case.

As Stephen rightly says:

mov doesn't set flags

于 2013-01-29T16:45:39.313 回答