Преобразование псевдокода в машинный код

В академических целях меня просят перевести это утверждение

assign x the value 5

В машинный код, составленный автором книги по информатике, который называется машинным кодом Брукшира. мне дали подсказку что

(HINTS: Assume that the value of x is to be stored into main memory location 47. Your program would begin by loading a value into a register. You do not need to specify the memory locations of your program. Don't forget to end the program with the HALT instruction.)

Мне интересно, знает ли кто-нибудь, как лучше всего подойти к этому? Он дает понять, что нужно закончить инструкцией по остановке, но я не уверен, что именно мне следует делать.

0iii - Не используется
1RXY - Загрузить регистр R с содержимым ячейки XY
2RXY - Загрузить регистр R со значением XY
3RXY - Сохранить содержимое регистра R в ячейке XY
4iRS - Переместить содержимое регистр R в регистр S
5RST - Сложить содержимое регистров S и T в виде двоичных чисел, поместить результат в регистр R
6RST - Сложить содержимое регистров S и T в виде чисел с плавающей запятой, поместить результат в регистр R< br> 7RST - ИЛИ вместе содержимое регистров S и T , поместить результат в регистр R
8RST - И вместе содержимое регистров S и T , поместить результат в регистр R
9RST - XOR вместе содержимое регистров S и T , поместить результат в регистр R
ARiZ - Сдвинуть содержимое регистра R на один бит вправо, Z раз
BRXY - Перейти к инструкции в XY, если содержимое регистра R равно содержимому регистра 0
Ciii - Halt
DRXY - Перейти к инструкции по XY, если содержимое регистра R больше, чем conte nts регистра 0
R,S,T — номера регистров
XY — однобайтовый адрес или значение данных
Z — полубайтовое значение
i — игнорируется при создании инструкции закодировано: обычно вводится как 0

Выше приведен машинный язык, который я должен использовать.


person Brittany    schedule 06.03.2014    source источник


Ответы (1)


Если бы была инструкция:

 EABXY - Store value XY at location AB

Если бы эта команда существовала, ваша программа была бы такой:

 E4705   # store '05' at address '47'
 C000    # halt

Но этой инструкции не существует — отчасти потому, что она занимает пять полубайтовых символов, а инструкции предназначены для четырех.

Таким образом, вам придется имитировать инструкцию «E», используя два шага.

Вы не можете указать значение, которое будет помещено в адрес напрямую.

  • Есть одна инструкция, которая позволяет указать значение и поместить его куда-нибудь.
  • Есть одна инструкция, которая копирует значение откуда-то в адрес

Это действительно достаточно подсказок.

person slim    schedule 06.03.2014
comment
Спасибо за ответ, поэтому я все еще нахожусь здесь в режиме угадывания, потому что не понимаю, как разбить присваивание x и значение 5 на два 4-значных кода. Я бы сказал 1R58 - 58, потому что 58 в шестнадцатеричном формате - это буква X, ТОГДА 2558 - 2, потому что это шаг 2 5, потому что я хочу, чтобы 58 попало в регистр 5, ТОГДА c000 - person Brittany; 06.03.2014
comment
Я бы начал с кода операции, который был бы 1, верно? после этого я теряюсь. - person Brittany; 06.03.2014
comment
СПАСИБО Слим. Я посмотрю это и разберусь. - person Brittany; 06.03.2014
comment
1R05 3R47 C000 Вот что у меня есть - person Brittany; 06.03.2014
comment
Замечательно! Спасибо, теперь меня спрашивают assign halfway the value length + width Можем ли мы поговорить иначе, чем в поле для комментариев? Мне бы очень пригодилась ваша помощь, если вы не против =) - person Brittany; 06.03.2014
comment
Думаю, вам нужно время, чтобы все обдумать. - person slim; 06.03.2014