Эта таблица выглядит как определение того, что инструкция (код 22h) делает, когда процессор выполняет его. Таким образом, инструкция в целом имеет 5 шагов для выполнения всего процесса. Для вас, как программиста, он по-прежнему выглядит как одна инструкция.
Z80 - это старая 8-битная технология, и в то время мы не могли читать 64 бита сразу (или даже больше с кешами сегодняшнего дня). Таким образом, каждое чтение или запись в память было одним шагом и одним байтом за раз.
В таблице объясняется, что происходит на каждом этапе. Это особенно важно, если вы пытаетесь создать компьютер с этим процессором. Тем не менее, гораздо менее важно, если вы программируете чип, если не делаете что-то, что включает в себя время, которое должно быть правильным для цикла.
Таким образом, MOV label, HL
перенесет 16 бит из памяти по адресу адреса в регистр HL
.
(1) Сначала процессор считывает один байт на ПК и выясняет, что инструкция составляет 22 часа. Ах! Это MOV label, HL
.
(2,3) Процесс теперь знает, что он должен читать еще два байта с ПК, представляя адрес памяти. Z80 является немного endian, он сначала читает младший байт (от ПК + 1), а затем старший байт (от ПК + 2).
(4,5) Адрес, загруженный с шагом (2,3), теперь находится во временном регистре (внутренний процессорный буфер, называемый ZR
) и используется для чтения двух байтов из памяти. Эти два байта сохраняются в регистре HL
. HL
означает Высокие и Низкие байты. Таким образом, байт на ZR
загружен в L
, а байт на ZR + 1
загружен в H
(опять же, мы загружаем регистр в маленьком конце).
Примечание: ПК будет увеличиваться на 3 и, возможно, увеличивается на единицу каждый раз, когда он используется для чтения одного байта.
Так он загружает содержимое HL
двойного регистра сразу из буфера памяти, указанного label
(жесткий кодированный адрес в адресуемой памяти 64Кб.)
Например, если вы начинаете с HL
набор для 0x0000
и у вас есть инструкции:
MOV 0x2345, HL
и по адресу 0x2345
у вас есть байты 0x12
и по адресу 0x2346
у вас есть байты 0x56
затем HL
заканчивается: 0x5612
.
И команда будет закодирован как: 0x22 0x45 0x23
'zr' предположительно внутренний временный регистр. Адрес метки (2 байта) кодируется в инструкции, которая выбирается в 'zr' и впоследствии используется как адрес памяти. – Jester
Не могли бы вы поделиться своим источником? – GabrielOshiro
Мне тоже хотелось бы видеть источник. Deutsch ist kein Проблема. – Tommy