2015-01-05 2 views
0

Я хочу написать ассемблер для marie, однако я застрял в самом начале. Мой машинный код должен иметь следующий формат: FFFF «первый адрес» «Последние Адресная»»... командыАссемблер для Мари

Допустим, у нас есть такой код:

LOAD 104 
ADD 105 
STORE 106 
HALT 
HEX 23 
HEX FFE9 
DEC 0 

Теперь, нет никакого способа, чтобы узнать, с какого адреса мы начинаем, так что я должен использовать только 100, или это иногда меняется?

Теперь, для последнего адреса, это просто 100+ (количество команд)?

Заранее спасибо

ответ

1

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

Точно правильный адрес для программы, написанной для MARIE, полностью зависит от системы исполнения (на реальных компьютерах, ОС, в вашем случае, симулятора). Я вижу образцы кода, начиная с 100, так что это имеет смысл. Возможно, адреса ниже 100 зарезервированы для системы времени выполнения, кто знает.

Оттуда ассемблер автоматически увеличивает адрес с каждой инструкцией. С МАРИ, я полагаю, это просто (просто добавьте один); в реальных процессорах разные инструкции обычно имеют разные размеры.

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

Смежные вопросы