设计并调试程序,完成接收输入的无符号十进制数,将其转化为二进制数,并以二进制的形式在显示器上显示。

2024-12-14 07:45:04
推荐回答(2个)
回答1:

code segment
assume cs:code
main proc far
start:
push ds
sub ax,ax
push ax
mov bx,0
mov dx,0
mov cx,0 ;初始化
mov ah,1
int 21h ;读入第一位
sub al,'0' ;减去30H
mov dl,10
mul dl ;乘以10
mov bl,al ;放到bl中
mov ah,1
int 21h
sub al,'0'
add bl,al ;此时dl中为2进制表示

;以下换行

mov dl,13
mov ah,2
int 21h
mov dl,10
mov ah,2
int 21h

;以下为以16进制形式输出

mov cl,4
rol bl,cl ;左移四位以输出高位的16进制表示
mov dl,bl
and dl,0Fh
add dl,'0'
cmp dl,'9'
jng next1
add dl,7
next1:
mov ah,2
int 21h

rol bl,cl ;再左移四位以输出低位的16进制表示
mov dl,bl
and dl,0Fh
add dl,'0'
cmp dl,'9'
jng next2
add dl,7
next2:
mov ah,2
int 21h

ret
main endp
code ends
end start

回答2:

#include
#include
#define NUM 10
long long number[10];
void out(int n)
{
long long c,b;
int a;
char o[64];
a=64;o[a]='\0';
c=number[n];
while(c)
{
a--;
b=c&0x00000001;
if(b==1)
{
o[a]='1';
}
else
{
o[a]='0';
}
c=c/2;
}
printf("%s\n",&o[a]);
}
int main()
{
int n;
for(n=0;n {
scanf("%lld",&number[n]);
}
for(n=0;n {
printf("%lld ",number[n]);
out(n);
}
//getch();
return 0;
}