2

我正在为 Z80 二进制文件制作一个模拟器,但我无法从手册或谷歌中找出所有整数数据类型是有符号还是无符号。那么来自 register AB...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

提前致谢。

4

3 回答 3

3
  1. 寄存器可以包含其中任何一个,并且由于二进制补码,大多数操作数同时计算两个答案。但是,某些指令确实需要包含值是有符号还是无符号的信息。它们以两种形式存在,一种是有符号的,一种是无符号的。不记得Z80是否有这些。

  2. 请参阅 (1.) 绝对地址是无符号的,而相对地址(分支)是有符号的,以便能够向后跳转。

于 2010-09-14T07:38:57.537 回答
3

在许多机器上,有符号数和无符号数之间的唯一区别是执行幅度比较的方式,以及将较短值转换为较长值的方式(请注意,许多处理器的乘法运算有效地将较短的类型转换为较长的类型,除法本身就执行幅度比较)。在执行上述以外的任何类型的操作时,有符号和无符号操作数的处理方式相同(逐位),因此无需区分它们。

于 2010-12-19T02:21:08.093 回答
2

AKAIK,汇编语言数据和传输指令不包含符号信息。数据和传输操作都只定义数据大小。符号信息是某些指令的一部分,例如有符号/无符号乘法指令。因此,imul 指令可以将同一寄存器处理为有符号整数,而 mul 指令可以将其处理为无符号整数。

于 2010-09-13T16:28:17.983 回答