kvs/тесты/циклы9.квс

77 lines
2.6 KiB
Plaintext
Raw Normal View History

.текст
.глобал _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