-2

我很难理解这段代码中发生的事情:

LD A, -1;
LD B, 130;
ADD A, B;

ADD以及在指令之后将哪些标志设置为 1 。

基本上,我不知道寄存器中存储了什么值B

我找不到任何信息130 inLD B, 130是指“1000 0010”还是“0 1000 0010”(所以随后我们必须摆脱 MSB/LSB - 我不知道是哪一个)。

因此,我不确定存储在A.

4

1 回答 1

4

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 为负。

于 2015-08-27T18:17:21.830 回答