我正在为Z80二进制文件制作模拟器,但我无法确定所有整数数据类型是已签名还是未签名from the manual还是来自谷歌。来自寄存器A
,B
...... HL
,BC
等的数字是否已签名?
另外,机器代码中的字节/字/地址是作为参数签名还是未签名的指令之后?
就像这些例子(来自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
提前致谢。
答案 0 :(得分:2)
AKAIK,汇编语言数据和传输说明不包含符号信息。数据和传输操作都只定义数据大小。符号信息是某些指令的一部分,例如有符号/无符号乘法指令。因此,相同的寄存器可以由imul指令作为有符号整数处理,并通过mul指令作为无符号整数处理。
答案 1 :(得分:2)
寄存器可以包含,并且由于Two's complement,大多数操作数同时计算两个答案。但是,某些指令确实需要包含值是有符号值还是无符号的信息。它们以两种形式存在,一种用于签名,另一种用于无符号。不记得Z80是否有这些。
见(1。)绝对地址是无符号的,相对地址(分支)是有符号的,能够向后跳。
答案 2 :(得分:2)
在许多机器上,有符号和无符号数字之间的唯一区别在于执行幅度比较的方式,以及将较短值转换为较长值的方式(请注意,许多处理器的乘法运算有效地将较短的类型转换为较长的,并且划分固有地执行幅度比较)。当执行除上述操作之外的任何类型的操作时,有符号和无符号操作数以相同的方式精确地(逐位)处理,因此不需要区分它们。