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