Подписаны ли байты/слова/адреса в ассемблере/машине Z80?
-
02-10-2019 - |
Вопрос
Я делаю эмулятор для двоичных файлов 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
Заранее спасибо.
Решение
Регистры могут содержаться, и большинство операндов рассчитывают оба ответа одновременно из -за Два дополнения. Анкет Однако некоторые инструкции нуждаются в информации, подписано ли содержащее значение или не знаковое. Они существуют в двух формах, одна для подписания и одна для безписанного. Не могу вспомнить, есть ли у Z80 что -то из этого.
См. (1.) Абсолютные адреса не подписаны, а относительные адреса (филиалы) подписаны, чтобы иметь возможность прыгать назад.
Другие советы
Akaik, данные и инструкции по переводу языка ассамблеи не содержат информации о знаках. Как данные, так и операции передачи определяют только размер данных. Информация о знаке является частью некоторых инструкций, таких как подписанные/не знаковые инструкции по умножению. Таким образом, тот же реестр может быть обработана с помощью IMUL инструкции в качестве подписанного целого числа, а инструкция Mul - в качестве непосписанного целого числа.
На многих машинах единственные различия между подписанными и без знаковых чисел - это способ, которым выполняются сравнения величин, и способом, которым более короткие значения преобразуются в более длинные (обратите внимание, что многие процессоры эффективно преобразуют более короткие типы в более длинные и деление по своей природе выполняет сравнения величины). При выполнении каких-либо операций, отличных от вышеупомянутых, подписанные и неподписанные операнды обрабатываются точно (бит для бита) таким же образом, поэтому их не нужно различать их.