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

questionAnswers(2)

yourAnswerToTheQuestion