問題
統計一個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