[汇编实验_3]SCAU 华南农业大学 输出2-100间所有素数

本文详细描述了一个编程任务,要求编写一个源程序,利用子程序判断2到100之间的整数是否为素数,并输出计算过程,不能直接给出结果。程序包括主函数和两个子程序:一个用于判断素数,另一个用于将十进制整数转换为字符并输出。
摘要由CSDN通过智能技术生成

 在屏幕上输出2-100之间的所有素数(源程序里要求用到子程序判断是否素数,以及用子程序输出十进制整数,要有计算过程,不可以直接抄结果输出)

DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    
    mov cx,98 ;循环98次
	
	mov dl,2  ;先输出一个公认的素数2
    add dl,30h
	mov ah,02
	int 21h
	
	mov ah,2 ;输出一个空格
	mov dl,32
	int 21h

	mov bl,3  ;从3开始
	
legal:
	call judge ;开始循环判断
	loop legal
   
    MOV AH,4CH ;结束程序
    INT 21H
    
judge proc near
	push cx
	push dx
	push ax

	mov cl,1

loop1:
	inc cl      ;cx不断自增
	cmp cl,bl	;直到cx和自身相等,就是除以2~本身的数
	je  shuchu  
	mov ax,bx
	div cl
	cmp ah,0
	jnz loop1
	jmp quit

shuchu:
	call output
quit:
	inc bx
	pop ax
	pop dx
	pop cx
	ret
judge endp

output proc near
	push dx
	push ax
	push cx
	
	xor cx,cx  ;用cx存储10进制数的位数
	mov ax,bx
	
legal3:
	xor dx,dx  ;用dx来保存余数
	mov si,10
	div si
	
	push dx
	inc cx
	or ax,ax
	jz legal4
	jmp legal3

legal4:
	pop dx
	add dx,30h
	mov ah,02
	int 21h
	loop legal4
	
	mov ah,2   ;输出一个空格
	mov dl,32
	int 21h

	pop cx
	pop ax
	pop dx
	RET
output endp
    
CODES ENDS
    END START





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值