用汇编实现统计寄存器AX中的16位二进制数内"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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论