CHIP-8
Реализация языка программирования AssemblerОбозначения
- NNN — Адрес
- KK — Константа
- X и Y — Номер регистра
Инструкции CHIP-8 (Команда на ассемблере — Инструкция — Описание)
-
CLS
— 00E0 — Очистить экран -
RET
— 00EE — Возврат из подпрограммы -
SYS NNN
— 0NNN — Перейти на машинный код RCA 1802 по адресу NNN. Эта инструкция была только в самой первой реализации CHIP-8 -
JP NNN
— 1NNN — Перейти по адресу NNN -
CALL NNN
— 2NNN — Вызов подпрограммы по адресу NNN -
SE VX, KK
— 3XKK — Пропустить следующую инструкцию, если VX = KK -
SNE VX, KK
— 4XKK — Пропустить следующую инструкцию, если VX != KK -
SE VX, VY
— 5XY0 — Пропустить следующую инструкцию, если VX = VY -
LD VX, KK
— 6XKK — Загрузить в регистр VX число KK -
ADD VX, KK
— 7XKK — Загрузить в регистр VX сумму VX и KK -
LD VX, VY
— 8XY0 — Присвоить регистру VX значение VY -
OR VX, VY
— 8XY1 — Выполнить операцию логическое “ИЛИ” над значениями регистров VX и VY, результат сохранить в VX -
AND VX, VY
— 8XY2 — Выполнить операцию логическое “И” над значениями регистров VX и VY, результат сохранить в VX -
XOR VX, VY
— 8XY3 — Выполнить операцию исключающее “ИЛИ” над значениями регистров VX и VY, результат сохранить в VX -
ADD VX, VY
— 8XY4 — Значения VX и VY суммируются. Если результат больше, чем 255 , то VF установить в 1, иначе 0. Только младшие 8 бит результата сохраняются в VX -
SUB VX, VY
— 8XY5 — VY вычитается из VX, результат сохранить в VX. Если VX >= VY, то VF установить в 1, иначе 0 -
SHR VX {,VY}
— 8XY6 — Операция сдвига вправо на 1 бит. Сдвигается регистр VX. Если младший бит (самый правый) регистра VX равен 1, то VF = 1, иначе VF = 0 -
SUBN VX, VY
— 8XY7 — Если VY >= VX, то VF = 1, иначе 0. Тогда VX вычитается из VY, и результат сохраняется в VX -
SHL VX {,VY}
— 8XYE — Операция сдвига влево на 1 бит. Сдвигается регистр VX. Если младший бит (самый правый) регистра VX равен 1, то VF = 1, иначе VF = 0 -
SNE VX, VY
— 9XY0 — Пропустить следующую инструкцию, если VX != VY -
LD I, NNN
— ANNN — Значение регистра I устанавливается в NNN -
JP V0, NNN
— BNNN — Перейти по адресу NNN + V0 -
RND VX, KK
— CXKK — VX = (Случайное число от 0 до 255) & KK -
DRW VX, VY, N
— DXYN — Нарисовать на экране спрайт. Эта инструкция считывает N байт по адресу в регистре I и рисует их на экране в виде спрайта с координатами VX, VY -
SKP VX
— EX9E — Пропустить следующую инструкцию если клавиша, номер которой хранится в регистре VX, нажата -
SKNP VX
— EXA1 — Пропустить следующую инструкцию если клавиша, номер которой хранится в регистре VX, не нажата -
LD VX, DT
— FX07 — Регистру VX присваивается значение таймера задержки -
LD VX, K
— FX0A — Ждать нажатия любой клавиши. Как только клавиша будет нажата, записать ее номер в регистр VX и перейти к выполнению следующей инструкции -
LD DT, VX
— FX15 — Установить значение таймера задержки равным значению регистра VX -
LD ST, VX
— FX18 — Установить значение звукового таймера равным значению регистра VX -
ADD I, VX
— FX1E — Присвоить регистру I сумму I и VX. -
LD F, VX
— FX29 — Используется для вывода на экран символов встроенного шрифта размером 4x5 пикселей. Команда загружает в регистр I адрес спрайта, значение которого находится в VX. Например, нам надо вывести на экран цифру 5. Для этого загружаем в VX число 5. Потом командаLD F, VX
загрузит адрес спрайта, содержащего цифру 5, в регистр I -
LD B, VX
— FX33 — Сохранить значение регистра VX в двоично-десятичном представлении по адресам I, I+1 и I+2 -
LD [I], VX
— FX55 — Сохранить значения регистров от V0 до VX в памяти, начиная с адреса в I -
LD VX, [I]
— FX65 — Загрузить значения регистров от V0 до VX из памяти, начиная с адреса в I
Инструкции SCHIP
SCHIP (Super CHIP) использует все инструкции CHIP-8 (кроме 0NNN), а так же добавляет следующие:
-
SCD N
— 00CN — Прокрутить экран на N строк вниз -
SCR
— 00FB — Прокрутить экран на 4 (2) пикселя вправо в режиме 128x64 (64x32) -
SCL
— 00FC — Прокрутить экран на 4 (2) пикселя влево в режиме 128x64 (64x32) -
EXIT
— 00FD — Завершить программу -
LOW
— 00FE — Установить разрешение экрана 64x32 -
HIGH
— 00FF — Установить разрешение экрана 128x64 -
DRW VX, VY, 0
— DXY0 — Аналогично инструкции DXYN , но рисует спрайты 8x16 (16x16) в режиме 64x32 (128x64) -
LD HF, VX
— FX30 — Аналогично инструкции FX20 , но загружает спрайты 8x10 -
LD R, VX
— FX75 — Сохранить регистры V0 … VX в пользовательских флагах RPL -
LD VX, R
— FX85 — Загрузить регистры V0 … VX из пользовательских флагов RPL
Инструкции MCHIP
MCHIP ( Mega CHIP) использует все инструкции Super CHIP и добавляет следующие:
-
MEGAOFF
— 0010 — Отключить режим Mega CHIP -
MEGAON
— 0011 — Включить режим Mega CHIP -
LDPAL NN
— 02NN — Загрузить NN-цветовую палитру в регистр I -
SPRW NN
— 03NN — Установить ширину спрайта равной NN -
SPRH NN
— 04NN — Установить высоту спрайта равной NN -
ALPHA NN
— 05NN — Установить screenalpha равной NN -
DIGISND
— 060N — Воспроизвести звук в I -
STOPSND
— 0700 — Закончить воспроизводить звук -
BMODE N
— 080N — Установить режим смешивания спрайта (0=normal,1=25%,2=50%,3=75%,4=addative,5=multiply) -
SCRU N
— 00BN — Прокрутить экран на N строк вверх
Комментарии
]]>blog comments powered by Disqus
]]>