注册 登录
编程论坛 汇编论坛

求助 为什么我在不同的masm集成环境下编译结果不同

sky飞舞 发布于 2008-11-19 13:32, 1671 次点击
我刚学习汇编,编了个小程序,代码如下

DATA SEGMENT
    X DB -3
    Y DB ?
    BUF1 DB'-1$'  
DATA ENDS
CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:
    MOV AX,DATA
    MOV DS,AX
    MOV AX,0
    MOV AL,X
    CMP AL,0
    JGE LOOP1
    MOV DX,OFFSET BUF1
    MOV AH,9
    INT 21H
    JMP EXIT
    LOOP1:JE LOOP2
    MOV AL,1
    MOV Y,AL
    MOV DL,49
    MOV AH,2
    INT 21H
    JMP EXIT
    LOOP2:MOV AL,0
    MOV Y,AL
    MOV DL,48
    MOV AH,2
    INT 21H
    JMP EXIT
    EXIT:MOV AH,4CH
    INT 21H
CODE ENDS
    END START

用MASMPlus和RadASM编译错误为
E:\程序\我的程序\汇编程序\BBB.asm(9) : error A2004: symbol type conflict
E:\程序\我的程序\汇编程序\BBB.asm(35) : warning A4023: with /coff switch, leading underscore required for start address : START

而用Masm for Windows 集成实验环境可以正常编译

那2处错误到底是什么,怎样才能通过编译?
7 回复
#2
ONEPROBLEM2008-11-19 15:16
LZ,你的程序是16位的DOS汇编,没有错误~~
但你用的MASMPlus RadASM编译器却是在一般情况下都是编译32位的Win32汇编的呀?
请LZ看这两个工具的相关说明和用法:如何设置才能编译16位的汇编~~不了解工具,干活可不顺手哦~~
#3
zklhp2008-11-19 17:27
[bo][un]ONEPROBLEM[/un] 在 2008-11-19 15:16 的发言:[/bo]

LZ,你的程序是16位的DOS汇编,没有错误~~
但你用的MASMPlus RadASM编译器却是在一般情况下都是编译32位的Win32汇编的呀?
请LZ看这两个工具的相关说明和用法:如何设置才能编译16位的汇编~~不了解工具,干活可不顺手哦 ...


9494 不赖ide
#4
sky飞舞2008-11-20 09:50
我是小白,课程需要学习的汇编,多谢各位指教!
#5
sky飞舞2008-11-20 12:50
那能推荐个适合16位工具吗
#6
sky飞舞2008-11-20 12:56
还有用什么命令才可以使程序运行时不会一闪而过。

    MOV AH,4CH
    INT 21H
貌似没起作用了!
#7
ONEPROBLEM2008-11-20 13:33
回复 6# 的帖子
1.MASMPlus 也可以编译16位的~~
2.MOV AH,4CH
    INT 21H
能保证程序的正确退出!
可以用DEBUG 加载执行,就可以看到结果了~~~
#8
zklhp2008-11-20 15:49
[bo][un]ONEPROBLEM[/un] 在 2008-11-20 13:33 的发言:[/bo]

1.MASMPlus 也可以编译16位的~~
2.MOV AH,4CH
    INT 21H
能保证程序的正确退出!
可以用DEBUG 加载执行,就可以看到结果了~~~


最好的方法是在命令行下运行 也可以最后加个读取键盘的

直接退出双击当然一闪就没了 呵呵
1