Превеждане на псевдокод в машинен код

За академични цели ме помолиха да преведа това изявление

assign x the value 5

В машинен код, който е съставен от автор на книга по компютърни науки, наречен машинен код на Brookshear. Дадена ми е намек

(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 - Спиране
DRXY - Преминаване към инструкция в XY, ако съдържанието на регистър R е по-голямо от съдържанието на регистър 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