汇编模块问题

xiaojian1111111 2007-05-27 12:42:02
我在一个单独的asm文件中写了一个子程序sound,并以public sound 声明了。
然后我在我的主程序是:
.model small
extrn sound:far
cseg segment
assume cs:cseg
_start:
main proc far
mov bx,0500h
mov di,330
call sound
.exit
main endp
cseg ends
end _start

编译前一个模块没问题,但在编译主模块时出现:
error A2004: symbol type conflict 错误
即说我的call sound 一行存在符号冲突。


希望各位高手不吝赐教,谢谢!
...全文
302 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ReverseEngineering 2007-06-03
  • 打赏
  • 举报
回复
顶了再看!
mengshijie_1981 2007-05-31
  • 打赏
  • 举报
回复
妤间笂瑷€涔嬫湁鐞
大熊猫侯佩 2007-05-31
  • 打赏
  • 举报
回复
give you a simple eg:

mian.asm:

extrn showstring:far

data segment
str0 db 'Do you show me?$'
data ends

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax

lea ax,str0
call showstring

mov ah,4ch
int 21h

code ends
end start


sub.asm:

public showstring

code segment
assume cs:code
showstring proc
mov dx,ax
mov ah,09h
int 21h
retf
showstring endp

code ends
end
mengshijie_1981 2007-05-30
  • 打赏
  • 举报
回复
假设sound函数在sound.asm中,应该在.model small的前一行或者更前面加上:
INCLUDE sound.asm ;包含文件

sound [类型:参数1,类型:参数2,……] far PROTO ;函数声明

用MASM6.11中的ML.EXE先要编译sound.asm,然后再编译当前主过程所在源文件,最后用MASM6.11中的LINK.EXE来链接
  • 打赏
  • 举报
回复
你这个是16位的程序啊,那么链接的时候也应该使用16位的连接器
iu_81 2007-05-27
  • 打赏
  • 举报
回复
你这个link是生成pe文件(win32) 去找个低版本link
用MASM32编译程序来生成比较烦麻(加上/AT开关试试)
建议使用MASM 6.X

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧