统计二进制中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
    
    
    

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值