0

您好,我正在尝试在 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 程序,请记住。谢谢 :)

4

2 回答 2

1

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

顺便说一句,Vista 64 位甚至支持 16 位代码吗?有人告诉我这是被丢弃的东西之一……见http://en.wikipedia.org/wiki/Windows_on_Windows

于 2010-05-03T14:49:26.840 回答
0

最好的办法是安装 XP 虚拟机。启动那个婴儿,然后安装MASM32 然后给自己一份 16 位链接器的副本:16 位链接器

然后再试一次。

由于您使用的是段,因此您需要 16 位汇编。

于 2010-05-04T01:04:21.910 回答