从键盘接收一个无符号数0-65535,以回车键结束,判断该数是否为质数,若是则输出 ;THIS IS A PRIME NUMBER!,若不是则输出THIS IS NOT A PRIME NUMBER!

;从键盘接收一个无符号数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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值