Не могу найти причину, по которой мое приглашение «введите конечный номер(0-16):» продолжает зацикливаться. Мое приглашение на запуск перестанет зацикливаться, но в конце не будет никаких предложений?

#loops #assembly #lc3

Вопрос:

 .ORIG x3000    ;clear registers   AND R0, R0, #0 ; clear RO AND R1, R1, #0 ; clear R1 AND R2, R2, #0 ; clear R2 AND R3, R3, #0 ; clear R3 AND R4, R4, #0 ; clear R4 AND R5, R5, #0 ; clear R5 AND R6, R6, #0 ; clear R6        ;print "Enter Start Number(0-16):" and get the start number on the same line  RESTARTS LEA R0, START  PUTS  GETC  OUT   ; move starting number value into a different register  ADD R3, R0, #0 ; R0 data moved to R3   START .STRINGZ "nnEnter Start Number(0-16):"   ;check bounds on start number  LD R5, NASCII ; R5 loaded with #-57  ADD R6, R3, R5 ; R6 = R3   #-57  BRn RESTARTS ; when value is negative branch to restart    LD R5, ADSCII  ADD R1, R3, R5  BRp RESTARTS              ;print "Enter End number(0-16):"     RESTARTE LEA R0, END  PUTS   GETC   OUT  ; Check bounds          LD R5, NASCII  ADD R6, R4, R5  BRn RESTARTE    LD R5, ADSCII  ADD R1, R4, R5  BRp RESTARTE    HALT   END .STRINGZ "nnEnter End number(0-16):"  ; move the end number into a different register  ADD R4, R0, #0 ; R0 data moved to R4   ; R0 data now free         ; check if number is within bounds        ; reset R6 and R1     AND R1, R1, #0  AND R6, R6, #0   ; can use R6 and R1 cleared above      ;convert register R3(start number) into a keyboard character (strip ascii)      LD R1, NASCII  ADD R3, R3, R1 ; R3 = -48   x    ADD R4, R4, R1 ; R4 = -48   y   NASCII .FILL #-48 ADSCII .FILL #-57     ; make the program find odd values between entered values               ; add the odd numbers between the values entered     ;print "the sum of every odd number between the two numbers is:"    .END  

Комментарии:

1. Ваш второй цикл, похоже, зависит от некоторого значения, R4 которое вы не установили. Кроме того, почему вы размещаете строки в середине последовательности команд? Как процессор узнает, что он не должен интерпретировать строковые данные как набор инструкций (мусора) и пытаться их выполнить?

2. Как говорит Майкл, не смешивайте код и данные. Переместите все данные в после всего кода.