kvs/квс/тест.квс
2025-10-24 04:45:07 +03:00

153 lines
5.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.текст
.глобал _start
_start:
; ========== БАЗОВЫЕ ИНСТРУКЦИИ ==========
переместить раикс, рбикс
переместить рсипи, рдиай
переместить р8, р9
переместить_имм раикс, 0x12345678
переместить_имм еаикс, 0x1234
переместить_имм аикс, 0x12
переместить_имм ал, 0x42
прибавить раикс, рбикс
вычесть рсипи, рдиай
вызвать some_function
вернуться
вызов_системы
; ========== СРАВНЕНИЯ И ПЕРЕХОДЫ ==========
сравнить раикс, рбикс
сравнить32 еаикс, ебикс
сравнить_байт ал, бл
переход loop
переход_если_равно loop
переход_если_неравно loop
переход_если_ноль loop
переход_если_неоль loop
переход_если_перенос loop
переход_если_нет_переноса loop
переход_если_меньше loop
переход_если_больше loop
переход_если_меньше_или_равно loop
переход_если_больше_или_равно loop
ороткий_переход loop
; ========== АРИФМЕТИКА ==========
прибавить_непосредственно раикс, 100
вычесть_непосредственно рбикс, 50
увеличить раикс
уменьшить рбикс
увеличить ал
уменьшить бл
умножить раикс
умножить_знаковое рбикс
разделить рсикс
разделить_знаковое рдикс
отрицать раикс
инвертировать рбикс
; ========== ЛОГИЧЕСКИЕ ОПЕРАЦИИ ==========
и раикс, рбикс
или рсипи, рдиай
исключающее_или р8, р9
проверить раикс, рбикс
очистить раикс
; ========== СДВИГИ И ВРАЩЕНИЯ ==========
;сдвиг_влево раикс, 4
;сдвиг_вправо рбикс, 2
;сдвиг_арифметический_влево рсикс, 1
;сдвиг_арифметический_вправо рдикс, 3
ращать_влево р8, 5
ращать_вправо р9, 6
; ========== СТЕК И ПАМЯТЬ ==========
втолкнуть раикс
втолкнуть рбикс
втолкнуть_из_памяти [рсипи]
вытолкнуть рдиай
вытолкнуть_в_память [рбипи]
загрузить раикс, [рсипи]
сохранить [рдиай], рбикс
загрузить_адрес раикс, some_data
; ========== 8-БИТНЫЕ ОПЕРАЦИИ ==========
переместить_имм ал, 0xAA
прибавить_байт ал, бл
вычесть_байт бл, кл
сравнить_байт дл, бл
сохранить_байт [раикс], ал
сохранить_в_адрес [рбикс], ал
; ========== РАСШИРЕНИЕ РЕГИСТРОВ ==========
переместить_сулями раикс, ал
переместить_со_знаком рбикс, бл
; ========== ОБМЕН ==========
обменять раикс, рбикс
;обменять_с_памятью [рсипи], рдиай
; ========== ФЛАГИ ==========
установить_перенос
сбросить_перенос
установить_направление
сбросить_направление
втолкнуть_флаги
вытолкнуть_флаги
; ========== СТРОКОВЫЕ ОПЕРАЦИИ ==========
переместить_байт
переместить_слово
сравнить_байты
сканировать_байт
; ========== СПЕЦИАЛЬНЫЕ КОМАНДЫ ==========
идентифицировать_процессор
прочитать_счетчик
получить_управление
отладка
прервать 0x80
; ========== ВВОД-ВЫВОД ==========
ввод_байта 0x60
вывод_байта 0x61
; ========== ЦИКЛЫ ==========
цикл loop
; ========== .БАЙТ ДИРЕКТИВА ==========
.байт 0x90 0x90 0x90 ; NOP-ы для выравнивания
loop:
; Метка для переходов
нет_операции
остановить
some_function:
вернуться
.данные
some_data: .строка "Test data"
;constant_value: .константа 0xDEADBEEF
; ========== РАЗНЫЕ ТИПЫ ДАННЫХ ==========
byte_array: .байт 0x01 0x02 0x03 0x04
string_data: .строкауль "Null terminated"
wide_string: .строка "Wide string test"
; Глобальная константа
;.глобал global_var
;global_var: .константа 42