統計二進制中1的個數(彙編)

data segment
    str db 'the result is:$'
data ends  


code segment
    assume cs:code,ds:data
start:
    mov ax,data         
    mov ds,ax
    
    mov dx,offset str
   
    mov ah,09h    ;輸出字符串的功能,但是使用前必須將字符串的地址放到dx中  lea dx str 或者 mov dx,offset str
    int 21h
    
    mov ax,0ffffh ;初始化
    mov cx,16      ;循環變量
    mov dl,0       ;統計1的個數
    
next:
    
    rol ax,1     ;循環左移    
    
    jnc next1    ;表示cf=0,則跳轉到next1
    
    inc dl     ;計數
next1:
    dec cx
    jnz next
    
    mov al,dl
    aam        ;調整
    
    push ax     ;先將這個ax的值保存在棧中
    
    mov dl,ah     ;查看高位的值
    add dl,30h   ;數字+30h編程字母  0的ASCII碼30h
    mov ah,02h     ;ah放2,是2號功能,字符輸出,並且要輸出的字符是已經放在dl裏面的
    int 21h
    
    pop ax
    mov dl,al
    add dl,30h 
    
    mov ah,02h
    int 21h
    
code ends
    end start
    
    
    

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章