我在七段顯示器上顯示四位數字時出現問題。我有以下循環,除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