美文网首页
汇编 打印素数表

汇编 打印素数表

作者: puzzledsky | 来源:发表于2017-11-21 13:54 被阅读0次

    采用的是普通筛选法,建数组标记,值为1时表示素数,
    在打印的时候先低位进栈再出栈输出
    运行效果是这样的



    不知道怎么调缓冲区大小所以这个素数表不能往上翻......

    由于是练习加上学汇编不久,代码有点糟糕,不过还是分享一下

    .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
    

    相关文章

      网友评论

          本文标题:汇编 打印素数表

          本文链接:https://www.haomeiwen.com/subject/hmxwvxtx.html