求用汇编写一程序(很简单!)

来源:百度知道 编辑:UC知道 时间:2024/05/09 09:44:22
由键盘输入一个字符,显示字符并统计该字符ASCII码中"1"的个数,
显示在屏幕上,程序不断循环,每输入一个字符就执行以上操作.如果输入的是"E",
程序退出. 要求有注释! 谢谢!

这是一个二重循环结构的程序
外层循环:控制读入字符,并判断是不是“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