Что делает директива ORG в ассемблерном коде? - PullRequest
1 голос
/ 26 мая 2009

Для справки, код для Motorola 68008.

Скажем, у меня есть такой код:

org 200
sequenceO: ds.b 5
sequenceN: ds.b 5

move.w #sequenceO, A0
move.w #sequenceN, A1
  1. Правильно ли я считаю, что A0 будет содержать значение 200, а A1 значение 205?

  2. Один из вопросов экзамена в предыдущей статье был: «Каковы физические адреса sequence0 и sequenceN?», Будет ли ответ «200 и 205» или «200-204 и 205» -209" ?

  3. Я видел несколько фрагментов кода с несколькими директивами org, например;

    Орг 100

    массив1: ds.b 4

    org 300

Прав ли я, считая, что последняя директива org соблюдается, например, в этом случае array1 указывает на 300?

Ответы [ 4 ]

2 голосов
/ 26 мая 2009
  1. Да, это звучит правильно. Адрес sequenceN на 5 байтов больше sequence0.
  2. "Это зависит", я полагаю ... Поскольку это "адреса" во множественном числе, я думаю, они хотели получить весь диапазон, и в этом случае ваш последний ответ правильный.
  3. Нет, я ожидал бы, что несколько org будут применяться только к следующему коду коду, поэтому в этом случае array1 будет стоить 100 долларов. Поскольку после последнего org генерация кода или данных не происходит, ассемблер в основном игнорирует их.
2 голосов
/ 26 мая 2009

Я предполагаю, что "ORG" означает "источник" - первый адрес, который должен быть назначен для кода или сегмента данных, которые отправляются.

1 голос
/ 26 февраля 2015

Вы используете: MOVE.W #sequenceO, A0

Итак, вы загружаете только нижнее слово (16 бит) адреса в A0. Это будет работать только при очень малой памяти (A0 при $00010000)

Как правило, использование MOVE.W в регистре адресов усложняется.

Попробуйте: LEA #sequence0, A0 (загружает 32-битный адрес в A0)

Большинство ассемблеров также будут делать:

MOVEA.L #sequence0, A0

Спасибо, Дейв Смолл

1 голос
/ 26 мая 2009
  1. Да, 200 и 205

  2. Sequence0 начинается с 200 и продолжается на 5 байт до 204

  3. Нет, array1 начинается с 100, все, что после org 300 будет начинаться с 300

...