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
#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;
}