Этикетка не распознана

#assembly #lc3

#собрание #lc3

Вопрос:

Я пытаюсь реализовать базовую программу в сборке LC3, но ассемблер, похоже, не распознает одну из меток. Интересно, почему он не распознает только последний:

 .ORIG 0x300 NUMBER: .FILL x0006 NUMBER2: .FILL x0003 R1MAGG: .FILL x0999 UGUALI: .FILL 0x500 R1MIN: .FILL x0001 LD R1, NUMBER LD R2, NUMBER2 ;I stored in R1 and R2 2 numbers ;Now I compare them NOT R2, R2 ADD R2, R2, #1 ADD R3, R1, R2 BRp R1MAGGIORE BRn R1MINORE LD R4, UGUALI JSR EOP  R1MAGGIORE:   LD R4, R1MAGG  JSR EOP  R1MINORE:   LD R4, R1MIN  JSR EOP  EOP:  .END  

И это ошибка, которую он возвращает: СТРОКА 28: Нераспознанный код операции или синтаксическая ошибка в или перед». END»

Ответ №1:

Попробуйте EOP: HALT , а затем .END перейдите на следующую строку, как у вас есть. Подозреваю, что он жалуется на пропущенную инструкцию, но вы действительно должны завершить программу с HALT помощью инструкции (trap) в любом случае.


Вы уверены, что хотите .ORIG 0x300, а не x3000?


Вы можете подумать о том, чтобы поместить свои данные после кода, чтобы симулятор не пытался выполнить ваши данные. В противном случае вы можете поместить a BR MAIN в качестве первой инструкции (т. Е. Перед/перед данными) и метку MAIN: , в которой у вас есть первые реальные инструкции для программ, чтобы она перескакивала с ваших данных на начальную точку вашей программы.

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

1. Закрытие симулятора и его повторное открытие сделали это, но я все равно приму ваш ответ. P.S. Совет, данный по поводу добавления ГЛАВНОГО БР, заставил меня решить тонны предупреждений, спасибо