Debugging 要将这个16位程序集变成32位,我必须做哪些更改?
我问了一个关于汇编语言的问题。我觉得使用16位程序很难。现在我想把它改成32位。下面是我尝试的第一个程序的代码:Debugging 要将这个16位程序集变成32位,我必须做哪些更改?,debugging,assembly,32-bit,16-bit,Debugging,Assembly,32 Bit,16 Bit,我问了一个关于汇编语言的问题。我觉得使用16位程序很难。现在我想把它改成32位。下面是我尝试的第一个程序的代码: [org 0x0100] mov ax, 5 mov bx, 10 add ax, bx mov bx, 15 add ax, bx mov ax, 0x4c00 int 0x21 我把它命名为ex01.asm。我用NASM制作了一个COM文件。命令是 nasm ex01.asm -o ex01.com -l ex01.lst 但我无法在Ollydbg中使用创建的COM文件。因
[org 0x0100]
mov ax, 5
mov bx, 10
add ax, bx
mov bx, 15
add ax, bx
mov ax, 0x4c00
int 0x21
我把它命名为ex01.asm。我用NASM制作了一个COM文件。命令是
nasm ex01.asm -o ex01.com -l ex01.lst
但我无法在Ollydbg中使用创建的COM文件。因此,如果我想将此程序更改为在win xp或win 7中工作,以便我可以使用Ollydbg,我必须做哪些更改,为什么?
我的想法:
我认为,NASM不能直接生成EXE。 您将需要将ASM编译成对象文件,然后与某个链接器链接(例如MinGW包中的ld.exe) 在代码中,您需要创建过程而不是内联代码(WinMain) 代码: 将替换为从过程返回(或从kernel32.dll调用函数) 这会有帮助(一点): 您还可以查看FASM,它可以直接构建exe
mov ax, 0x4c00
int 0x21