这是我代码中的十六进制部分之一,我有点卡在十六进制部分。当我键入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