【发布时间】:2015-01-22 13:32:46
【问题描述】:
我正在尝试使用 masm32 来学习汇编。我运行的是Windows 8,可以在masm32目录下编译运行示例代码,没有问题。
我正在使用快速编辑器 4.0g。
但是,我有以下代码,直接来自 Kip Irvine 的“x86 处理器的汇编语言”。他说这是一段“不依赖于包含文件”的代码,尽管我感觉这可能并不完全正确。
TITLE Add and Subtract
; This program add and subtracts 32-bit Integers
.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO, dwExitCode:DWORD
DumpRegs PROTO
.code
main PROC
mov eax,10000h
add eax,40000h
sub eax,20000h
call DumpRegs
INVOKE ExitProcess,0
main ENDP
END main
当我尝试构建它时(我转到 Project 并选择“Console Assemble and Link”)我收到以下错误:
AddSubAlt.obj : error LNK2001: unresolved external symbol _ExitProcess@4
AddSubAlt.obj : error LNK2001: unresolved external symbol _DumpRegs@0
AddSubAlt.exe : fatal error LNK1120: 2 unresolved externals
这几天我一直在尝试解决这个问题。我找到了 2002 年的答案,但它引用了不再存在的库。我希望那里的一些组装大师天使可以帮助我解决这个问题。
请,谢谢!
【问题讨论】:
-
您必须将相应的
.lib文件添加到链接器命令行,以便您从中获取ExitProcess和DumpRegs的库。顺便说一句,当您可以将eax和retn归零时,为什么还要打电话给ExitProcess? -
或者在汇编代码中,可以添加includelib指令,如| INCLUDELIB MSVCRTD | | INCLUDELIB 旧名 | .
-
@Ruslan 如果你问我为什么 Irvine 先生这样写代码,我无法回答你。我也不太明白你说的怎么做。
-
@rcgldr 你能告诉我我需要在婴儿步骤中做什么吗?我是 Assembly 的初学者。
标签: assembly x86 masm32 irvine32