gpt4 book ai didi

assembly - 从另一个汇编文件调用汇编过程?

转载 作者:行者123 更新时间:2023-12-05 01:47:37 25 4
gpt4 key购买 nike

只是一个简单的问题:

假设我有以下两个汇编程序:

1:

add10:
add eax, 10
ret
;call add5 from other file

2:

add5:
add eax, 5
ret
;call add10 from other file

我可以从第二个文件调用 add10(在第一个文件中声明),反之亦然吗?如果可以,怎么办? (即使它不可行)

注意:这将在裸机上运行,​​而不是在任何花哨的 NT 调用上运行!

谢谢。

编辑:我在 Windows 上使用 NASM。

最佳答案

两个文件:

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”。查看命令行以获取这些名称的顺序。名称是任意的。

HTH

关于assembly - 从另一个汇编文件调用汇编过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23234898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com