2016-01-16 3 views
1

У меня есть инструкция MOV label, HL. Я понимаю только первую строку, но второй - нет, если только инструкция MOV label, HL, почему нам всегда нужно получить адрес для низких и высоких значений метки? Что такое ZR?MOV ярлык, HL стол

И может кто-нибудь объяснить мне эти строки с выполнить.

Click here to see tabele

+3

'zr' предположительно внутренний временный регистр. Адрес метки (2 байта) кодируется в инструкции, которая выбирается в 'zr' и впоследствии используется как адрес памяти. – Jester

+1

Не могли бы вы поделиться своим источником? – GabrielOshiro

+0

Мне тоже хотелось бы видеть источник. Deutsch ist kein Проблема. – Tommy

ответ

1

Эта таблица выглядит как определение того, что инструкция (код 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

+1

Возможно, также имеет значение: различие z80 между машинным циклом и тактовым циклом. Если вы строили машину, вам, вероятно, также понадобятся циклы обновления, которые таблица не перечисляет, но которые не зависят от потока команд (если одна из этих инструкций не загружает R, конечно). – Tommy