Z80汇编程序/机器代码中的字节/字/地址是否有符号或无符号?

时间:2010-09-13 16:04:01

标签: assembly cpu machine-code z80 signedness

我正在为Z80二进制文件制作模拟器,但我无法确定所有整数数据类型是已签名还是未签名from the manual还是来自谷歌。来自寄存器AB ...... HLBC等的数字是否已签名?

另外,机器代码中的字节/字/地址是作为参数签名还是未签名的指令之后?

就像这些例子(来自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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

  1. 寄存器可以包含,并且由于Two's complement,大多数操作数同时计算两个答案。但是,某些指令确实需要包含值是有符号值还是无符号的信息。它们以两种形式存在,一种用于签名,另一种用于无符号。不记得Z80是否有这些。

  2. 见(1。)绝对地址是无符号的,相对地址(分支)是有符号的,能够向后跳。

答案 2 :(得分:2)

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