功能:PRINT子程序在屏幕上显示AL寄存器中的内容,0-9则在屏幕上显示0-9,大于9的在屏幕上显示英语字母。
DATA SEGMENT
TABLE DB 1,2,8,9, 10,11,34,35, 36,37,40,41, 42,43,66,67
;1-9 显示 1-9
;10-35 显示A-Z
;36-41 显示其他字符
;42-67 显示a-z
NUM EQU ($-TABLE)
DATA ENDS
CODE SEGMENT
ASSUME: CS:CODE, DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV CX,NUM ;CX保存TABLE中数字个数,用于循环判断
LEA SI,TABLE ;地址指针SI指向TABLE储存区首地址
L: MOV AL,[SI]
CALL PRINT
INC SI
LOOP L
MOV AH, 4CH
INT 21H
;显示子程序
PRINT PROC NEAR
PUSH DX
MOV DL,AL
CMP DL,9 ;判断是否 <=9
JLE ADD1 ; 是 ---> ASCII码加30H
JNLE ADD2 ;不是 ---> ASCII码加37H
ADD1: ADD DL,30H
JMP PRI
ADD2: ADD DL,37H
PRI: ;显示
MOV AH,02H
INT 21H
;加回车符
MOV DX,0DH
INT 21H
;加换行符
MOV DL,0AH
INT 21H
POP DX
RET
PRINT ENDP
CODE ENDS
END START
结果:
对应关系:1-9 显示 1-9
10-35 显示A-Z
36-41 显示其他字符
42-67 显示a-z