.текст .глобал _start _start: переместить_имм р8, 0 ; число = 0 цикл: ; Выводим число (костыльно: до 99) сравнить_с р8, 10 переход_если_больше_или_равно двузначное ; Однозначное переместить раикс, р8 прибавить_непосредственно раикс, 0x30 сохранить [буфер], раикс переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, буфер переместить_имм рдикс, 1 вызов_системы переход показать_длину двузначное: ; Делим на 10 переместить раикс, р8 переместить_имм рдикс, 0 переместить_имм рсикс, 10 разделить рсикс сохранить [остаток], рдикс ; Десятки прибавить_непосредственно раикс, 0x30 сохранить [буфер], раикс переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, буфер переместить_имм рдикс, 1 вызов_системы ; Единицы загрузить рдикс, [остаток] прибавить_непосредственно рдикс, 0x30 сохранить [буфер], рдикс переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, буфер переместить_имм рдикс, 1 вызов_системы показать_длину: ; Разделитель: " -> " переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, стрелка переместить_имм рдикс, 4 вызов_системы ; Длина числа переместить раикс, р8 вызвать длина_числа прибавить_непосредственно раикс, 0x30 сохранить [буфер], раикс переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, буфер переместить_имм рдикс, 1 вызов_системы ; Перевод строки переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, nl переместить_имм рдикс, 1 вызов_системы ; Число++ увеличить р8 сравнить_с р8, 9199 переход_если_меньше цикл ; exit(0) переместить_имм раикс, 60 переместить_имм рдиай, 0 вызов_системы ; ============================================= ; длина_числа ; ============================================= длина_числа: втолкнуть р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 стрелка: .строка " -> " nl: .байт 0x0A .бнд остаток: .резб 8