我很难理解这段代码中发生的事情:
LD A, -1;
LD B, 130;
ADD A, B;
ADD
以及在指令之后将哪些标志设置为 1 。
基本上,我不知道寄存器中存储了什么值B
。
我找不到任何信息130 inLD B, 130
是指“1000 0010”还是“0 1000 0010”(所以随后我们必须摆脱 MSB/LSB - 我不知道是哪一个)。
因此,我不确定存储在A
.
我很难理解这段代码中发生的事情:
LD A, -1;
LD B, 130;
ADD A, B;
ADD
以及在指令之后将哪些标志设置为 1 。
基本上,我不知道寄存器中存储了什么值B
。
我找不到任何信息130 inLD B, 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
添加将导致设置进位标志,因为它会生成“借位”。进位是无符号加法的结果。
它将导致溢出标志被清除,因为从第 6 位到第 7 位没有“内部进位”。两个值开始时都是负数,而 A 仍然为负数。当有符号的和不能在寄存器中正确表示时,会设置溢出标志。
零标志将被清除,因为 A 不为零。
将设置符号标志,因为根据第 7 位 A 为负。