Инструкция LDA a16
считывает байт с адреса a16
(у 8080 16-битная шина) и сохраняет это значение в регистр A
.
Эта инструкция закодирована как три: 0x3a lo hi
, являющиеся lo
и hi
двумя байтами, составляющими адрес.
Если вы хотите сохранить непосредственное (постоянное) значение в A
, вы должны вместо этого использовать инструкцию MVI A, x
, так как x
является постоянным значением. Эта инструкция закодирована как: 0x3e x
, всего два байта, как и следовало ожидать.
Похоже, вы путаете адрес памяти и содержимое памяти. 8080 имеет 16-битную адресную шину и 8-битную шину данных. Это означает, что он может обращаться к памяти с адреса от 0x0000 до 0xffff (16 полных битов) или 65536 различных адресов, но каждый из этих адресов может хранить один байт со значением от 0x00 до 0xff (8 бит). Это добавляет до 64 килобайт памяти.
Теперь, когда вы хотите прочитать значение из памяти, вам нужно указать адрес значения, которое вы читаете (помните, адрес 16 бит, значение 8 бит). Таким образом, вам нужно каким-то образом закодировать адрес в инструкции, используя 2 байта. ЦП Intel использует схему с прямым порядком байтов, поэтому для кодирования адреса младшие 8 бит хранятся в первом байте, а старшие 8 бит — во втором. И это то, что делает код операции LDA
, и именно поэтому он имеет длину 3 байта.
person
rodrigo
schedule
01.09.2019