Интерпретация вывода ассемблера
Рассмотрим следующий вывод ассемблера:
START 100
MOVER BREG, ONE 101) + 04 2 105
MOVEM BREG, RESULT 102) + 05 2 106
PRINT RESULT 103) + 10 0 106
STOP 104) + 00 0 000
ONE DC '1' 105) + 00 0 001
RESULT DS 1 106)
- Что означает знак + перед кодом?
- Почему адрес
ONE
дано001
? - Почему запись после последнего
RESULT DS 1
заявление оставлено пустым?
Обратите внимание, что это не домашняя работа - спрашивающий, кажется, спрашивает о чем-то из учебника.
2 ответа
Я не знаю, каким ассемблером вы пользуетесь (возможно, было бы разумно дать эту информацию в вашем вопросе), поэтому это не очень хорошо информированные ответы:
- Не знаю - что говорит руководство вашего ассемблера
- Это не - это ценность
- DS просто резервирует место
Редактировать: ассемблер - это компьютерная программа, которая берет текст, содержащий язык ассемблера, и превращает его в машинный код. Он также может выводить данные в удобочитаемой форме, что и является кодом, который вы опубликовали. Формат читаемой человеком формы зависит от конкретного ассемблера (то есть программы), который вы используете - он не специфичен для архитектуры машины, для которой ассемблер генерирует машинный код.
По-видимому, для этого используется простой язык ассемблера в главе 4 " Системные программы и эксплуатация".
В описании вывода кода операции написано: "Знак не является частью инструкции". Быстрое прочтение текста не показало, к чему оно относится, и во всех примерах в этом столбце есть "+".
Знак "+" не является частью инструкции. (Эта сторона числовых инструкций - машинная инструкция)
Адрес ONE - 105, а 001 - это значение, присвоенное ONE с помощью DC, который является краткой формой объявления константы.
DC резервирует пространство слова памяти и назначает константу.
Запись РЕЗУЛЬТАТА DS 1 оставлена пустой, потому что DS резервирует пространство памяти для данного требования, здесь дано только 1, поэтому он резервирует только одно место слова памяти.
Другая сторона только числовой части - это машинная инструкция, она следует ниже формату
Sign opcode register_opcode memory_operand
Например,
101) memory location
+ Sign (not part of instruction)
04 Machine opcode ( occupy 2 digits )
2 Register operand ( occupy 1 digit )
105 Memory operand ( occupy 3 digits )
Примечание. Это простой язык ассемблера для гипотетического компьютера, который используется для иллюстрации функций и методов ассемблера.