8 位 Z80 处理器中 LD 指令中值的表示是什么?
What is the representation of values in the LD instruction in the 8-bit Z80 processor?
我很难理解这段代码中发生的事情:
LD A, -1;
LD B, 130;
ADD A, B;
在ADD
指令之后哪些标志被设置为1。
基本上,我不知道,寄存器B
里面存储的是什么值。
我找不到任何信息 LD B, 130
中的 130 是指 "1000 0010" 还是 " 0 1000 0010"(所以随后我们必须去掉 MSB/LSB - 我不知道是哪一个)。
因此,我不确定 A
中存储的最终值是多少。
Z80 是 8 位处理器,因此您的 9 位数字 0 1000 0010
没有任何意义。您发布的代码
LD A, -1;
LD B, 130;
ADD A, B;
相当于
LD A, 0hFF
LD B, 0h82
ADD A, B
加法后寄存器A将包含0h81
加法会导致设置进位标志,因为它会生成 "borrow"。进位是 unsigned 加法的结果。
这将导致溢出标志被清除,因为从第 6 位到第 7 位没有 "internal carry"。两个值开始时都是负数,A 保持负数。当带符号的和不能在寄存器中正确表示时设置溢出标志。
零标志将被清除,因为 A 不为零。
将设置符号标志,因为根据第 7 位 A 为负数。
我很难理解这段代码中发生的事情:
LD A, -1;
LD B, 130;
ADD A, B;
在ADD
指令之后哪些标志被设置为1。
基本上,我不知道,寄存器B
里面存储的是什么值。
我找不到任何信息 LD B, 130
中的 130 是指 "1000 0010" 还是 " 0 1000 0010"(所以随后我们必须去掉 MSB/LSB - 我不知道是哪一个)。
因此,我不确定 A
中存储的最终值是多少。
Z80 是 8 位处理器,因此您的 9 位数字 0 1000 0010
没有任何意义。您发布的代码
LD A, -1;
LD B, 130;
ADD A, B;
相当于
LD A, 0hFF
LD B, 0h82
ADD A, B
加法后寄存器A将包含0h81
加法会导致设置进位标志,因为它会生成 "borrow"。进位是 unsigned 加法的结果。
这将导致溢出标志被清除,因为从第 6 位到第 7 位没有 "internal carry"。两个值开始时都是负数,A 保持负数。当带符号的和不能在寄存器中正确表示时设置溢出标志。
零标志将被清除,因为 A 不为零。
将设置符号标志,因为根据第 7 位 A 为负数。