180 lines
5.8 KiB
Plaintext
180 lines
5.8 KiB
Plaintext
|
|
.текст
|
|||
|
|
.глобал _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
|