Z80的BCD减法程序

时间:2016-08-28 20:18:29

标签: assembly microprocessors bcd z80

这个程序取自书Programming the Z80,该程序用于执行x字节BCD减法, x可以是任何整数,这是通过计算两个字节操作数并通过循环执行减法指令,但在这里我们假设这两个数字具有相同的字节数,我们称之为COUNT。这些号码的地址为N1N2以及这些地址。我的问题在于代码的评论。

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

1 个答案:

答案 0 :(得分:0)

结果存储在HL指向的地址,然后HL(即指针)递增以指向减数和结果的下一个字节。

请注意,结果会覆盖减数而不是minuend,这通常是大多数汇编指令所发生的情况。例如。 SBC A, (HL)将从A中减去(HL)并将结果保留为A.但是,此例程将从DE指向的数据中减去HL指向的数字,并将结果保留在HL最初指向的内存位置而不是DE