77 lines
2.6 KiB
Plaintext
77 lines
2.6 KiB
Plaintext
.текст
|
||
.глобал _start
|
||
|
||
_start:
|
||
; МЕНЯЙ ЧИСЛО:
|
||
переместить_имм р8, 750
|
||
|
||
; Выводим число (костыльно: делим на 100, потом на 10)
|
||
сравнить_с р8, 100
|
||
переход_если_меньше меньше_100
|
||
|
||
; >= 100: делим на 100
|
||
переместить раикс, р8
|
||
переместить_имм рдикс, 0
|
||
переместить_имм рсикс, 100
|
||
разделить рсикс ; rax = сотни, rdx = остаток
|
||
|
||
; Выводим сотни
|
||
прибавить_непосредственно раикс, 0x30
|
||
сохранить [буфер], раикс
|
||
переместить_имм раикс, 1
|
||
переместить_имм рдиай, 1
|
||
переместить_имм рсиай, буфер
|
||
переместить_имм рдикс, 1
|
||
вызов_системы
|
||
|
||
; Остаток — продолжаем
|
||
переместить р8, рдикс
|
||
|
||
меньше_100:
|
||
; Делим на 10
|
||
сравнить_с р8, 10
|
||
переход_если_меньше меньше_10
|
||
|
||
переместить раикс, р8
|
||
переместить_имм рдикс, 0
|
||
переместить_имм рсикс, 10
|
||
разделить рсикс
|
||
|
||
; Выводим десятки
|
||
прибавить_непосредственно раикс, 0x30
|
||
сохранить [буфер], раикс
|
||
переместить_имм раикс, 1
|
||
переместить_имм рдиай, 1
|
||
переместить_имм рсиай, буфер
|
||
переместить_имм рдикс, 1
|
||
вызов_системы
|
||
|
||
переместить р8, рдикс
|
||
|
||
меньше_10:
|
||
; Выводим единицы
|
||
прибавить_непосредственно р8, 0x30
|
||
сохранить [буфер], р8
|
||
переместить_имм раикс, 1
|
||
переместить_имм рдиай, 1
|
||
переместить_имм рсиай, буфер
|
||
переместить_имм рдикс, 1
|
||
вызов_системы
|
||
|
||
; Перевод строки
|
||
переместить_имм раикс, 1
|
||
переместить_имм рдиай, 1
|
||
переместить_имм рсиай, nl
|
||
переместить_имм рдикс, 1
|
||
вызов_системы
|
||
|
||
; exit(0)
|
||
переместить_имм раикс, 60
|
||
переместить_имм рдиай, 0
|
||
вызов_системы
|
||
|
||
.данные
|
||
буфер:
|
||
.байт 0, 0, 0, 0, 0, 0, 0, 0
|
||
nl:
|
||
.байт 0x0A |