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

StackOverflow https://stackoverflow.com/questions/3702171

Вопрос

Я делаю эмулятор для двоичных файлов 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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top