在屏幕上输出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