You are on page 1of 4

INCLUDE Irvine32.

inc

.data
repeatStr db "Doriti sa introduceti alta cifra ? (1 - Da, 0 - Nu) -> ", 0
inputString BYTE "Introduceti sirul: ", 0
rezultString db "Rezultatul in decimal = ", 0
sirInit db "Sirut initial in binar: ", 0
rezultBin db "Rezultatul in binar: ", 0
hexNum DWORD ?
decStr db 10 DUP(?)
hexStr DWORD ?

rest byte ?
cat byte ?
count byte 0d
len byte 0d
temp db ?

.code
main PROC

again:

mov edx, OFFSET inputString


call WriteString
mov len, 0d
mov count, 0d

mov hexStr, eax


mov esi, OFFSET decStr
mov cx, LENGTHOF decStr

mov edi, OFFSET decStr


mov cx, LENGTHOF decStr

xor eax, eax


mov hexNum, 0
call ReadHex
mov hexNum, eax

; First difit
mov eax, hexNum
shr ah, 4
mov temp, ah
;add edi, TYPE decStr
add count, 1d
cmp ah, 10
jae convert
mov bl, temp
mov [edi], bl
add len, 1d

; Second digit
next1:
mov eax, hexNum
and ah, 0fh
mov temp, ah
add edi, TYPE decStr
add count, 1d
cmp ah, 10
jae convert
mov bl, temp
mov [edi], bl
add len, 1d

; Third digit
next2:
mov eax, hexNum
shr al, 4
mov temp, al
add edi, TYPE decStr
add count, 1d
cmp al, 10
jae convert
mov bl, temp
mov [edi], bl
add len, 1d

; Fourth digit
next3:
mov eax, hexNum
and al, 0fh
mov temp, al
add edi, TYPE decStr
add count, 1d
cmp al, 10
jae convert
mov bl, temp
mov [edi], bl
add len, 1d
jmp ex

convert:

mov ax,WORD ptr temp


mov bl, 10
div bl
mov rest, ah
mov cat, al
mov bl, cat
mov [edi], bl
add len, 1d
mov bl, rest
add edi, TYPE decStr
mov [edi], bl
add len, 1d
cmp count, 1d
je next1
cmp count, 2d
je next2
cmp count, 3d
je next3

ex:

call Crlf
mov cl,1
mov edx, OFFSET rezultString
call WriteString
printDec:
xor eax, eax
mov al, [esi]
mov ebx, TYPE decStr
call WriteDec
add esi, TYPE decStr

inc cl
cmp cl,len
jle printDec

call Crlf
mov edx, OFFSET sirInit
call WriteString
xor eax, eax
mov eax, hexNum
call WriteBin

mov cl,1
call Crlf
mov edx, OFFSET rezultBin
call WriteString
mov esi, OFFSET decStr
printRezBinary:

xor eax, eax


mov al, [esi]
mov ebx, TYPE decStr
call WriteBinB
mov al, ' '
call WriteChar
add esi, TYPE decStr
inc cl
cmp cl,len
jle printRezBinary

call Crlf
mov edx, OFFSET repeatStr
call WriteString
call ReadChar
call Crlf
call Crlf
cmp al, '1'
mov cl, 1
je again
Call Crlf
Call Crlf
exit
main ENDP
END main

You might also like