我在七段显示器上显示四位数字时出现问题。我有以下循环,除MSB中的显示外,一切正常。我知道这是因为输入S9只有4位,所以当我乘以SA(这是七段显示器的当前值)时,结果只给出了12位,最后一位保持为0,即使当我保持乘以其他数字溢出到下一位的位置。所以我不知道如何在不改变产品的情况下使它成为四位数字。请参阅下面的示例,并在显示屏上显示结果。 ˚F次F给出我00E1 E1次F给出我0D2F D2F次F给出我02C1(那里应该已经在MSB一个数字)4位乘以8位汇编乘法
我的代码如下:
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
谢谢你, Julius
不知道什么CPU日是为了,还是仅仅是概念上的,但是'SRA'是否通过进位轮换?另外(这不是你问题的原因),你可能应该在开始的时候有'LOAD SC,00'。作为一种效率,当SA'变为零时,您可以终止您的循环。 'SF'中不需要循环计数器。如果你有一个“增加进位”指令,我会用4位数作为乘数而不是8位数,这可能是循环迭代次数的一半。 – lurker
我认为你的循环在完成时也会多次进行产品左移。根据你的循环逻辑,'SRA SB'和'SRA SC'在你决定是否退出循环之前完成。如果是这样的话,你总会看到一款产品(尽管在你的声明中,你说的是你获得了正确的结果)。在决定是否退出循环之前,你可能想要做一次轮班*。 – lurker
嗨Lurker,谢谢你的回应。是的,SRA通过所有位进行旋转,包括进位。 – Julius