采用的是普通篩選法,建數(shù)組標記浴捆,值為1時表示素數(shù),
在打印的時候先低位進棧再出棧輸出
運行效果是這樣的
不知道怎么調(diào)緩沖區(qū)大小所以這個素數(shù)表不能往上翻......
由于是練習加上學匯編不久魂角,代碼有點糟糕辐怕,不過還是分享一下
.model small
.data
MAX dw 10000 ;打印范圍
num db 11000 dup(1)
maxsi dw 0
.code
main proc far
mov ax,@data
mov ds,ax
mov ax,MAX
mov maxsi,ax
mov dx,offset num
mov si,dx
add si,2
mov cl,1
mov [si],cl
add maxsi,si
mov bx,1
dec si
next:
inc si
cmp si,maxsi
ja L3
inc bx
mov ax,[si]
cmp ax,0
jz next
L1:
add si,bx
cmp si,maxsi
ja L2
mov cl,0
mov [si],cl
jmp L1
L2:
mov si,dx
add si,bx
jmp next
L3:
mov si,offset num
add si,1
mov bx,1
L4:
inc si
inc bx
cmp bx,MAX
ja L7
mov cl,[si]
cmp cl,0
jz L4
mov dx,' '
push dx
mov ax,bx
cwd
L5:
mov cx,10
div cx
push dx
cwd
cmp ax,0
jnz L5
mov ah,02h
again:
pop dx
cmp dx,' '
jz L6
add dl,'0'
int 21h
jmp again
L6:
int 21h
jmp L4
L7:
mov ax,4c00h
int 21h
main endp
end