用Eratosthenes筛法输出小于50000的所有素数。
- include io.inc
- .model small
- .stack
- .data
- array1db 50001 dup(0);初始化
- .code
- .startup
- mov bx,2;从2开始计算
- ;mov cx,lengthof array1
- mov cx,20001
- sub cx,2;相应的次数cx减2
- mov ax,50000
- mov bp,0
- mov array1[1],1;1不是素数
- l1:cmp array1[bx],0
- jne label1;比较,如果不为0,既不是素数,则跳到label1
- mov bp,bx
- l2:add bp,bx
- cmp ax,bp
- jb label1
- mov array1[bp],1 ;给bx的倍数置1
- jmp l2
- label1:add bx,1
- loop l1
- ;以下是输出
- ;mov cx,lengthof array1
- mov cx,50001
- mov bx,1
- sub cx,1
- show:mov al,array1[bx];显示数组的值
- add bx,1
- call dispuib
- loop show
- call dispcrlf
- ;mov cx,lengthof array1
- mov cx,50001
- mov bx,1
- sub cx,1
- show1:mov al,array1[bx];显示50000之内的素数
- cmp al,0
- jne lb2
- mov ax,bx
- call dispuiw
- push ax
- mov dl,9;水平制表符
- mov ah,02h
- int 21h
- pop ax
- lb2: add bx,1
- loop show1
- .exit
- end
-