QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1492|回复: 6

《在线等待》这个程序怎么就不能通过呢?

[复制链接]
发表于 2004-4-2 22:35:38 | 显示全部楼层 |阅读模式
《在线等待》这个程序怎么就不能通过呢?
DATA    SEGMENT
        BBUF DB 86H
        ABUF DB 2 DUP(0)
DATA    ENDS
STACK1  SEGMENT PARA STACK
  DW    20H DUP(0)
STACK1  ENDS
CODE    SEGMENT
PROC1   PROC FAR
ASSUME  CS:CODE,DS:DATA,SS:STACK1
START:  PUSH DS
        MOV AX,0
        PUSH AX
        MOV AX,DATA
        MOV DS,AX
        MOV AL,BBUF
        MOV BL,AL
        MOV CL,4
        SHR BL,CL
        ADD BL,30H
        MOV ABUF,BL
        AND AL,0FH
        ADD AL,30H
        MOV ABUF+1,AL
        RET
PROC1 ENDP
CODE ENDS
END START
                                                                                                                                             
出错信息:
# nasm -f elf 1.asm
1.asm:1: error: parser: instruction expected
1.asm:3: error: comma expected after operand 1
1.asm:4: error: symbol `DATA' redefined
1.asm:4: error: parser: instruction expected
1.asm:6: error: comma expected after operand 1
1.asm:7: error: symbol `STACK1' redefined
1.asm:7: error: parser: instruction expected
1.asm:8: error: parser: instruction expected
1.asm:9: error: parser: instruction expected
1.asm:10: error: parser: instruction expected
1.asm:26: error: symbol `PROC1' redefined
1.asm:26: error: parser: instruction expected
1.asm:27: error: symbol `CODE' redefined
1.asm:27: error: parser: instruction expected
1.asm:28: error: parser: instruction expected
请高手指教~~~
发表于 2004-4-2 22:53:10 | 显示全部楼层
section .text  
extern puts  
global main  

main:  
push dword msg ;stash the location of msg on the stack.  
call puts ;call the "puts" routine (libc?)  
add esp, byte 4 ;clean the stack?  
ret ;exit.  

msg:  
db "Hello World!",0  

编译:  
nasm –f elf hello.asm  
gcc –o hello hello.o
回复

使用道具 举报

发表于 2004-4-2 22:56:00 | 显示全部楼层
汇编不是c,它只是助记符,nasm的助记符不是你写的那样的。你可以看看公社相关介绍。
回复

使用道具 举报

 楼主| 发表于 2004-4-2 22:57:06 | 显示全部楼层
楼上的这段程序我能编译成功,但是我看好像和我些的那段有些语法不一样,是吗?如果我的那种格式,能在linux下面通过吗?
回复

使用道具 举报

发表于 2004-4-2 23:07:29 | 显示全部楼层
你的masm是别的公司定义的格式,这个nasm又有自己的格式。你看每本介绍汇编的书,是不是说了是用“masm宏汇编语言”这句话?它不像c标准化,因为没什么可标准化的(标准就是芯片公司指令系统),你想用什么助记符都行。可能因为中国用masm太广泛了,让大家以为只有这一种助记符。当然,除了助记符,宏指令可是每个*asm独有的。
回复

使用道具 举报

 楼主| 发表于 2004-4-2 23:13:55 | 显示全部楼层
楼上的,谢谢指导,能交流一下吗?我的qq371798999,真诚期待,我想您求助
回复

使用道具 举报

发表于 2004-4-3 11:54:35 | 显示全部楼层
我不懂linux下的汇编。
我没有QQ(老土吧!)
这个论坛就是很好的交流园地。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 16:34 , Processed in 0.047822 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表