Байты / слова / адреса подписаны или не подписаны в ассемблере / машинном коде Z80? - PullRequest
2 голосов
/ 13 сентября 2010

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

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

Как в этих примерах (из 8080 / Z80 Instruction Set ):

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 ]

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

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

2 голосов
/ 19 декабря 2010

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

2 голосов
/ 13 сентября 2010

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

...