最基础入门菜鸟级提问--我不会HELLO,WORLD!
我们正准备开汇编课,看了几天书,什么都不懂,觉得不知所措。想想原因,主要是不知怎么上机调试。课本上讲了一百多页了,才有第一个上机程序。而且它上面的软件很老,找也找不到。我有一些最基本最基本的问题想问。因为我的问题太基本了,如果你把我当作汇编白痴,我也不介意。但是希望能得到您的详细解答。
我们的课本是白皮子的《IBM-PC汇编语言程序设计》那本书,书上说要运行汇编程序要有以下程序:
asm.exe
link.exe
exe2bin.exe
debug.com
edlin.com
ws.com
wsmsgs.ovr
wsovlyi.ovr
其中有一些东西真不好找,比如第一个asm.exe,找了好久也没找到(找到了一个masm.exe,是不是一样能用?)。而且我想,有那么多的汇编软件,版本也比它新,应该能用吧!
第一个问题:
书上说要先建立.asm文件,然后再编译,连接。在建立.asm文件的时候,可不可以先用记事本把代码打好,然后保存为一个文本文件(.txt),然后把后缀名改为asm?再编译连接?
但是我不想这么麻烦在DOS下先写,再编译,再连接,我希望用像TC那样的环境,多方便。于是,
第二个问题:
有不少汇编软件,比如masm6, tasm等等,一个软件就有几M,它们可不可以用来学习汇编?我们书上的汇编程序是不是可以运行在masm6上?而且在其中的一个编译器上写的程序能不能被另一种编译器编译通过?我选择哪一个比较好?
第三个问题:
我试了一个masm6,哪个文件是首先应该运行的?是不是pwb.com?
第四个问题:
我用masm6,运行其中的pwb.com,出现了一个类似于TC那样的编辑环境,是不是要把汇编的代码写在上面?可是写完后,另存为时,它提示的后缀为.mak,而不是我期望出现的.asm,这是怎么回事?而且编译运行那几个菜单都是灰的,不能运行。
我试了好久,还是没有把书上的hello,world程序做出来,
第五个问题:
谁可以手把手地教我(写详细一点的教程,当我是白痴一样地教)用masm6编写一个"hello,world!"的程序?我觉得汇编真的不好学,比C语言难多了,看了几天的书
都没有入门。
不胜感激!我好像就只有210分,给分就填20啦,如果我真的懂了,全给也行。
问题点数:20、回复次数:14Top
1 楼yjcq(yj)回复于 2003-06-04 20:03:51 得分 3
data segment
a db 'hello world$'
data ends
stack1 segment stack
dw 21h dup(?)
stack1 ends
code segment
assume cs:code,ss;stack1,ds:data
main;mov ax,data
mov ds,ax
lea dx,a
mov ah,09h
int 21h
code ends
end main
Top
2 楼dddeee(dddeee)回复于 2003-06-04 20:11:06 得分 0
这不够呀,,把代码给我我也不知道怎么弄出个.exe 程序出来呀!!
我现在需要的不是代码,是怎么把代码变也可执行的文件。。。。
还是要先谢谢!!Top
3 楼bluedodo(笑三少)回复于 2003-06-04 20:12:18 得分 10
1.你完全可以这样做,你甚至可以把.asm文件关联成“记事本”,至于开发环境我也想有,但我没找到,本来一直想自己写一个的。可以按F9就编译成.obj文件,呵呵
2、我用的是MASM,它是完全兼容ASM,它多出的一个“M”,意思是“宏”汇编。推荐选MASM,通用,功能强大。
3、MASM中的MASM.exe应该是最运行的(当然你要已经写好了.asm文件)
4、不好意思,我没用过pwb.com,我的程序一般是在最傻的EDIT.EXE写的,如果想让自己看的更清些,我会用EditPlus软件。它有关键字的突显。
5、刚在另外的贴子下签名,说不再给些源代码。再说学汇编不能急,它的程序结构是建立在对寻址方式的理解和应用上的。你应该首先明白机器是如何寻址的。明白这些后,你可以去看看中断,因为汇编程序要显示出结果不像你用C,它是比较复杂的(至少比看起来C复杂),显示是需要中断调用的。
你的分就不要加了,210不多了,留到更需要的时候吧。~~
Top
4 楼dddeee(dddeee)回复于 2003-06-04 20:18:42 得分 0
谢谢你,,,我一会儿再试试,今天一定要把HELLOWORLD弄出来。Top
5 楼kuangjingbo(正在学习windows)回复于 2003-06-04 20:25:52 得分 0
1.可以
2.可以Top
6 楼dddeee(dddeee)回复于 2003-06-04 22:02:52 得分 0
yjcq(yj)兄:你给我的代码没有通过编译呀!哪里有问题?
-----------------------------
Assembling file: hello.ASM to E:\Fasm\OUT\hello.OBJ
**Error** hello.ASM(9) Illegal instruction
**Error** hello.ASM(15) Undefined symbol: MAIN
Error messages: 2
Warning messages: None
Passes: 1
Remaining memory: 383kTop
7 楼dddeee(dddeee)回复于 2003-06-04 22:05:31 得分 0
还有我发现我的每个编译成EXE的文件运行后第一行都是这句话:
invalid keyboard code specified
这是什么意思呢?Top
8 楼hiairfly(呵呵)回复于 2003-06-05 00:31:21 得分 0
将那个 main 后面的分号改成冒号, 还有 ss 后面的 也改过来。再试试!Top
9 楼yjcq(yj)回复于 2003-06-05 10:03:48 得分 0
不好意思,标点写错了Top
10 楼lowes(翔风)回复于 2003-06-05 11:22:01 得分 3
你用记事本把asm文件建好,在保存时输入asm文件的名字,并加上后缀".asm",选择“所有文件”再保存就可以了。
建议你不要用MASM自带的编辑器,而且MASM可以不用安装,就把里面的masm.exe(或ml.exe)
和link.exe两个文件复制出来就可以编译,连接你的程序了。
推荐两个编辑器:Editplus,UltraEditTop
11 楼wequal(小虾)回复于 2003-06-05 12:21:21 得分 2
.model small
.data
mes1 db 'Hello World!'
.code
.startup
mov ax,03
int 10H ;crean screen
mov ax,0b800H
mov es,ax
mov si,offset mes1
xor di,di
mov ah,82H
Next_char:
lodsb
stosw
cmp al,'!'
jnz Next_char
mov ah,0 ;any key exit program
int 16H
.exit
end
;use masm611 to compile ,for example
;ml XXX.asmTop
12 楼dongjianguo(爱国者)回复于 2003-06-05 21:31:16 得分 0
我开始和你一样的,多看就行了,一便一便的看,直到看懂为止Top
13 楼zxy1492(柳暗花明又一坑)回复于 2003-06-05 22:56:28 得分 2
呵呵,我学汇编才几周,
刚开始也不知道怎么办
后来通过
问老师,和同学讨论
慢慢知道怎么做了
我们老师说汇编考验的是
一个人的 耐心,细心和信心
另外我想
你自己一个人看书去学汇编
不如和同学多讨论来的快
Top
14 楼dddeee(dddeee)回复于 2003-06-06 11:05:02 得分 0
真的谢谢大家的回复与建议,我会耐心地学汇编,,
我觉得我们的那个课本讲的不好,又去买了一本,但是发现以前那本的叫《IBM-PC汇编语言程序设计》,后买的叫《IBM-PC宏汇编语言程序设计》,多了一个宏字。。我觉得这一本好懂一些,但是它是不是和我以前那本讲的内容是一样的?(宏汇编与汇编是不是一样的?)如果我看后一本,是不是等于我在看前一本呢?汇编与宏汇编是什么关系?Top




