还有专家在线吗?为什么用MASM v7 来编译连接《IBM-PC 汇编语言程序》设计上的例子程序都会出错?
MASM v7的版本是高,而清华的那本书上的却还是8086处理器的东东。我不知道是什么原因出错。
一下我抄一个极简单的例子给大家看看:
TITLE GRAPHIX.COM
codeseg segment
main proc far
assume cs : codeseg, ds : codeseg, ss : codeseg
org 100h
mov ah, 0
mov al, 04
int 10h
mov ah, 0bh
mov bh, 0
mov bl, 0
int 10h
mov ah, 0bh
mov bh, 01
mov bl, 0
int 10h
mov bx, 0
mov cx, 0
mov dx, 0
line: mov ah, 0ch
mov al, bl
int 10h
inc cx
cmp cx, 320
jne line
mov cx, 0
inc bl
and bl, 03
inc dx
cmp dx, 200
jne line
ret
main endp
codeseg ends
end main ; ×××××××这一行有警告错误:warning A4032, with /coff switch, leading underscore required for start address : main
编译的时候有警告错误:写在上面出错的地方
连接的时候出现错误:unresolved external symbol _main
这是怎么回事? 高手帮忙!
问题点数:20、回复次数:7Top
1 楼Auto_And_Elec(追命)回复于 2002-02-09 14:33:05 得分 0
这个例子就是在屏幕上以图形的方式显示彩条
Top
2 楼natureshuo()回复于 2002-02-09 16:55:39 得分 4
main好像是关键字,不能用作地址标号吧!?
好像是吧?Top
3 楼awinder(风)回复于 2002-02-09 19:23:36 得分 4
masm32v7一般用来编译32位程序。你的程序在masm5.0和tasm3.1下都可以编译通过。Top
4 楼vBin(彬)回复于 2002-02-10 18:15:09 得分 4
用TASM编写吧,TASM不管是32位还是16位都没问题.Top
5 楼wowocock(机器猫)回复于 2002-03-04 19:18:34 得分 4
你忘了加说明
。8086
.model tiny
还有MASM默认编译是WIN32PE格式,所以要去掉COFF参数。Top
6 楼yayv(yayv)回复于 2002-03-05 19:40:49 得分 4
COFF格式的目标文件中,不能以过程名作为入口地址。你可以在
main endp
后加上
start:
call main
再把end main改为 end start 试试Top
7 楼yayv(yayv)回复于 2002-03-05 19:41:50 得分 0
masm v7 只生成32位的COFF格式目标代码
Top




