HI...

would anyone give me some ideas in converting decimal to binary...?...i have some ideas but its hard for me to implement it...i just came up with the wrong code...i'm using a86 assembly language...

.

## All 8 Replies

You mean like a string say "128" into a numeric value say 128 (or 0x80, or 10000000)

If you posted your code, we might have a better idea what it is you're trying to do, and maybe even suggest a quick fix to your own work.

yup....

here is my code....its not finish yet..i have the idea but implementing it into a code is a difficult one ...

begin:
INT 20H

lea dx,msg
mov ah,9
int 21h

mov ah,1
int 21h
mov bl, al
int 21h

mov cl, 30h
sub bl, cl
sub al, cl
mov dl, al
mov ax, 0
mov al, 10
mul bl
mov bl, dl
call divide

divide:
mov al, 2
div bl
push al

LOOP DIVIDE

// this portion is for the try again...

END_NA:

lea dx, msg1
mov ah, 9
int 21h

mov ah, 1
int 21h

cmp al, 'y'
JNE BEGIN_CHECKING1

cmp al, 'Y'

BEGIN_CHECKING1:

cmp al, 'n'
;	jne END_NA
je END_NA_JUD

cmp al, 'N'
;	jne END_NA
je END_NA_JUD

END_NA_JUD:

mov ah, 4ch
int 21h

msg db 0ah,0dh,"Please enter a number: \$"
msg1 db 0ah,0dh,"TRY AGAIN [Y/N] : \$"

divide doesn't return, and even if it did, you'd just run right into it again.

Consider something like

loop:
call print_prompt
call get_input
call convert_to_integer
call divide
call again
jne loop

Write each one in turn.
Post the one you get stuck on.

i've evaluated the code.. but my problem is in the divide section..its not the complete code...i dont know what code to be added on it...

loop:
call print_prompt
call get_input
call convert_to_integer
call divide
call again

print_prompt:
mov ah,09h
lea dx,msg
int 21h
ret

get_input:
mov ah,0ah
lea dx,store_input
int 21h
ret

convert_to_integer:

mov ah,1
int 21h
mov bl, al
int 21h

mov cl, 30h
sub bl, cl
sub al, cl
mov dl, al
mov ax, 0
mov al, 10
mul bl
mov bl, dl
int 21h
ret
divide:
mov al, 2
div bl
mov dl, al
push dx
loop divide
cmp dl,0
pop dx

int 21h
ret

again:
mov dx,offset msg1
mov ah, 9
int 21h
mov ah, 1
int 21h
mov char1,al
cmp al,'y'
je loop
jne end
cmp al,'Y'
je loop
jne end
int 21h
ret

end:

mov ah, 4ch
int 21h

msg db 0ah,0dh,"Please enter a number: \$"
msg1 db 0ah,0dh,"TRY AGAIN [Y/N] : \$"
char1 db ?

store_input db 3 dup()

after on the first looping of the divide...either 1 or 0 will be put in stack...but how it is to be implemented here...that is one of my problem..that i been stuck with...

If you have a 0 or 1, then you need to add decimal 48 to get a '0' or a '1' you can print.

can you do it for me..or where particularly in the code i'll place that decimal 48.?...

that 0 or 1 is serve as its remainder either of t this 2..

thanks for the help....

problem solved.....

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.