У меня возникла проблема с отображением четырех цифр на семисегментном дисплее. У меня есть следующий цикл, и все работает хорошо, за исключением отображения в 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
Привет, Луркер, спасибо за ваш ответ. Да SRA вращается через все биты, включая перенос. – Julius