2016-10-21 8 views
0

У меня есть код, который я тестировал в сборке Pep/8, который берет ввод символа> < = и делает сравнения. После того, как сравнения завершены и выполняется соответствующая математическая операция, я хочу, чтобы программа запрашивала у пользователя другой ввод.Pep/8 Assembly Carriage Return clear?

Я не знаю, почему, но моя программа выполняет рутинирование по входному сигналу, и поскольку, если он обнаруживает «недействительный» вход, он просто направляется прямо к состоянию, чтобы выйти из программы. Я предполагаю, что это вопрос возврата каретки на данный момент. Есть ли способ очистить содержимое «догадки» перед повторным запросом?

 CHARI  guess,d  ;character input 
    LDBYTEA guess,d  ; load character into reg a 
    CPA  '>',i 
    BRNE  L 

Любая помощь была бы полезной, спасибо.

+0

Может быть, просто CPA для CR и вернитесь в CHARI? (для создания бесконечного цикла ввода любого символа без символа CR). (не может найти хороший ресурс для pep/8 онлайн, поэтому просто гадать) – Ped7g

ответ

0

Есть несколько проблем, с которыми вы могли столкнуться.

Если ваше первое число больше 255, вы можете столкнуться с проблемами с LDBYTEA, поскольку он заменяет только последние 8 бит регистра. Это легко увидеть с помощью быстрой тестовой программы.

LDA  0x0123,i 
LDBYTEA 0x01,i 
STOP 
.END 

(Ends с аккумулятором, имеющим значение 0x0101)

CPA проверит все 16 битов регистра, что вызвало бы ее не соответствовать> < или =, если первые 8 битов Арен» t установлено в 0. Вы можете решить эту проблему, загрузив 0 перед загрузкой байта или выполнив И с 0x00FF (255), чтобы очистить первые 8 бит.

Когда пользователь нажимает кнопку ввода, это считается символом, с которым вам придется иметь дело. Лучше всего его игнорировать - проверить, является ли входящий символ «\ n» (0x0A), и если да, вернитесь к символьному вводу.

guess: .BYTE 0 
main: CHARI guess,d 
     LDBYTEA guess,d 
     CPA  '\n',i 
     BREQ main 
     STOP 
     .END 

Если у вас есть, чтобы очистить содержимое догадка, вы можете сделать это, загрузив значение, например 0 в регистр, а затем сохранить его на догадку.

LDA  0,i 
STA  guess,d 

Если у вас есть что-то в аккумуляторе, которое вы не хотите перезаписывать, вы можете использовать индексный регистр. (LDX и STX)

Вы могли бы, конечно, сделать еще один ввод символов, который заменит содержание угадывания.


Если у вас по-прежнему возникают проблемы, используйте шаг «Начать отладочный источник», чтобы пройти шаг за шагом. (Похоже, зеленая стрелка с маленьким жуком внизу)