任务:在屏幕上输出A-Z共26个大写英文字母
CODE SEGMENT
ASSUME CS:CODE
START:
MOV CX,001AH;英文字母一共26个,16进制为001AH,传入CX预设循环次数
MOV DL,41H;A在ASCII码表中是第65个,转换成16进制为41H
MOV AL,DL;将DL中的数据传给AL
A1:
MOV AH,02H;02H功能号调用,将DL中的内容输出
INT 21H;DOS功能调用
INC DL;DL中ASCII码值加一
PUSH CX;将CX压栈,保留数据
MOV CX,0002H;将一个值传给CX,这行命令用于控制每两个字符显示之间的延时
A2:
LOOP A2;不断循环A2,即循环第12行代码中赋给CX值的次数
POP CX;延时完成,将栈顶元素弹出到CX
DEC CX;CX减一
JNZ A1;如果CX不为0,跳转到A1
MOV AX,4C00H;返回DOS系统功能调用
INT 21H
CODE ENDS
END START
本节指令:
MOV DL,41H
MOV AH,02H
INT 21H
功能号02H,将DL中的值对应的ASCII码表字符输出到屏幕。
此处CX被使用过两次,分别是控制延时的LOOP A2指令和输出26个字符的次数控制指令。
为了保留CX的当前值,使用了
PUSH CX
POP CX
指令用于保护CX中的值。
其他使用到的指令
JNZ(Jump if Not Zero)
非零时跳转。
最终结果