您的位置:首页 > 其它

文章标题 汇编 : 判断素数

2017-07-01 23:18 411 查看
.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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编