Saída de números inteiros em assembly no Linux
Isso precisa ser feito em uma montagem pura (ou seja, sem bibliotecas ou chamadas para C
Entendo a essência do problema: é necessário dividir o número inteiro por 10, converter o restante de um dígito em ASCII, gerar a saída e repetir o processo com o quocient
Mas por algum motivo, simplesmente não está funcionando. Estou usando o NASM em x86.
qui está o que eu tenho até agora (não gera nada, mas também não gera erros de montagem
; integer to output is stored in eax
mov ecx, 10 ; for base 10
loop:
div ecx ;EAX contains the quotient, EDX the remainder
; Do something to EDX to convert it to ASCII, not sure if this is correct
add edx, '0'
push eax ;We'll be playing with EAX to output EDX, save EAX to the stack
mov eax, 4 ; sys_write
mov ebx, 1 ; to STDOUT
mov ecx, edx
mov edx, 1
int 0x80
pop eax ;restore EAX
cmp eax, 0 ;If EAX is 0, our job is done
jnz loop
Há várias perguntas semelhantes a essa (a saber,est eest), mas estou perdido na implementação.Essa questã (para DOS) também foi útil, mas ainda estou confuso.
Eu devo estar esquecendo algo aqui. Pensamentos