Печать Int (или Int в строку)

Я ищу способ напечатать целое число на ассемблере (компилятор, который я использую - NASM для Linux), однако после некоторых исследований я не смог найти действительно жизнеспособного решения. Мне удалось найти описание базового алгоритма для этой цели, и на основе этого я разработал этот код:

global _start

section .bss
digit: resb 16
count: resb 16
i: resb 16

section .data

section .text

_start:
mov             dword[i], 108eh         ; i = 4238
mov             dword[count], 1
L01:
mov             eax, dword[i]
cdq
mov             ecx, 0Ah
div             ecx  
mov             dword[digit], edx

add             dword[digit], 30h       ; add 48 to digit to make it an ASCII char
call            write_digit

inc             dword[count]

mov             eax, dword[i]
cdq
mov             ecx, 0Ah
div             ecx  
mov             dword[i], eax 
cmp             dword[i], 0Ah  
jg              L01

add             dword[i], 48            ; add 48 to i to make it an ASCII char
mov             eax, 4                  ; system call #4 = sys_write
mov             ebx, 1                  ; file descriptor 1 = stdout
mov             ecx, i                  ; store *address* of i into ecx
mov             edx, 16                 ; byte size of 16
int             80h

jmp             exit

exit:
mov             eax, 01h                ; exit()
xor             ebx, ebx                ; errno
int             80h

write_digit:
mov             eax, 4                  ; system call #4 = sys_write
mov             ebx, 1                  ; file descriptor 1 = stdout
mov             ecx, digit              ; store *address* of digit into ecx
mov             edx, 16                 ; byte size of 16
int             80h
ret

C # версия того, чего я хочу добиться (для наглядности):

static string int2string(int i)
{
    Stack stack = new Stack();
    string s = "";

    do
    {
        stack.Push((char)((i % 10) + 48));
        i = i / 10;
    } while (i > 10);

    stack.Push((char)(i + 48));

    foreach (char c in stack)
    {
        s += c;
    }

    return s;
}

Проблема в том, что он выводит символы в обратном порядке, поэтому для4238, выход8324, Сначала я подумал, что мог бы использовать стек x86 для решения этой проблемы, вставить цифры, вытащить их и распечатать в конце, однако, когда я попытался реализовать эту функцию, она провалилась, и я больше не мог получить выход.

В результате я немного озадачен тем, как я могу реализовать стек в этом алгоритме для достижения моей цели, то есть печати целого числа. Я также был бы заинтересован в более простом / лучшем решении, если оно доступно (так какЭто одна из моих первых программ на ассемблере).

Ответы на вопрос(4)

Ваш ответ на вопрос