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

Assembly Z80汇编程序/机器代码中的字节/字/地址是有符号的还是无符号的?,assembly,cpu,machine-code,z80,signedness,Assembly,Cpu,Machine Code,Z80,Signedness,我正在为Z80二进制文件制作一个模拟器,但我无法确定所有的整数数据类型是有符号的还是无符号的,还是来自google。那么,寄存器A、B…HL、BC等中的数字是否已签名 此外,在机器代码中,指令后面的字节/字/地址是有符号的还是无符号的参数 如以下示例(来源): 8080助记符Z80助记符机器代码操作 ------------- ------------ ------------ --------- MVI A、字节LD A、字节3Ebyte AAKAIK、汇编语言数据和传输指令

我正在为Z80二进制文件制作一个模拟器,但我无法确定所有的整数数据类型是有符号的还是无符号的,还是来自google。那么,寄存器
A
B
HL
BC
等中的数字是否已签名

此外,在机器代码中,指令后面的字节/字/地址是有符号的还是无符号的参数

如以下示例(来源):

8080助记符Z80助记符机器代码操作
-------------    ------------    ------------    ---------

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

  • 寄存器可以包含其中任何一个,并且大多数操作数同时计算两个答案,因为。但是,有些指令确实需要包含有符号或无符号值的信息。它们有两种形式,一种是有符号的,另一种是无符号的。我不记得Z80有没有这些

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


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

    我明白了,所以
    add
    指令将对有符号和无符号整数执行加法。至少可以说,这很烦人,因为我的模拟器是用C语言编写的,不支持只添加原始数据。我会做一些ASM互操作的事情。你确定这一点吗?我更担心对机器码比对程序集更感兴趣。那么地址是否总是被格式化为无符号的,因为有负地址似乎很荒谬?程序集只是机器码的可读翻译。每个程序集指令都与某些操作码完全匹配,反之亦然。关于地址,关键是指令是什么当然,地址总是被视为正数,但偏移量可能是负数。
    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