DSEG SEGMENT
DATA DB 1,2,3,4,5,6,7,8,9
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
MOV BL,0 ;BL置为零
COL: INC BL ;BL+1
LEA SI,DATA ;设置目的操作数指针
MOV CH,BL
LINE: MOV AL,BL
MOV BH,[SI] ;[SI]为SI指向的内存单元
MUL BH ;BH与AL相乘
MOV DH,AL
MOV DL,BL
ADD DL,30H ;十进制显示第一个数
MOV AH,02H
INT 21H
MOV DL,'*' ;显示乘号
MOV AH,02H
INT 21H
MOV DL,BH
ADD DL,30H ;十进制显示乘后的结果
MOV AH,02H
INT 21H
MOV DL,'='
MOV AH,02H
INT 21H
MOV DL,DH
MOV CL,4 ;CL为计数器
SHR DL,CL ;逻辑右移四位
CMP DL,9 ;DL与9进行比较
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,DH
AND DL,0FH ;把无用位清零
CMP DL,9 ;两个数进行比较
JA M2 ;DL大于9跳转M2
JMP M4 ;否则无条件跳转M4
M2: ADD DL,7H ;DL的ASCII码加7
M4: ADD DL,30H ;DL的ASCII码加30
JMP OUT2 ;无条件跳转OUT2
OUT2: MOV AH,02H
INT 21H
MOV DL,' '
MOV AH,02H
INT 21H
INC SI
DEC CH ;自减指令,CH自减1
JNZ LINE ;测试零标志,ZF=0
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H ;屏幕回车换行,光标移到下一行首字符位置
CMP BL,8 ;两个数进行比较
JNA COL ;小于等于,跳转COL
MOV AH,4CH
INT 21H
CSEG ENDS
END START
上一页 [1] [2]