Конвертировать десятичные в шестнадцатеричные на ассемблере NASM - PullRequest
0 голосов
/ 04 мая 2018

Это одна из шестнадцатеричной части моего кода, и я немного застрял в шестнадцатеричной части. когда я набираю 2560 (десятичное число) и выводим: 00 (шестнадцатеричное). это дает мне правильное значение, но мне нужно A вместо:. Любой может сказать мне, где моя проблема. Я буду признателен с вашей помощью. Спасибо.

DecToHex:

mov eax, msg8
call sprint

mov edx, 255
mov ecx, sinput8
mov ebx, 0
mov eax, 3
int 80h

mov eax, sinput8

call atoiToHex
call iprintLFToHex
ret

iprintToHex:

push    eax             
push    ecx             
push    edx           
push    esi             

mov     ecx, 0          

divideLoopToHex:

inc     ecx              
mov     edx, 0         
mov     esi, 16      
idiv    esi            
add     edx, 48         
push    edx            
cmp     eax, 0          
jnz     divideLoopToHex 

printLoopToHex:

dec     ecx             
mov     eax, esp        
call    sprint          
pop     eax             
cmp     ecx, 0          
jnz     printLoopToHex       

pop     esi            
pop     edx             
pop     ecx             
pop     eax             
ret

iprintLFToHex:

call    iprintToHex     
push    eax            
mov     eax, 0Ah         
mov     eax, esp        
call    sprint          
pop     eax            
pop     eax             
ret

atoiToHex:

push    ebx             
push    ecx             
push    edx             
push    esi             
mov     esi, eax        
mov     eax, 0          
mov     ecx, 0          

.multiplyLoopToHex:

xor     ebx, ebx        
mov     bl, [esi+ecx]   
cmp     bl, 48          
jl      .finishedToHex  
cmp     bl, 70          
jg      .finishedToHex  
cmp     bl, 10          
je      .finishedToHex 
cmp     bl, 0           
jz      .finishedToHex  

sub     bl, 48         
add     eax, ebx        
mov     ebx, 10         
mul     ebx             
inc     ecx             
jmp     .multiplyLoop   

.finishedToHex:

mov     ebx, 10         
div     ebx             
pop     esi            
pop     edx            
pop     ecx             
pop     ebx             
ret
...