Это должно быть сделано в чистой сборке (т. Е. Без библиотек или вызовов C).
Я понимаю суть проблемы: нужно разделить целое число на 10, преобразовать однозначное числоостаток до ASCII, выведите его и затем повторите процесс с частным числом.
Но по какой-то причине он просто не работает.Я использую NASM на x86.
Вот что у меня есть до сих пор (ничего не выводится, но и не выдает ошибок ассемблера):
; 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
Естьряд вопросов, подобных этому (а именно, , это и , это ), но я потерялся в реализации. Этот вопрос (для DOS) также был полезен, но я все еще в замешательстве.
Я должен что-то здесь упустить.Мысли?