Асемблер за Мари

Искам да напиша асемблер за marie, но съм заседнал в началото. Моят машинен код трябва да има следния формат: FFFF 'първи адрес' 'последен адрес' '...команди'

Да кажем, че имаме код като този:

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

Сега няма начин да разбера от кой адрес започваме, така че трябва ли да използвам 100 през цялото време или понякога се променя?

Сега, за последния адрес, просто 100+ (брой команди) ли е?

Благодаря предварително


person user3885166    schedule 05.01.2015    source източник


Отговори (1)


Асемблерите в реалния живот използват мета-инструкция (често наричана ORG, която е съкращение от „произход“, напр. ORG 100), за да инструктира асемблера кой адрес да започне (или да възобнови, когато е поставен някъде по средата на програмата). Разбира се, не се колебайте да го разрешите по друг начин (твърдо кодиран; параметър на командния ред).

Точно кой е правилният адрес за програма, написана за MARIE, зависи изцяло от системата за изпълнение (на реални компютри, операционната система; във вашия случай, симулатор). Виждам примерни кодове, започващи от 100, така че това би имало смисъл. Може би адреси под 100 са запазени за системата за изпълнение, кой знае.

Оттам асемблерът автоматично увеличава адреса с всяка инструкция. С MARIE, предполагам, че това е ясно (просто добавете едно); в процесорите от реалния живот различните инструкции обикновено имат различни размери.

За останалото, ако знаете как да конвертирате асемблерния език в машинен код на ръка, тогава автоматизирането на този процес трябва да е лесно.

person Ruud Helderman    schedule 05.01.2015