解释下面一个汇编程序每一行代码的意思功能.
1个回答
展开全部
DATAS
SEGMENT
;数据段定义伪指令,数据段名为DATAS
STRING
DB
'Hello
World!',13,10,'$'
;一个字符串以$结尾
DATAS
ENDS
;数据段结束
CODES
SEGMENT
;代码段定义
ASSUME
CS:CODES,DS:DATAS
;利用ASSUME伪指令指定某个段分配给哪一个寄存器,它并没有把段地址装入段寄存器,所以一般在代码段开始处,还必须把段地址装入相应的段寄存器(如DS)中。但是代码段和堆栈段不需要这样,CS、SS是由系统负责设置的
START:
MOV
AX,DATAS
;取段地址送入AX
MOV
DS,AX
;把段地址装入DS
LEA
DX,STRING
;LEA装入有效地址。将STRING的有效地址(或段内偏移量)送入DX,此时DX就指向了STRING所对应的一个存储单位
MOV
AH,9
INT
21H
;调用21H中断的9号功能。9号功能用于显示字符串,即在屏幕上显示由DX指向的字符串(即STRING指向的字符串),汇编语言规定,9号功能显示符串以'$'
结束。13,10(0DH,0AH)是回车和换行符的ASCII码。
MOV
AH,4CH
INT
21H
;调用21H中断的4CH功能,即返回到DOS
CODES
ENDS
;代码段结束
END
START
;从START处开始执行指令
总结:该程序就是将以STRING为首地址的字符串利用9号功能号输出显示在屏幕上,即在屏幕上显示Hello
World!并回车换一行。通常我们输出完一串数据或者字符串都是需要回车换一行的。
注:21H中断9号功能的使用要点
1、被显示的字符串应该以'$'作为结束符号
2、把要被显示字符串所在的首地址赋给DX
SEGMENT
;数据段定义伪指令,数据段名为DATAS
STRING
DB
'Hello
World!',13,10,'$'
;一个字符串以$结尾
DATAS
ENDS
;数据段结束
CODES
SEGMENT
;代码段定义
ASSUME
CS:CODES,DS:DATAS
;利用ASSUME伪指令指定某个段分配给哪一个寄存器,它并没有把段地址装入段寄存器,所以一般在代码段开始处,还必须把段地址装入相应的段寄存器(如DS)中。但是代码段和堆栈段不需要这样,CS、SS是由系统负责设置的
START:
MOV
AX,DATAS
;取段地址送入AX
MOV
DS,AX
;把段地址装入DS
LEA
DX,STRING
;LEA装入有效地址。将STRING的有效地址(或段内偏移量)送入DX,此时DX就指向了STRING所对应的一个存储单位
MOV
AH,9
INT
21H
;调用21H中断的9号功能。9号功能用于显示字符串,即在屏幕上显示由DX指向的字符串(即STRING指向的字符串),汇编语言规定,9号功能显示符串以'$'
结束。13,10(0DH,0AH)是回车和换行符的ASCII码。
MOV
AH,4CH
INT
21H
;调用21H中断的4CH功能,即返回到DOS
CODES
ENDS
;代码段结束
END
START
;从START处开始执行指令
总结:该程序就是将以STRING为首地址的字符串利用9号功能号输出显示在屏幕上,即在屏幕上显示Hello
World!并回车换一行。通常我们输出完一串数据或者字符串都是需要回车换一行的。
注:21H中断9号功能的使用要点
1、被显示的字符串应该以'$'作为结束符号
2、把要被显示字符串所在的首地址赋给DX
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询