问题
统计一个16位二进制数中1的个数,并将结果以十六进制形式显示在屏幕上,用COM格式实现。
代码
code segment
assume cs:code
org 100h
main proc near
mov al,0f0h ;假设16位二进制数为f0
lea dx,hintoutput1;输出提示语
mov ah,09h
int 21h
lea dx,crlf;回车换行
mov ah,09h
int 21h
mov cl,4
rol al,cl
mov dl,al
and dl,0fh
ADD DL,30H
CMP DL,39H
JBE L4 ;若是0~9,则直接输出
ADD DL,07H ;若是A~F,再加上7,然后输出
L4: MOV AH,02H
INT 21H
mov al,0f0h
mov dl,al
and dl,0fh
add dl,30h
cmp dl,39h
jbe L3 ;若是0~9,则直接输出
add dl,07h ;若是A~F,再加上7,然后输出
L3: MOV AH,02h
INT 21H
lea dx,crlf;回车换行
mov ah,09h
int 21h
lea dx,hintoutput2;输出提示语
mov ah,09h
int 21h
lea dx,crlf;回车换行
mov ah,09h
int 21h
mov al,0f0h
mov cx,8
mov dl,0
L2:
rol al,1
mov bl,al
and bl,00000001b
cmp bl,1b
jz L1
inc dl
L1:
loop L2
add dl,30h
mov ah,02h
int 21h
mov ax,4c00h
int 21h
main endp
hintoutput1 db "hexadecimal:$";输入提示语
hintoutput2 db "The number one:$";输入提示语
crlf db 0ah,0dh,'$';回车换行符
code ends
end main