Каково представление значений в инструкции LD в 8-битном процессоре Z80?
У меня возникают трудности с пониманием того, что происходит в этом коде:
LD A, -1;
LD B, 130;
ADD A, B;
И какие флаги установлены в 1 после ADD
инструкция.
В принципе, я не знаю, какое значение хранится в регистре B
,
Я не могу найти информацию о том, 130 в LD B, 130
означает "1000 0010" или "0 1000 0010" (поэтому впоследствии мы должны избавиться от MSB/LSB - я не знаю, какой именно).
В результате я не уверен, какое окончательное значение хранится в A
,
1 ответ
Z80 - это 8-битный процессор, поэтому ваш 9-битный номер 0 1000 0010
не имеет никакого отношения Код, который вы разместили
LD A, -1;
LD B, 130;
ADD A, B;
эквивалентно
LD A, 0hFF
LD B, 0h82
ADD A, B
и после добавления регистр А будет содержать 0h81
Добавление приведет к установке флага Carry, поскольку он генерирует "заем". Carry является результатом неподписанного дополнения.
Это приведет к очистке флага переполнения, поскольку отсутствует "внутренний перенос" с бита 6 на бит 7. Оба значения были отрицательными для начала, и A остается отрицательным. Флаг переполнения устанавливается, когда подписанная сумма не может быть правильно представлена в реестре.
Нулевой флаг будет очищен, так как A отличен от нуля.
Флаг знака будет установлен, так как A отрицателен согласно биту 7.