这是一个二重循环结构的程序
外层循环:控制读入字符,并判断是不是“E”决定继续循环还是结束;
内层循环:利用左移和判断CF标志位的状态来记录“1”出现的次数。
程序如下,已经调试通过。
cseg segment
assume cs:cseg
begin:
mov ah,1
int 21h;输入一个字符
cmp al,'E'
jz stop;如果是“E”,则转stop
xor dl,dl;记录1个数的寄存器清零
mov cx,8;内层循环8次
next: shl al,1;左移1位,最高为移入CF
jnc skip;如果CF=0,则转到skip
inc dl;cf=1,则dl增1
skip: loop next;cx-1,如果cx不为零,则转到next循环执行
or dl,30h;将1出现的次数转换为相应的ASCII码
mov ah,2
int 21h;调用2号功能显示1的次数
mov dl,0ah
int 21h
mov dl,0dh
int 21h;显示换行回车
jmp begin;转到begin,读入下一个字符
stop: mov ah,4ch
int 21h;程序结束
cseg ends
end begin
温馨提示:内容为网友见解,仅供参考