我正在编写一个 C++ 程序,并决定在 x86 程序集中编写特定函数会更有效,因为它使用了进位标志。在反汇编中,我注意到一些指令发生了变化,导致我的程序抛出异常:“访问冲突读取位置”。为什么说明会发生变化,我该如何防止这种情况发生?
这是我的代码片段:
XOR EBX, EBX ; 31 DB
MOV BL, DH ; 88 F3
MOV AH, BYTE PTR [ECX] ; 8A 21
Run Code Online (Sandbox Code Playgroud)
反汇编程序显示:
xor bx, bx ; 66 31 DB
mov bl, dh ; 88 F3
mov ah, byte ptr [bx+di] ; 67 8A 21
Run Code Online (Sandbox Code Playgroud)