DATA SEGMENT
STRING DB 'Integers that are divisible by 2 and 3 below 100 are:',0DH,0AH,'$' ;装入字符串
NUM DB 100 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET STRING
MOV AH,09H ;显示字符串'Integers that are divisible by 2 and 3 below 100 are:
INT 21H
MOV BX,96 ; 赋初值(从96开始循环)
MOV NUM,6 ; 赋初值(以6为模)
CYCLE:
MOV AX,BX
DIV NUM
CMP AH,0 ; 如果余数为零 跳转到SHOW段(AH存余,AL存商)
JZ SHOW
DEC BX ;自减一
CMP BX,05H ;判断减一后的值是否等于5
JNZ CYCLE ;不是5,继续循环
JMP EXIT ;是5, 退出
SHOW:
MOV AX,BX ; 将被除数打入AX备用(之后对AX模运算)
MOV CL,0AH ; 10->CL
DIV CL ; 除10运算,求十进制的个位
MOV DH,AH ; AL存余,AH存商(模10的余数和商)
MOV DL,AL
CMP AL,0 ; 除10余数为零(原来BX中的数是10的整数倍)
JZ SHOW1
ADD DL,30H ; 打印十进制数的ASC码?????为什么是这样?
MOV AH,02H
INT 21H