汇编程序:判断素数

data segment
	va1 db 'The data is a prime number!$'
	va2 db '-1$'
data ends

code segment
	assume cs:code,ds:data
start:
	mov ax,data
	mov ds,ax

	call decibin  
	call crlf
        
	call judge
	call crlf
	mov ah,4ch
	int 21h


decibin proc near
	mov bx,0
newchar:
	mov ah,1
	int 21h
	sub al,30h
	jl exit
	cmp al,9
	jg exit
	cbw
	xchg ax,bx
	mov cx,10
	mul cx
	xchg ax,bx
	add bx,ax
	jmp newchar
exit:
	ret
decibin endp
judge proc near
	mov cx,bx
	sub cx,2 
	cmp bx,2
	jle print1
        mov dl,1
jud:

	mov ax,bx
	inc dl
	div dl
	cmp ah,0
	jz print2
	loop jud
	jmp print1
print1:
	mov ah,09h
	lea dx,va1
	int 21h
	ret
print2:
	mov ah,09h
	lea dx,va2
	int 21h 	
ret
judge endp

crlf proc near
	mov dl,0dh
	mov ah,2h
	int 21h
	mov dl,0ah
	mov ah,02h
	int 21h

ret
crlf endp

code ends
	end start







调用子程序判断素数

思路:只能被1和它本身整除的数叫做素数,假设输入数X(十进制)

1.先将我们输入的字符转换为10进制对应的数存入BX

2.判断是否小于2:如果这个数是2或1,则一定是素数

3.从2开始除到X-1,判断每一次的余数是否为0

4.若有一次的余数为0,则不是素数

5.若余数都不为0,循环次数为X-2,则是素数

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值