在这种情况下,MOVSX 指令符号如何扩展输入?
How is MOVSX instruction sign extending input in this case?
我有以下反汇编:
[目标] = d5 cd e8 ca 68
movzx eax, [ebp+dest]
# value of edx at this point is: F7FBB898
movsx edx, al
# value of edx after this is: FFFFFFD5
# [ebp+var_E] stores 0
movzx eax, [ebp+var_E]
movsx eax, al
# eax = 0 here
add eax, edx
# eax becomes FFFFFFD5
cmp eax, 0D5h
jnz short loc_565564E6
我在下面给出了每条指令的解释和流程:
- 它从[dest]中读取一个字节并将其存储在eax中。
- edx 的初始值是:F7FBB898。之后,movsx edx, al 指令变为 FFFFFFD5。我怎样才能确保此时 edx 的值是 0x000000d5?
我在 [dest] 中的初始值应该是多少,以便在这些操作之后,eax 中的最终值是 0xd5 而不是 0xFFFFFFD5
我有以下反汇编:
[目标] = d5 cd e8 ca 68
movzx eax, [ebp+dest]
# value of edx at this point is: F7FBB898
movsx edx, al
# value of edx after this is: FFFFFFD5
# [ebp+var_E] stores 0
movzx eax, [ebp+var_E]
movsx eax, al
# eax = 0 here
add eax, edx
# eax becomes FFFFFFD5
cmp eax, 0D5h
jnz short loc_565564E6
我在下面给出了每条指令的解释和流程:
- 它从[dest]中读取一个字节并将其存储在eax中。
- edx 的初始值是:F7FBB898。之后,movsx edx, al 指令变为 FFFFFFD5。我怎样才能确保此时 edx 的值是 0x000000d5?
我在 [dest] 中的初始值应该是多少,以便在这些操作之后,eax 中的最终值是 0xd5 而不是 0xFFFFFFD5