2026-06-28 11:50:50 +03:00
|
|
|
|
; ============================================================
|
|
|
|
|
|
; вывод_числа.квс — исправленный синтаксис деления
|
|
|
|
|
|
; ============================================================
|
|
|
|
|
|
|
2026-06-27 12:21:23 +03:00
|
|
|
|
.текст
|
|
|
|
|
|
.глобал _start
|
|
|
|
|
|
|
|
|
|
|
|
_start:
|
2026-06-28 11:50:50 +03:00
|
|
|
|
переместить_имм раикс, -12345
|
|
|
|
|
|
вызвать вывести_число
|
|
|
|
|
|
|
|
|
|
|
|
; Вывод перевода строки
|
|
|
|
|
|
переместить_имм раикс, 1
|
|
|
|
|
|
переместить_имм рдиай, 1
|
|
|
|
|
|
переместить_имм рсиай, новая_строка
|
|
|
|
|
|
переместить_имм рдикс, 1
|
|
|
|
|
|
вызов_системы
|
|
|
|
|
|
|
|
|
|
|
|
; Завершение
|
|
|
|
|
|
переместить_имм раикс, 60
|
|
|
|
|
|
переместить_имм рдиай, 0
|
2026-06-27 12:21:23 +03:00
|
|
|
|
вызов_системы
|
|
|
|
|
|
|
2026-06-28 11:50:50 +03:00
|
|
|
|
вывести_число:
|
2026-06-27 14:11:25 +03:00
|
|
|
|
втолкнуть рбипи
|
|
|
|
|
|
переместить рбипи, рсипи
|
|
|
|
|
|
|
2026-06-28 11:50:50 +03:00
|
|
|
|
втолкнуть рбикс
|
|
|
|
|
|
втолкнуть рсикс
|
|
|
|
|
|
втолкнуть рдикс
|
|
|
|
|
|
втолкнуть р8
|
|
|
|
|
|
втолкнуть р9
|
|
|
|
|
|
втолкнуть р10
|
|
|
|
|
|
втолкнуть р11
|
|
|
|
|
|
|
|
|
|
|
|
; ---- Проверка на отрицательное ----
|
|
|
|
|
|
проверить раикс, раикс
|
|
|
|
|
|
переход_если_больше_или_равно _положительное
|
|
|
|
|
|
|
|
|
|
|
|
втолкнуть раикс
|
|
|
|
|
|
переместить_имм раикс, 1
|
|
|
|
|
|
переместить_имм рдиай, 1
|
|
|
|
|
|
переместить_имм рсиай, минус_символ
|
|
|
|
|
|
переместить_имм рдикс, 1
|
|
|
|
|
|
вызов_системы
|
|
|
|
|
|
вытолкнуть раикс
|
|
|
|
|
|
отрицать раикс
|
|
|
|
|
|
|
|
|
|
|
|
_положительное:
|
|
|
|
|
|
; ---- Сохраняем число в R8 ----
|
|
|
|
|
|
переместить р8, раикс
|
|
|
|
|
|
переместить_имм р9, 0
|
|
|
|
|
|
|
|
|
|
|
|
; ---- Устанавливаем R10 на КОНЕЦ буфера (буфер + 19) ----
|
|
|
|
|
|
переместить_имм р10, буфер
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
увеличить р10
|
|
|
|
|
|
|
|
|
|
|
|
; Записываем нуль-терминатор
|
|
|
|
|
|
переместить_имм [р10], 0
|
|
|
|
|
|
|
|
|
|
|
|
; ---- Особый случай: число = 0 ----
|
|
|
|
|
|
проверить р8, р8
|
|
|
|
|
|
переход_если_равно _ноль_особый_случай
|
|
|
|
|
|
|
|
|
|
|
|
_цикл_деления:
|
|
|
|
|
|
проверить р8, р8
|
|
|
|
|
|
переход_если_равно _вывод_числа
|
|
|
|
|
|
|
|
|
|
|
|
; ---- ДЕЛЕНИЕ (исправленный синтаксис) ----
|
|
|
|
|
|
переместить_имм рдиай, 0 ; RDX = 0
|
|
|
|
|
|
переместить раикс, р8 ; RAX = R8
|
|
|
|
|
|
переместить_имм рсиай, 10 ; RSI = 10
|
|
|
|
|
|
разделить рдиай, раикс, рсиай ; ← ИСПРАВЛЕНО!
|
|
|
|
|
|
|
|
|
|
|
|
; ---- Сохраняем результат ----
|
|
|
|
|
|
переместить р8, раикс ; R8 = частное
|
|
|
|
|
|
прибавить рдиай, '0' ; RDX = цифра + '0'
|
|
|
|
|
|
уменьшить р10 ; двигаем указатель влево
|
|
|
|
|
|
сохранить [р10], дил ; сохраняем байт
|
|
|
|
|
|
увеличить р9 ; счётчик цифр++
|
|
|
|
|
|
переход _цикл_деления
|
|
|
|
|
|
|
|
|
|
|
|
_ноль_особый_случай:
|
|
|
|
|
|
; Если число = 0, записываем '0' в начало буфера
|
|
|
|
|
|
переместить_имм [буфер], '0'
|
|
|
|
|
|
переместить_имм р10, буфер
|
|
|
|
|
|
переместить_имм р9, 1
|
|
|
|
|
|
переход _вывод_числа
|
|
|
|
|
|
|
|
|
|
|
|
_вывод_числа:
|
|
|
|
|
|
переместить рсиай, р10
|
|
|
|
|
|
переместить рдикс, р9
|
|
|
|
|
|
вызвать вывести_строку
|
|
|
|
|
|
|
|
|
|
|
|
вытолкнуть р11
|
|
|
|
|
|
вытолкнуть р10
|
|
|
|
|
|
вытолкнуть р9
|
|
|
|
|
|
вытолкнуть р8
|
|
|
|
|
|
вытолкнуть рдикс
|
|
|
|
|
|
вытолкнуть рсикс
|
|
|
|
|
|
вытолкнуть рбикс
|
|
|
|
|
|
|
|
|
|
|
|
переместить рсипи, рбипи
|
|
|
|
|
|
вытолкнуть рбипи
|
|
|
|
|
|
вернуться
|
|
|
|
|
|
|
|
|
|
|
|
вывести_строку:
|
|
|
|
|
|
втолкнуть рбипи
|
|
|
|
|
|
переместить рбипи, рсипи
|
|
|
|
|
|
|
|
|
|
|
|
втолкнуть раикс
|
|
|
|
|
|
втолкнуть рдиай
|
|
|
|
|
|
|
|
|
|
|
|
переместить_имм раикс, 1
|
|
|
|
|
|
переместить_имм рдиай, 1
|
|
|
|
|
|
вызов_системы
|
|
|
|
|
|
|
|
|
|
|
|
вытолкнуть рдиай
|
|
|
|
|
|
вытолкнуть раикс
|
2026-06-27 14:11:25 +03:00
|
|
|
|
|
|
|
|
|
|
переместить рсипи, рбипи
|
|
|
|
|
|
вытолкнуть рбипи
|
|
|
|
|
|
вернуться
|
|
|
|
|
|
|
2026-06-27 12:21:23 +03:00
|
|
|
|
.данные
|
2026-06-28 11:50:50 +03:00
|
|
|
|
минус_символ: .байт '-'
|
|
|
|
|
|
новая_строка: .байт 10
|
|
|
|
|
|
|
|
|
|
|
|
.бнд
|
|
|
|
|
|
буфер: .резб 20
|