86 lines
2.8 KiB
Plaintext
86 lines
2.8 KiB
Plaintext
|
|
.текст
|
|||
|
|
.глобал _start
|
|||
|
|
|
|||
|
|
_start:
|
|||
|
|
переместить_имм р8, 2 ; число = 2
|
|||
|
|
|
|||
|
|
цикл:
|
|||
|
|
; Если число < 10 — выводим как есть
|
|||
|
|
сравнить_с р8, 10
|
|||
|
|
переход_если_больше_или_равно двузначное
|
|||
|
|
|
|||
|
|
; Однозначное: просто цифра
|
|||
|
|
переместить раикс, р8
|
|||
|
|
прибавить_непосредственно раикс, 0x30
|
|||
|
|
сохранить [буфер], раикс
|
|||
|
|
|
|||
|
|
переместить_имм раикс, 1
|
|||
|
|
переместить_имм рдиай, 1
|
|||
|
|
переместить_имм рсиай, буфер
|
|||
|
|
переместить_имм рдикс, 1
|
|||
|
|
вызов_системы
|
|||
|
|
|
|||
|
|
переход продолжение
|
|||
|
|
|
|||
|
|
двузначное:
|
|||
|
|
; Делим на 10
|
|||
|
|
переместить раикс, р8
|
|||
|
|
переместить_имм рдикс, 0
|
|||
|
|
переместить_имм рсикс, 10
|
|||
|
|
разделить рсикс ; rax = десятки, rdx = единицы
|
|||
|
|
|
|||
|
|
; Сохраняем единицы в .бнд (пока не испортились)
|
|||
|
|
сохранить [остаток], рдикс
|
|||
|
|
|
|||
|
|
; Выводим десятки
|
|||
|
|
прибавить_непосредственно раикс, 0x30
|
|||
|
|
сохранить [буфер], раикс
|
|||
|
|
|
|||
|
|
переместить_имм раикс, 1
|
|||
|
|
переместить_имм рдиай, 1
|
|||
|
|
переместить_имм рсиай, буфер
|
|||
|
|
переместить_имм рдикс, 1
|
|||
|
|
вызов_системы
|
|||
|
|
|
|||
|
|
; Загружаем единицы обратно
|
|||
|
|
загрузить рдикс, [остаток]
|
|||
|
|
|
|||
|
|
; Выводим единицы
|
|||
|
|
прибавить_непосредственно рдикс, 0x30
|
|||
|
|
сохранить [буфер], рдикс
|
|||
|
|
|
|||
|
|
переместить_имм раикс, 1
|
|||
|
|
переместить_имм рдиай, 1
|
|||
|
|
переместить_имм рсиай, буфер
|
|||
|
|
переместить_имм рдикс, 1
|
|||
|
|
вызов_системы
|
|||
|
|
|
|||
|
|
продолжение:
|
|||
|
|
; Перевод строки
|
|||
|
|
переместить_имм раикс, 1
|
|||
|
|
переместить_имм рдиай, 1
|
|||
|
|
переместить_имм рсиай, nl
|
|||
|
|
переместить_имм рдикс, 1
|
|||
|
|
вызов_системы
|
|||
|
|
|
|||
|
|
; Прибавляем 2
|
|||
|
|
прибавить_непосредственно р8, 2
|
|||
|
|
|
|||
|
|
; Продолжаем пока <= 99
|
|||
|
|
сравнить_с р8, 99
|
|||
|
|
переход_если_меньше цикл
|
|||
|
|
|
|||
|
|
; exit(0)
|
|||
|
|
переместить_имм раикс, 60
|
|||
|
|
переместить_имм рдиай, 0
|
|||
|
|
вызов_системы
|
|||
|
|
|
|||
|
|
.данные
|
|||
|
|
буфер:
|
|||
|
|
.байт 0, 0, 0, 0, 0, 0, 0, 0
|
|||
|
|
nl:
|
|||
|
|
.байт 0x0A
|
|||
|
|
|
|||
|
|
.бнд
|
|||
|
|
остаток:
|
|||
|
|
.резб 8
|