Hi,
I need to write a program (on emu8086), which would convert hexadecimal number into decimal number. I have to do it until tomorrow, but I don't know where to start. Please, someone, help me to write that program. :'(:
Hi,
I need to write a program (on emu8086), which would convert hexadecimal number into decimal number. I have to do it until tomorrow, but I don't know where to start. Please, someone, help me to write that program. :'(:
format PE GUI 4.0
include 'win32a.inc'
mov esi,shex
mov ecx,0
mGotoEnd:
cmp byte [esi],0
je mGotoEndEx
inc esi
inc ecx
jmp mGotoEnd
mGotoEndEx:
dec esi
mov edx,0
mov ebx,1
mConvertToNumber:
mov eax,0
mov al,[esi]
mov ah,'0'
cmp al,'A'
jl mDigit
mov ah,'A'-10
mDigit:
sub al,ah
mov ah,0
push edx
mul ebx
pop edx
add edx,eax
mov eax,16
push edx
mul ebx
pop edx
mov ebx,eax
dec esi
loop mConvertToNumber
mov edi,sdec
push edi
mov eax,edx
mov ecx,0
mConvertToDec:
mov edx,0
mov ebx,10
div ebx
mov byte [edi],dl
add byte [edi],'0'
inc ecx
cmp eax,0
je mConvertToDecEx
inc edi
jmp mConvertToDec
mConvertToDecEx:
pop edi
mov esi,edi
mov edx,0
mov eax,ecx
mov ebx,2
div ebx
add esi,ecx
dec esi
mov ecx,eax
mBackOrder:
mov al,[esi]
xchg [edi],al
mov [esi],al
inc edi
dec esi
loop mBackOrder
invoke ExitProcess,0
shex db '499602D2',0;positive hexadecimal CAPITALS
sdec db 256 dup(?);decimal (should be 1234567890)
data import
library kernel32,'KERNEL32.DLL'
import kernel32,\
ExitProcess,'ExitProcess'
end data
Each hex digit represents a nibble.
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Subtract 48 from the ASCII value, is it less than or equal to 9?
If so shift it into the proper nibble. If not subtract
65 'A' or 97 'a' from the original value and add ten and
shift into the proper nibble.
[ Digits are ascii values (in hex) 30 to 39h.
41 'A' - 41 = 0 add 10 because A = 10 in hex,
also 42 'B' - 41 = 1 + 10 = 11 or B in hex. ]
So that:
A8
/ \
1010 1000
To convert to decimal divide by powers of ten,
the quotient should yield the digit (0-9) of the corresponding
place value.
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.