Байты / слова / адреса подписаны или не подписаны в ассемблере / машинном коде Z80?

Я делаю эмулятор для двоичных файлов Z80, но я не могу узнать, все ли целочисленные типы данных подписаны или не подписаны из руководства или из Google. Как и числа из регистров A,B...HL,BC тп подписано или нет?

Кроме того, в машинном коде есть байты / слова / адреса, которые идут после инструкций в качестве аргументов со знаком или без знака?

Как в этих примерах (из набора инструкций 8080/Z80):

8080 Mnemonic    Z80 Mnemonic    Machine Code    Operation
-------------    ------------    ------------    ---------
MVI A,byte       LD  A,byte      3Ebyte          A <- byte
LXI B,word       LD  BC,word     01word          BC <- word
JMP address      JP  address     C3address       PC <- address

Заранее спасибо.

3 ответа

Решение
  1. Регистры могут содержать любой из них, и большинство операндов вычисляют оба ответа одновременно из-за дополнения Two. Однако некоторые инструкции нуждаются в информации, независимо от того, является ли содержащее значение подписанным или неподписанным. Они существуют в двух формах: одна для подписи и одна для неподписания. Не могу вспомнить, есть ли у Z80 что-нибудь из этого.

  2. См. (1.) Абсолютные адреса не подписаны, а относительные адреса (ветви) подписаны, чтобы можно было перейти назад.

На многих машинах единственные различия между знаковыми и беззнаковыми числами заключаются в способе сравнения величин и в способе преобразования более коротких значений в более длинные (обратите внимание, что операции многократного умножения многих процессоров эффективно преобразуют более короткие типы в более длинные, и деление по своей сути выполняет сравнение величин). При выполнении операций любого типа, отличных от указанных выше, операнды со знаком и без знака обрабатываются точно (по битам) одинаково, поэтому нет необходимости различать их.

AKAIK, данные на языке ассемблера и инструкции по переводу не содержат информации о знаках. И данные, и операции передачи определяют только размер данных. Информация о знаках является частью некоторых инструкций, таких как инструкции умножения со знаком / без знака. Таким образом, один и тот же регистр может быть обработан командой imul как целое число со знаком, а командой mul - как целое число без знака.

Другие вопросы по тегам