Представим, что у нас есть МЛАДШАЯ и СТАРШАЯ 8-битная половина адреса в регистрах L и H. Например, мы хотим прочитать байт с адреса 32770 dec = 8002 hex.
mov l, 02h ;lower byte of address
mov h, 80h ;higher byte of address
mov a, [hl] ;a <-- [h*256 + l]
В ЦП существует множество режимов адресации. Таким образом, у нас может быть другой пример, например. всего с одним регистром и непосредственным адресом:
mov h, 80h
mov a, [2] ;a <-- [h*256 + immediate]
Это всегда зависит от конкретной архитектуры процессора. Например, Zilog Z80 называется 8-битным процессором, но он также содержит множество 16-битных инструкций. Вы можете сделать индексированную адресацию на нем следующим образом:
mov ix, 8002h ;base address of an array
mov a,[ix+20] ;a <-- [ix + 20] i.e. read a byte from an array like ix[20] in C
Примечание. Эти старые 8-битные процессоры используют 8-битный аккумулятор, т. е. они могут выполнять математические и другие арифметические операции только в 8-битном регистре, поэтому они являются 8-битными на уровне программных вычислений. . И их модуль доступа к памяти является 8-битным, т.е. он может читать или записывать только один байт памяти за раз, поэтому они также являются 8-битными на аппаратном уровне. Эти 16-битные инструкции медленные, они фактически выполняют пару 8-битных операций подряд.
person
Al Kepp
schedule
02.12.2012