Интерпретация вывода ассемблера

Рассмотрим следующий вывод ассемблера:

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) 
  1. Что означает знак + перед кодом?
  2. Почему адрес ONE дано 001?
  3. Почему запись после последнего RESULT DS 1 заявление оставлено пустым?

Обратите внимание, что это не домашняя работа - спрашивающий, кажется, спрашивает о чем-то из учебника.

2 ответа

Решение

Я не знаю, каким ассемблером вы пользуетесь (возможно, было бы разумно дать эту информацию в вашем вопросе), поэтому это не очень хорошо информированные ответы:

  1. Не знаю - что говорит руководство вашего ассемблера
  2. Это не - это ценность
  3. DS просто резервирует место

Редактировать: ассемблер - это компьютерная программа, которая берет текст, содержащий язык ассемблера, и превращает его в машинный код. Он также может выводить данные в удобочитаемой форме, что и является кодом, который вы опубликовали. Формат читаемой человеком формы зависит от конкретного ассемблера (то есть программы), который вы используете - он не специфичен для архитектуры машины, для которой ассемблер генерирует машинный код.

По-видимому, для этого используется простой язык ассемблера в главе 4 " Системные программы и эксплуатация".

В описании вывода кода операции написано: "Знак не является частью инструкции". Быстрое прочтение текста не показало, к чему оно относится, и во всех примерах в этом столбце есть "+".

  1. Знак "+" не является частью инструкции. (Эта сторона числовых инструкций - машинная инструкция)

  2. Адрес ONE - 105, а 001 - это значение, присвоенное ONE с помощью DC, который является краткой формой объявления константы.

    DC резервирует пространство слова памяти и назначает константу.

  3. Запись РЕЗУЛЬТАТА 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 )

Примечание. Это простой язык ассемблера для гипотетического компьютера, который используется для иллюстрации функций и методов ассемблера.

Другие вопросы по тегам