]]> ]]>

CHIP-8

Реализация языка программирования Assembler

CHIP-8

Обозначения

  • 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

]]>

Работа программистам