回 帖 发 新 帖 刷新版面

主题:5555  学了几周汇编了  还是没有入门(已经解决)

汇编真的是很难入门啊  都开了几周课了 还是一点都不懂  希望大家帮我解释一些入门级别的问题

代码段是这样的 

DATA   SEGMENT
BUF    DB 'HOW ARE YOU!'
DATA   ENDS


其中数据段有个句子是这样

LEA DX,BUF

请大家解释一下 这两个句子  主要是代码段那个

回复列表 (共38个回复)

21 楼

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 楼

不要急嘛,我还有两周就要结课了,都没怎么急,这个东西要慢慢来,急是没有用滴。

23 楼

MOV   AH,9  这个有什么用呢?

还有
MOV   AH,4CH
INT   21H   这个是结束程序的代码吧    但这个代码之前也有一个INT   21H
这又有什么用呢  

好久没看汇编了,正在重新拾,好像是中断吧,不知道记得对不对.

24 楼


呵呵,别急慢慢来

25 楼

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 楼

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 楼


呵呵,我也是刚学汇编,也是不太懂,那个  STACK 是定义堆栈段的,200 是预先留出的空间吧,换个数也可以的,  堆栈段是可以不用定义的,编译时也不会出错的
 
MOV   AX,DATA
MOV   DS,AX
是把数据段传送给DS,程序的前两句一般都这样写的

MOV   AH,9   是调用9号 的字符串输出功能将字符串输出

MOV   AH,4CH
INT   21H   是中断程序,并返回DOS系统

28 楼

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 楼

?????????

30 楼


堆栈段为什么要下面这句话呢?
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
这又有什么用呢  

哎   一下子问了这么多问题有点乱 请你帮我解释下好吗?  谢了

我来回复

您尚未登录,请登录后再回复。点此登录或注册