1.DOS系统功能调用格式
MOV AH,调用号
设置入口参数
INT 21H;只有执行了这条指令才能实现真正的功能
2.INT 21H功能使用说明
①入口:AH = 00H 或AH = 4CH
? ? 功能:程序终止
②入口:AH = 02H,DL = 数据
? ? 功能:写DL中数据到显示屏
3.LOOP指令
指令格式:LOOP 指令
指令执行:①(CX) = (CX) - 1
? ? ? ? ? ? ? ? ? ②判断CX中的值,不为0则转至标号处执行循环;若为0则顺序向下继续执行。
4.汇编程序
;功能描述:使用INT 21H功能调用实现屏幕显示A~Z共26个字母
SSTACK SEGMENT STACK ;堆栈段定义
DW 64 DUP(?) ;预留64个字单元
SSTACK ENDS
CODE SEGMENT ;代码段定义
ASSUME CS:CODE,SS:SSTACK ;将代码段的首地址与CS寄存器关联,将堆栈段的首地址与SS寄存器关联
START: MOV CX,001AH ;把循环次数26存入寄存器CX的低8位
MOV DL,41H ;把字母A的ASCII码送入DL寄存器
A1: MOV AH,02H ;为在显示屏上显示DL寄存器中的内容做准备
INT 21H ;INT 21H功能调用,将DL中内容显示在显示屏上
INC DL ;DL寄存器中内容加1,即DL中信息变为B的ASCII码
PUSH CX ;将CX寄存器中的内容入栈,保护信息
MOV CX,0002H ;设置延时时间为0002H,即过了延时时间0002H便开始显示下一个字母
A2: LOOP A2 ;延时
POP CX ;将CX寄存器中内容出栈
DEC CX ;CX中内容减1即计数值减1
JNZ A1 ;CX寄存器中内容不为0转A1即还没有显示完26个字母(此处理解可能存在偏差)
MOV AX,4C00H
INT 21H ;程序终止
CODE ENDS
END START
注意:在代码中必须使用ASSUME伪指令把代码段的首地址关联到CS寄存器。数据段关联到DS寄存器。在程序运行时,CS寄存器会自动加载代码段地址的值,而DS寄存器则不会,所以在程序开始时,需要手动将数据段的首地址保存到DS。
5.结果显示
|