这个程序取自书Programming the Z80,该程序用于执行x字节BCD减法, x可以是任何整数,这是通过计算两个字节操作数并通过循环执行减法指令,但在这里我们假设这两个数字具有相同的字节数,我们称之为COUNT
。这些号码的地址为N1
和N2
以及这些地址。我的问题在于代码的评论。
BCDPAK LD B, COUNT
LD DE, N2
LD HL, N1
AND A ;Clear carry
MINUS LD A, (DE)
SBC A, (HL)
DAA ;Decimal adjust the result
LD (HL), A ;Store the result in HL
INC DE
INC HL ;Doesn't that overwrite the result?
DJNZ MINUS ;Decrement B, loop until B = 0
答案 0 :(得分:0)
结果存储在HL指向的地址,然后HL(即指针)递增以指向减数和结果的下一个字节。
请注意,结果会覆盖减数而不是minuend,这通常是大多数汇编指令所发生的情况。例如。 SBC A, (HL)
将从A中减去(HL)并将结果保留为A.但是,此例程将从DE指向的数据中减去HL指向的数字,并将结果保留在HL最初指向的内存位置而不是DE