我有以下 ASM 代码:
USE32
Start:
jmp Main
struc st
.stLong resd 1
.stWord resw 1
.stBuffer resb 32
endstruc
mystruc:
istruc st
at st.stLong, dd 1
at st.stWord, dw 1
iend
Main:
mov eax, 1
mov [mystruc+st.stLong], eax
我已经使用 NASM 对其进行了编译,并尝试使用以下代码执行(逐步)在 Visual C++ 的调试模式下生成的二进制文件:
unsigned char hexData[50] = {
0xEB, 0x00, 0xB8, 0x01, 0x00, 0x00, 0x00, 0xA3,
0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00
};
__asm{
lea eax, hexData
call eax
}
问题是:执行第一条指令(jmp Main)总是会导致访问冲突异常。:(我不知道这里到底发生了什么。你能告诉我问题是什么吗?