Как мне преобразовать эти команды в машинный код на языке ассемблера LC-3?

#assembly #lc3

#сборка #lc3

Вопрос:

Для одного из моих классов мне нужно написать программу LC-3 в машинном коде, и я, похоже, не могу найти машинные коды для команд, для которых есть точка:

 .ORIG
.END
.BLKW
  

и т. д

Кто-нибудь знает, что это такое? Я выполнил все команды, например: AND R2, R2, #0 —> 0101 010 010 1 00000

Однако я не могу найти, какие первые четыре бита для команд .ORIG , .END , .BLKW находятся где-либо в Сети.

Ответ №1:

Я не знаком с вашим конкретным диалектом, но в большинстве языков ассемблера ключевые слова, начинающиеся с a . , являются не мнемоникой инструкций, а директивами ассемблера. В вашем случае это выглядит так, как будто, возможно .ORIG , означает начало программы и .END конец. .BLKW похоже на какую-то операцию заполнения памяти.

Редактировать: я выполнил поиск в Google и получил эту презентацию. В нем говорится, что .ORIG описывает, куда поместить следующий блок в памяти. Например .ORIG 0x3000 , будет установлена следующая инструкция по адресу 0x3000 . .END , как я упоминал выше, описывает конец программы. .BLKW означает «блочное слово» и используется, например, для резервирования места для использования в качестве массива.

Во всех случаях для этих директив не существует каких-либо конкретных машинных кодов. Для .ORIG этого просто запишите следующие коды операций или данные в указанном месте. .END вообще не отображается в машинном коде и .BLKW означает, что вы можете просто скопировать указанные байты непосредственно из программы сборки в машинный код.

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

1. Это то, что они означают, да. На других языках ассемблера эти вещи не имеют интерпретации машинного кода?

2. @user1017593, нет, они этого не делают. Они не являются инструкциями или данными, так зачем им это? Они просто указывают ассемблеру, что делать с содержимым программы.

3. Спасибо за ответ. Я новичок во всем этом, поэтому меня это смущало.

4. Когда я пытаюсь преобразовать его сейчас, он выдает ошибки для всех этих кодов. Строка 10: Неожиданный символ ‘.’ для . ОРИГИНАЛЬНЫЙ x3000

5. Что вы имеете в виду «когда я пытаюсь его преобразовать»? Разве вы не делаете это вручную?