.MODEL SMALL
.Data
mass DB 'print the number(0~2599):',0dh,0ah,'$'
string1 DB 'YES',0dh,0ah,'$'
string2 DB 'NO', 0dh,0ah,'$'
count DW 5
num DW 1009
cnt DW 1;初始化为1
.code
MAIN PROC FAR
MOV AX ,@Data
MOV DS ,AX
;--------------------------------
mov dx , offset mass;提示输入
mov ah , 9
int 21h
;-----键盘输入十进制数放在bx中
mov bx , 0
newchar:
mov ah, 1 ;键盘输入指令
int 21h
sub al, 30h
jl exit ; <0退出
cmp al, 9
jg exit ; >9退出
cbw
xchg ax, bx
mov cx, 10 ;先乘以10
mul cx
xchg ax, bx
add bx, ax
jmp newchar
;----
exit:
mov num , bx;将输入的数放进赋值给num
;----判断素数
next:
inc cnt;每次循环就加1
mov ax , cnt;将cnt放进ax中
cmp ax , num;如果num为2,直接跳转到yes
je find
mov ax , cnt;将cnt乘方放进ax中
mul cnt
cmp num , ax;判断是否已经遍历所有可能
jl find ;如果已经遍历的所有可能则跳转到yes
mov ax , num;否则将num放进ax,然后除以cnt,判断余数是否为0
div cnt
cmp dx , 0;判断余数是否为0,为0说明不是素数
jnz next;不为0继续循环
mov dx , offset string2;为零就将输出no
jmp out1;无条件跳转
find:
mov dx , offset string1
out1:
mov ah , 9
int 21h
;------------------------------
;exit:
mov ax,4C00H
int 21h
Main endp
end
文章标题 汇编 : 判断素数
最新推荐文章于 2021-05-04 10:52:14 发布