Глядя на документацию, включенную в вопрос, предлагается несколько инструкций. Машина имеет четыре 8-битных регистра, пронумерованных R0, R1, R2 и R3, которые адресуются с использованием двух битов.
Коды операций для инструкций указаны в документации в виде двух шестнадцатеричных цифр. Однако в реальной реализации область кода операции инструкций не имеет размера двух шестнадцатеричных цифр, поэтому вам нужно взять шестнадцатеричное значение и сдвинуть значение влево на 2 бита. Таким образом, код операции для загрузки 0x30 (0011 0000) сдвигается влево, что приводит к 0xC0 (1100 0000 в двоичном формате), или код операции для сохранения 0x32 (0011 0010) сдвигается влево, что приводит к 0xC8 (1100 1000) и номер регистра от нуля до трех вставляется в младшие два бита двух шестнадцатеричных цифр.
Команда загрузки из адреса имеет вид ld Ri,xxxx
, где xx — 16-битный адрес ячейки, содержащей 8-битное значение для загрузки в регистр. Эта инструкция загрузки устанавливает указанный 8-битный регистр (R0, R1, R2 или R3) с 8-битным значением по указанному адресу.
Фактические битовые форматы для инструкции загрузки: (1) код операции (0x30) в старших 6 битах, за которым следует (2) номер регистра (0–3) в следующих двух битах, за которым следует (3) 16-битный значение, которое является адресом значения для загрузки.
Затем ld R1,0x10A
должен выглядеть как 1100 0001 0000 0001 0000 1010 в двоичном формате, который разделен на 1100 00 как код операции 0x30, 01 как номер регистра R1 и 0000 0001 0000 1010, который равен 0x010A.
Немедленная загрузка ld R3,$-12
должна выглядеть как 1100 0111 1111 0400, поскольку -12 равно 0xfff4.
add R1,R3
должен выглядеть как 0100 0001 1100 0000, предполагая, что неиспользуемые биты равны нулю. Это будет 010000 в качестве кода операции 0x10 для добавления, 01 для регистра R1 и 11 для регистра R3. Оставшиеся 6 бит во второй 8-битной части инструкции добавления не используются и игнорируются.
sto R1,0x10B
должен выглядеть как 1100 1001 0000 0001 0000 1011, что является кодом операции 0x32, регистр 1, который должен храниться по 16-битному адресу 0x010B.
person
Richard Chambers
schedule
20.07.2016