2014-03-06 76 views
0

對於學術目的,我被要求把這種說法僞翻譯成機器代碼

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 2與位置XY的內容
2RXY - 加載寄存器R 2與值XY
3RXY - 在位置XY
4iRS寄存器R的存儲內容 - 移動內容寄存器R到寄存器S
5RST - 添加寄存器S的內容和T爲二進制數,將結果放入寄存器R中
6RST - 添加寄存器S和T的內容作爲浮點數,將結果放入寄存器R中
7RST - 將寄存器S和T的內容放在一起結果在寄存器R中
8RST - AND一起寄存器S和T,將結果的寄存器R中的內容
9RST - XOR一起寄存器S和T,將結果放入寄存器R中
亞利桑那州的內容 - 旋轉內容的寄存器R的一個比特向右,Z倍
BRXY - 跳轉到指令在XY如果寄存器0的寄存器R爲相同內容的內容
CIII - 暫停
DRXY - 跳轉到指令在XY如果寄存器R的內容是更大比寄存器的內容0
R,S,T - 寄存器編號
XY - 單字節地址或d ATA價值
Z - A半字節值
我 - 當指令被解編碼忽略:通常輸入爲0

以上是機器語言,我預計將使用。

回答

1

要是有一條指令:

EABXY - Store value XY at location AB 

如果該命令的存在,你的程序是:

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

但是,該指令不存在 - 部分是因爲它需要五個半字節字符,並且說明適合四個字符。

所以你將不得不使用兩步來模擬'E'指令。

您不能指定一個值直接放入地址。

  • 有一條指令可以讓你指定一個值並把它放在某個地方。
  • 有一個指令複製從某處的值,進入一個地址

這是真的足夠線索。

+0

感謝您回覆,所以我仍然在「猜測」模式,在這裏,因爲我不知道如何打破「指定x」和「值5」分成兩個4位代碼。我會說 1R58 - 58因爲在十六進制58是字母X THEN 2558 - 2,因爲這是第2步5因爲我要58進入寄存器5然後 c000 – Brittany

+0

我會開始與操作代碼將是1對嗎?之後是我迷路的地方。 – Brittany

+0

謝謝你苗條。我會仔細研究並弄清楚。 – Brittany