第一个ASM计划

时间:2010-05-03 14:26:32

标签: masm

您好 我正在尝试在Windows Vista 64位操作系统上运行MASM上的第一个ASM 8086程序 我把这个程序放在我的MASM编辑器上:

.model small
.stack
.data
message   db "Hello world, I'm learning Assembly !!!", "$"

.code

main   proc
mov   ax,seg message
mov   ds,ax

mov   ah,09
lea   dx,message
int   21h

mov   ax,4c00h
int   21h
main   endp
end main

并且MASM编辑器给了我这个输出,我不知道程序有什么问题:


 Assembling: D:\masm32\First.asm
D:\masm32\First.asm(9) : error A2004: symbol type conflict
D:\masm32\First.asm(19) : warning A4023: with /coff switch, leading underscore required for start address : main
_
Assembly Error

此代码的问题在哪里?这是我的第一个ASM计划,请记住。 谢谢:)

2 个答案:

答案 0 :(得分:1)

使用C的平台往往喜欢在函数名之前使用下划线,这取决于调用约定和可执行格式(因此“with / coff switch”警告)。尝试在函数名称中添加一个?

BTW,Vista 64位甚至支持16位代码吗?我被告知这是被丢弃的事情之一......见http://en.wikipedia.org/wiki/Windows_on_Windows

答案 1 :(得分:0)

您最好的选择是安装XP虚拟机。给宝宝开火,然后安装MASM32 然后给自己一份16位链接器的副本:16 bit linker

然后再试一次。

由于您正在使用分段,因此需要16位汇编。