主题:5555 学了几周汇编了 还是没有入门(已经解决)
风一般的女孩
[专家分:50] 发布于 2006-12-15 12:00:00
汇编真的是很难入门啊 都开了几周课了 还是一点都不懂 希望大家帮我解释一些入门级别的问题
代码段是这样的
DATA SEGMENT
BUF DB 'HOW ARE YOU!'
DATA ENDS
其中数据段有个句子是这样
LEA DX,BUF
请大家解释一下 这两个句子 主要是代码段那个
回复列表 (共38个回复)
21 楼
wenzhuo [专家分:170] 发布于 2006-12-03 17:49:00
DB 200DUP(0)是分配200个初值为0的字节单元,每个0占一个字节单元
定义了堆栈段,就是使存入的数据有了先进后出的原则,如果程序不要求数据的先进后出,最好不要定义堆栈段。
MOV AX,DATA
MOV DS,AX
是将DATA装入数据段,也可以像你那样说
LEA DX,字符串首偏移地址
MOV AH,9
INT 21H是一条指令,叫做9号调用,作用是将以DX为首偏移地址的字符串送显示器显示
MOV AH,4CH
INT 21H 这个是结束程序的代码,前面没有INT21h,你看见的一定是DOS系统功能调用的后一部分,9号调用就是一个DOS系统功能调用
LEA是传送偏移地址指令
22 楼
下坑不沉地 [专家分:20] 发布于 2006-12-06 17:07:00
不要急嘛,我还有两周就要结课了,都没怎么急,这个东西要慢慢来,急是没有用滴。
23 楼
yclz [专家分:1520] 发布于 2006-12-06 17:46:00
MOV AH,9 这个有什么用呢?
还有
MOV AH,4CH
INT 21H 这个是结束程序的代码吧 但这个代码之前也有一个INT 21H
这又有什么用呢
好久没看汇编了,正在重新拾,好像是中断吧,不知道记得对不对.
24 楼
学好编程 [专家分:30] 发布于 2006-12-08 23:11:00
呵呵,别急慢慢来
25 楼
qwy123 [专家分:230] 发布于 2006-12-09 01:05:00
LEA DX,BUF
MOV AH,9
INT 21H
这三句是9号调用,功能是输出字符串这里即输出HOW ARE YOU!
MOV AX,DATA
MOV DS,AX
这两句是把数据段的段首址送入DS
MOV AH,4CH
INT 21H
这个是结束程序的代码
你所说的它上面的那个INT 21H就是我前面说的9号调用
书上有,你找到看看吧
26 楼
七夜飘雪 [专家分:500] 发布于 2006-12-11 22:17:00
DB 200 DUP(0)是初师化站,站不初师化有作用么:?
这是重复定义200个数据0 每个0占一个字节
200是站的大小
MOV AH,4CH
INT 21H 是调用DOS功能返回DOS ,DOS的功能有很多够你学的了,就是说AH的值不同就有不同的功能(如1 2 3 9 A B C )等等
MOV AX,DATA
MOV DS,AX
这个 东西就是你的基础问题 了
MOV AH,9 也是最基本的就是把9赋给AH
你基础不好,太烂了,跟我差不多,努力吧!
27 楼
三石小子 [专家分:80] 发布于 2006-12-13 08:42:00
呵呵,我也是刚学汇编,也是不太懂,那个 STACK 是定义堆栈段的,200 是预先留出的空间吧,换个数也可以的, 堆栈段是可以不用定义的,编译时也不会出错的
MOV AX,DATA
MOV DS,AX
是把数据段传送给DS,程序的前两句一般都这样写的
MOV AH,9 是调用9号 的字符串输出功能将字符串输出
MOV AH,4CH
INT 21H 是中断程序,并返回DOS系统
28 楼
七夜飘雪 [专家分:500] 发布于 2006-12-16 14:55:00
DB 200 DUP(0)
这是重复定义200个数据0 每个0占一个字节
MOV AH,9
INT 21H 用来输出字符串,但是要用‘$‘结束
MOV AH,4CH
INT 21H 这个是结束程序的代码语,是返回DOS
MOV AX,DATA
MOV DS,AX
这个是把数据段的地址送给DS 但是SS,CS不要,因为它是程序执行时自动初始化
INT 21H 是中断调用,概括AH的内容来决定它执行什么功能,有很多功能,如:AH为1,,7,8,A,C,B和2,9等多的很,
29 楼
七夜飘雪 [专家分:500] 发布于 2006-12-16 14:57:00
?????????
30 楼
pcan [专家分:30] 发布于 2006-12-17 00:44:00
堆栈段为什么要下面这句话呢?
DB 200 DUP(0)
这是重复定义200个数据0 每个0占一个字节 ? 是这样吗?
这段代码有什么用 为什么这个地方是200?
[color=C0C0C0][size=4]回答:开辟200个空间,为下面的数据[/size][/color]
MOV DS,AX
这个是把数据段的地址送给DS吧 我在书上面看了 数据段和附加段需要这样
MOV AH,9 这个有什么用呢?
[color=0000FF][size=5]答:mov ah,9
int 21h
都是输出字符串的语句.[/size][/color]
还有
MOV AH,4CH
INT 21H 这个是结束程序的代码吧 但这个代码之前也有一个INT 21H
这又有什么用呢
哎 一下子问了这么多问题有点乱 请你帮我解释下好吗? 谢了
我来回复