账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    用汇编实现统计寄存器AX中的16位二进制数内"0"的个数
    76
    0

    请问一下我这样写哪里错了,运行的时候没有结果

    data segment
    
    data ends
    
    stack segment stack
    dw 20h dup(?)
    top label word
    stack ends
    
    code segment
      assume ds:data,ss:stack,cs:code
      p proc far
    
      mov ax,data
      mov ds,ax
    
      mov ax,stack
      mov ss,ax
      mov sp,top
    
      mov ax,0000111100001111b;给ax赋值
    
      xor dl,dl;dl记录0的个数
      mov bx,10h;循环16次
    
    judge:
      test ax,01h
      jz when0;当ax的最低位为0时就跳转到when0
    
    when1:
      dec bx
      jz printf;当bx=0时就结束循环
      shr ax,1
      jmp judge
    
    when0:
      inc dl;dl记录0的个数
      dec bx;bx减1
      jz printf
      shr ax,1
      jmp judge
    
    printf:
      mov ah,02h
      int 21h
    
    exit:
      mov ah,4ch
      int 21h
    
      p endp
    code ends
      end p
    
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部