版权声明: https://blog.csdn.net/weixin_42000150/article/details/80659494
;从键盘接收一个无符号数0-65535,以回车键结束,判断该数是否为质数,若是则输出
;THIS IS A PRIME NUMBER!,若不是则输出THIS IS NOT A PRIME NUMBER!
DATA SEGMENT
PRIME DB 'THIS IS A PRIME NUMBER!',0AH,0DH,'$'
NOPRIME DB 'THIS IS NOT A PRIME NUMBER!',0AH,0DH,'$'
NUM DW 0
CRLF DB 0AH,0DH,'$'
DATA ENDS
STACK SEGMENT PARA STACK
DW 128 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
L0: MOV AH,1 ;接收键盘输入并转化为实际数
INT 21H
CMP AL,0DH
JE L1
XOR AH,AH
SUB AL,30H
PUSH AX
MOV AX,NUM
MOV BX,10
MUL BX
POP DX
ADD AX,DX
MOV NUM,AX
JMP L0
L1: MOV AH,9
LEA DX,CRLF
INT 21H
MOV BX,2 ;质数的判断:小于5的质数直接输出,大于等于5的质数用如下
XOR DX,DX ;方法判定:用该数除2得商S,将该数逐次与2~S相除,若有整除
MOV AX,NUM ;则非质数,若无整除则为质数
CMP AX,1
JE L3
CMP AX,2
JE L3
CMP AX,3
JE L3
DIV BX
MOV CX,AX
L4: XOR DX,DX
MOV AX,NUM
DIV BX ;BX初值为2,以后逐次加1
INC BX
CMP DX,0
JE L2
CMP BX,CX ;若BX大于商S,则为质数
JA L3
JMP L4
L2: MOV AH,9
LEA DX,NOPRIME
INT 21H
JMP EXIT
L3: MOV AH,9
LEA DX,PRIME
INT 21H
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
MAIN ENDP
END START
;THIS IS A PRIME NUMBER!,若不是则输出THIS IS NOT A PRIME NUMBER!
DATA SEGMENT
PRIME DB 'THIS IS A PRIME NUMBER!',0AH,0DH,'$'
NOPRIME DB 'THIS IS NOT A PRIME NUMBER!',0AH,0DH,'$'
NUM DW 0
CRLF DB 0AH,0DH,'$'
DATA ENDS
STACK SEGMENT PARA STACK
DW 128 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
L0: MOV AH,1 ;接收键盘输入并转化为实际数
INT 21H
CMP AL,0DH
JE L1
XOR AH,AH
SUB AL,30H
PUSH AX
MOV AX,NUM
MOV BX,10
MUL BX
POP DX
ADD AX,DX
MOV NUM,AX
JMP L0
L1: MOV AH,9
LEA DX,CRLF
INT 21H
MOV BX,2 ;质数的判断:小于5的质数直接输出,大于等于5的质数用如下
XOR DX,DX ;方法判定:用该数除2得商S,将该数逐次与2~S相除,若有整除
MOV AX,NUM ;则非质数,若无整除则为质数
CMP AX,1
JE L3
CMP AX,2
JE L3
CMP AX,3
JE L3
DIV BX
MOV CX,AX
L4: XOR DX,DX
MOV AX,NUM
DIV BX ;BX初值为2,以后逐次加1
INC BX
CMP DX,0
JE L2
CMP BX,CX ;若BX大于商S,则为质数
JA L3
JMP L4
L2: MOV AH,9
LEA DX,NOPRIME
INT 21H
JMP EXIT
L3: MOV AH,9
LEA DX,PRIME
INT 21H
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
MAIN ENDP
END START