字节/单词/地址是否在Z80 Assembler/Machine Code中签名或未签名?
-
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指令作为无符号整数来处理。
在许多计算机上,签名数字和未签名数字之间的唯一差异是进行幅度比较的方式,以及将较短值转换为较长值的方式(请注意,许多处理器的倍增操作有效地将较短类型有效地转换为更长的类型,分裂本质上执行幅度比较)。当执行上述操作以外的任何类型的操作时,签名和未签名的操作数会以相同的方式准确治疗(比特),因此无需区分它们。
不隶属于 StackOverflow