gpt4 book ai didi

assembly - movzwl、%ax 和负值的奇怪结果

转载 作者:行者123 更新时间:2023-12-04 16:36:19 26 4
gpt4 key购买 nike

好的,所以我正在处理以下代码片段:

push   %ebp
mov %esp,%ebp
push %ebx
mov 0x8(%ebp),%eax
movzwl %ax,%edx

因此,在处理正值时,它的行为符合预期。复制到 %edx 的值是 %eax(或 %ax)的尾随 16 位。

然而,如果你输入一个负数,一切都会开始变得奇怪,它似乎不像预期的那样表现。

例如,如果 %eax 的值为 -67043552,则复制到 %edx 中的值为 65312。

我对组装相当陌生,如果这对我来说是一个明显的误解,我很抱歉。任何帮助将不胜感激。

最佳答案

请记住 movzwl仅复制 %ax 中的位进入 %edx填写%edx的高16位带零。

所以%edx总是以小于或等于 65535 的正数结束。

详情:-67043552十六进制是 fc00ff20 .所以如果这是在 %eax ,然后 %ax包含 ff20 .如果你把它移到 %edx零扩展名,然后 %edx获取 0000ff20 .那是 65312。

关于assembly - movzwl、%ax 和负值的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7315523/

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