x86:为什么移动到内存地址时没有设置标志?

时间:2013-01-29 16:40:34

标签: x86 yasm

我意识到这可能看起来像是一个副本,但我找不到任何与我的问题相似的东西。说我有yasm:

segment .data

a  db 0

...

main:

    mov rax, 0xffffffff

    mov [a], rax

为什么搬入标志时没有设置进位标志?这只是一个字节!当我明显地移动它比一个字节大得多。实际上在gdb中,整个数字都存储在一个。鉴于其声明,这怎么可能?

2 个答案:

答案 0 :(得分:2)

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

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

  

受影响的标志

     

无。

答案 1 :(得分:0)

进位位仅通过数学运算设置。您可能正在考虑溢出位,但在这种情况下这也没有做任何事情。

斯蒂芬正确地说:

mov未设置标记