【发布时间】:2017-09-29 03:35:55
【问题描述】:
我通过观看 tutorial 开始学习汇编语言,我们在其中使用 Visual Studio。据我了解,这里我们使用 Win32 的 C++ 库运行我们的汇编代码(我只是对 C 语言知之甚少,而对 C++ 一无所知)。因此,在编写程序集时,我们保持打开两个文件:Mainer.cpp 和 MyAssembly.asm。
Mainer.cpp:
extern "C" void doit();
void main()
{
doit();
}
MyAssembly.asm:
.586
.model flat, c
.stack 100h
.data
.code
doit proc
doit endp
end
我一直在玩弄我在这里和那里学到的东西,最终我想打印'Hello, World'(在上面的教程中没有完成)。这是我所拥有的:
.586
.model flat, c
.stack 100h
.data
global _main
extern _printf
.code
doit proc
_main:
push message
call _printf
add esp, 4
ret
message:
db 'Hello, World', 10, 0
doit endp
end
但在尝试调试时出现以下错误:
错误 1 错误 A2071:初始化器幅度对于指定大小来说太大
错误 2 错误:全局:错误 A2008
错误 3 错误 A2071:初始化器幅度对于指定大小来说太大
错误 4 错误:在指令中:错误 A2008
错误 5 错误 A2071:初始化器幅度对于指定大小来说太大
错误 6 错误 A2006:未定义符号:_printf
看最后一个错误,好像没有链接到C库,但是不知道怎么解决。
我将不胜感激。
【问题讨论】: