kvs/квс/тест.квс

153 lines
5.2 KiB
Plaintext
Raw Normal View History

2025-10-24 04:45:07 +03:00
.текст
.глобал _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