找素數

.model small

.stack 200h


.CODE

;***************************************

;顯示正整數子程序

;功能描述:以十進制方式輸出任意的16位正整數

;入口參數:AX=要輸出的整數

write proc

  push si

  push bx

  push cx

  push dx

  xor si,si

mov bx,10

tostring:

   xor dx,dx

div bx

add dx,30h

push dx

inc si

test ax,ax

jnz tostring

mov cx,si

display:

pop dx

mov ah,2

int 21h

loop display

pop dx

pop cx

pop bx

pop si

ret

write endp

;***************************************


;***************************************

;入口參數:AX=所要判斷的數

;出口參數:BX=1或0,1代表是素數,0則不是素數

isprime proc

   push ax

   push cx

   push dx

   push si

   push di

   mov si,ax

   mov cx,2

loop1:   

   mov di,ax

   xor dx,dx

   div cx

   mov ax,di

   test dx,dx

   jz  decide

   inc cx 

   cmp cx,si

   jbe loop1

decide:   

   cmp cx,ax

   jb not_prime   

   mov bx,1

   jmp over

not_prime:   

   xor bx,bx

over:   

   pop di

   pop si

   pop dx

   pop cx

   pop ax

   ret

isprime endp

;***************************************



START:

mov ax,@data

mov ds,ax

xor si,si

mov cx,9999

loop2: 

mov ax,cx

call isprime

test bx,bx

jz next

call write

inc si

cmp si,10

jnz tab

mov dl,0ah

mov ah,2

int 21h

mov dl,0dh

mov ah,2

int 21h

tab: 

mov dl,' '

mov ah,2

int 21h

next: 

dec cx

dec cx

cmp cx,2

jg  loop2 


mov ah,1

int 21h

mov ah,4ch

int 21h


END START   

發佈了40 篇原創文章 · 獲贊 8 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章