我在七段显示器上显示四位数时遇到问题。我有以下循环,一切正常,除了MSB中的显示。我知道这是因为输入S9只有4位,所以当我将它乘以SA(这是七段显示的当前值)时,结果只给出了12位,即使我保持,最后一位也保持为0乘以其他数字溢出到下一个数字的位置。因此,我不知道如何在不改变产品的情况下使其成为四位数。请参阅下面的示例,并在显示屏中显示结果。 F次F给我00E1 E1次F给我0D2F D2F次F给我02C1(MSB中应该有一个数字)
我的代码如下:
LOAD SB, 00
LOAD SF, 08
multloop:
SR0 SA;
JUMP NC, shiftproduct
ADD SB, s9
shiftproduct :
SRA SB
SRA SC
SUB SF, 01
JUMP NZ, multloop
OUTPUT sB,05 ; upper byte of seven segment display
OUTPUT sC,04 ; lower byte of seven segment display
谢谢你, 朱利
答案 0 :(得分:0)
我会以这种方式重写代码。旧版本的问题是:
SC
注册表尚未初始化为00
(可能是00开始,但我不想假设它)将被映射添加到产品SC:SB
时,您不仅需要将其添加到SB
,还需要将任何结果进位添加到SC
LOAD SB, 00
LOAD SC, 00 ; <-- Needed to init SC
LOAD SF, 08 ; Loop counter
multloop:
SR0 SA
JUMP NC, shiftproduct
ADD SB, s9
ADDCY SC, 00 ; <-- NEEDED and add C here to SC
shiftproduct:
SRA SB
SRA SC
SUB SF, 01
JUMP NZ, multloop
OUTPUT sB,05 ; upper byte of seven segment display
OUTPUT sC,04 ; lower byte of seven segment display