.текст .глобал _start _start: ; МЕНЯЙ ЧИСЛО ЗДЕСЬ: переместить_имм р8, 456777 ; Выводим число через itoa3 (до 999!) переместить раикс, р8 переместить_имм рдиай, буфер вызвать itoa3 загрузить рсиай, [указатель] загрузить рдикс, [длина] переместить_имм раикс, 1 переместить_имм рдиай, 1 вызов_системы ; " -> " переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, стрелка переместить_имм рдикс, 4 вызов_системы ; Длина числа переместить раикс, р8 вызвать длина_числа ; Выводим длину прибавить_непосредственно раикс, 0x30 сохранить [буфер], раикс переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, буфер переместить_имм рдикс, 1 вызов_системы ; Перевод строки переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, nl переместить_имм рдикс, 1 вызов_системы ; exit(0) переместить_имм раикс, 60 переместить_имм рдиай, 0 вызов_системы ; ============================================= ; itoa3 — работает для чисел до 999 ; ============================================= itoa3: втолкнуть рбикс втолкнуть р8 втолкнуть р9 переместить рбикс, рдиай переместить р8, раикс сравнить_с р8, 10 переход_если_меньше одна_цифра сравнить_с р8, 100 переход_если_меньше две_цифры ; Три цифры прибавить_непосредственно рбикс, 3 переместить раикс, р8 переместить_имм рдикс, 0 переместить_имм р9, 10 разделить р9 прибавить_непосредственно рдикс, 0x30 уменьшить рбикс сохранить [рбикс], рдикс переместить р8, раикс переместить раикс, р8 переместить_имм рдикс, 0 разделить р9 прибавить_непосредственно рдикс, 0x30 уменьшить рбикс сохранить [рбикс], рдикс прибавить_непосредственно раикс, 0x30 уменьшить рбикс сохранить [рбикс], раикс сохранить [указатель], рбикс переместить_имм раикс, 3 сохранить [длина], раикс вытолкнуть р9 вытолкнуть р8 вытолкнуть рбикс вернуться две_цифры: прибавить_непосредственно рбикс, 2 переместить раикс, р8 переместить_имм рдикс, 0 переместить_имм р9, 10 разделить р9 прибавить_непосредственно рдикс, 0x30 уменьшить рбикс сохранить [рбикс], рдикс прибавить_непосредственно раикс, 0x30 уменьшить рбикс сохранить [рбикс], раикс сохранить [указатель], рбикс переместить_имм раикс, 2 сохранить [длина], раикс вытолкнуть р9 вытолкнуть р8 вытолкнуть рбикс вернуться одна_цифра: прибавить_непосредственно раикс, 0x30 сохранить [рбикс], раикс сохранить [указатель], рбикс переместить_имм раикс, 1 сохранить [длина], раикс вытолкнуть р9 вытолкнуть р8 вытолкнуть рбикс вернуться ; ============================================= ; длина_числа ; ============================================= длина_числа: втолкнуть р8 втолкнуть р9 переместить р8, раикс переместить_имм р9, 0 сравнить_с р8, 0 короткий_переход_если_неравно длина_цикл переместить_имм раикс, 1 вытолкнуть р9 вытолкнуть р8 вернуться длина_цикл: увеличить р9 переместить раикс, р8 переместить_имм рдикс, 0 переместить_имм рсикс, 10 разделить рсикс переместить р8, раикс сравнить_с р8, 0 короткий_переход_если_неравно длина_цикл переместить раикс, р9 вытолкнуть р9 вытолкнуть р8 вернуться .данные буфер: .байт 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 стрелка: .строка " -> " nl: .байт 0x0A .бнд указатель: .резб 8 длина: .резб 8