我正在制作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