两个文件:
1:
BITS 32
GLOBAL add5
section .code
add5:
add eax, 5
ret
2:
BITS 32
EXTERN add5
EXTERN printf
EXTERN ExitProcess
section .data
fmt db `eax=%u\n`
section .code
add10:
add eax, 5
call add5
ret
_main:
mov eax, 87
call add10
push eax
push fmt
call printf
add esp, 8
push 0
call ExitProcess
将它们组装并链接在一起。我用 GoLink 作为链接器,其他链接器类似:
nasm.exe -fwin32 -o add5.obj add5.asm
nasm.exe -fwin32 -o add10.obj add10.asm
GoLink.exe /ENTRY:_main /console /fo add10.exe add5.obj add10.obj kernel32.dll msvcrt.dll
我将源命名为“add5.asm”和“add10.asm”。汇编器生成“add5.obj”和“add10.obj”。链接器使用“add5.obj”和“add10.obj”以及一些系统库(用于“printf”和“ExitProcess”)。结果是可执行文件“add10.exe”。查看命令行以获取这些名称的顺序。名称是任意的。
高温高压