标题:编译器相关
只看楼主
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
 问题点数:0 回复次数:6 
编译器相关
stack    segment    stack
    dw    100 dup (?)
stack    ends
data    segment   
    x1    db    'please input a letter','$'    ;必须'$'结尾
    x2    db    'zhongyunde','$'  ;
data    ends
code    segment
    assume    cs:code,ds:data,ss:stack
start:   
    push    ds
    xor    ax,ax
    push    ax
    mov    ax,data
    mov    ds,ax
    mov    ah,1h
    int    21h
    cmp    al,0
    jz    start
   
    call    far ptr xx2  
    mov    ah,1h
    int    21h
    ret

xx2    proc    ;far

    ;mov    ax,data
    ;mov    ds,ax
    mov    dx,offset    x2
    mov    ah,    9h
    int    21h   
    ret
xx2    endp
code   ends
    end    start
上面的代码在 masm5.0上能够编译、链接
但是使用 RadASM2.2.1.1却不能通过编译
提示:
C:\RadASM\projects\dd.asm(14) : error A2004: symbol type conflict
C:\RadASM\projects\dd.asm(36) : warning A4023: with /coff switch, leading underscore required for start address : start
是不是因为 masm5.0 编译的是16位汇编代码
而现在这个 RadASM2.2.1.1 却只能编译32位汇编代码??
搜索更多相关主题的帖子: RadASM masm 编译 链接 平台 
2008-10-14 17:50
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
得分:0 
是不是因为 masm5.0 编译的是16位汇编代码
而现在这个 RadASM2.2.1.1 却只能编译32位汇编代码??
;===============================
有些编译器还是有一定的兼容性的,如MASMPlus 也能编译16位的汇编代码.
RadASM2.2.1.1能不能编译,你查看一下它的相关说明.是不是像MASMPlus一样,在源文件的头部加点东西就行的.
2008-10-14 18:33
cnhanxiao
Rank: 2
等 级:新手上路
威 望:4
帖 子:124
专家分:0
注 册:2008-10-17
得分:0 
mov    ax,data

RadASM默认使用MASM32编译器,各段都是32位的,mov eax,data,那第一个错误就过去了。试了一下,在MASM32下,给你的程序前加.8086或者对段做出限制都无法编译,只能在编译时候加上/Zm选项才能编译通过:
E:\>ml /c /Zm test.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.
 Assembling: test.asm
E:\>
( /Zm Enable MASM 5.10 compatibility——兼容MASM5.10)
不过按照加选项能编译通过,应该在程序中也可以限定的,这是MASM给用户的两种选择,只是我没能找到在程序告知编译器的伪指令?

这样的程序还是用MASM5.0,可以对你锻炼很多的。真喜欢集成环境的话,你可以把MASM5.0加入RadASM,并设置成默认的。

[[it] 本帖最后由 cnhanxiao 于 2008-10-17 08:06 编辑 [/it]]
收到的鲜花
  • zklhp2008-10-17 12:43 送鲜花  50朵   附言:好文章
2008-10-17 07:43
cnhanxiao
Rank: 2
等 级:新手上路
威 望:4
帖 子:124
专家分:0
注 册:2008-10-17
得分:0 
好了,在RadASM下一样可以的:
你选择新建项目——DOS程序,然后把这个程序粘贴进去,就OK了!
2008-10-17 14:44
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
偶发现很多人有个误解

其实 masmplus也好 radasm也好 都是ide

他们都是用的masm呀

只要编译参数对了 比如 /Zm 什么ide都行的
2008-10-17 17:02
cnhanxiao
Rank: 2
等 级:新手上路
威 望:4
帖 子:124
专家分:0
注 册:2008-10-17
得分:0 
回复 5# zklhp 的帖子
是,只是连接时候,要用DOSLINK,折腾我不久
2008-10-17 17:56
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
[bo][un]cnhanxiao[/un] 在 2008-10-17 17:56 的发言:[/bo]

是,只是连接时候,要用DOSLINK,折腾我不久


还是偶经常说的那句话:ide真好!

其实知道原理后 用什么编译都行 用ide很方便 比如masmplus
2008-10-17 18:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-238242-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.084796 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved