回 帖 发 新 帖 刷新版面

主题:[讨论]请大家帮我分析一个简单的程序

我是个正在自学汇编的新手,看到一个简单的程序有些不明白,请大家帮我分析下,请看下面这段程序。




;一个显示Hello World!程序
DATAS SEGMENT
STRING DB 'Hello World!',13,10,'$'
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA DX,STRING
MOV AH,9
INT 21H

MOV AH,4CH
INT 21H
CODES ENDS
END START


看完后大家能不能告诉我这个程序里的输出语句是什么呀,我搞不清楚汇编是怎么写输出语句的,也没有像c或c++里的printf或cout,它是怎么输出的,谢谢!

回复列表 (共7个回复)

沙发

没人帮我吗

板凳

MOV AH,9
INT 21H

MOV AH,4CH
INT 21H
好象记得使这几句

3 楼


指令:“LEA DX,STRING”的含义就是在标准设备上输出所要显示的信息
        MOV AH,9
        INT 21H
此程序的功能是输出“Hello World!”

4 楼

[quote]
指令:“LEA DX,STRING”的含义就是在标准设备上输出所要显示的信息
        MOV AH,9
        INT 21H
此程序的功能是输出“Hello World!”[/quote]

LEA DX,STRING 的意思不是把string的首地址送给dx吗?怎么成输出了

5 楼


整个指令联系起来看!!

6 楼

[quote][quote]
指令:“LEA DX,STRING”的含义就是在标准设备上输出所要显示的信息
        MOV AH,9
        INT 21H
此程序的功能是输出“Hello World!”[/quote]

LEA DX,STRING 的意思不是把string的首地址送给dx吗?怎么成输出了
[/quote]
LEA DX,STRING ;取STRING的偏移地址送入 dx
mov ah,9      ;调用 DOS中断的中断功能 9 输出 ds*10h+dx 内存中的
int 21h       ;字符串,该串以 '$' 结尾

7 楼

明白了,谢谢。

我来回复

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