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