出于学术目的,我被要求翻译此声明
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
7RST - 或者将寄存器S和T的内容合在一起,将结果存入寄存器R
8RST - 将寄存器S和T的内容合在一起,将结果存入寄存器R
9RST - 将寄存器S和T的内容组合在一起,将结果存入寄存器R
ARiZ - 将寄存器R的内容向右旋转一位,Z乘以
BRXY - 如果寄存器R的内容等于寄存器0的内容,则跳转到XY指令
Ciii - 停止
DRXY - 如果寄存器R的内容大于寄存器0的内容,则跳转到XY指令
R,S,T - 寄存器号码
XY - 单字节地址或数据值
Z - 半字节值
i - 当指令被解码时忽略:通常输入为0
以上是我应该使用的机器语言。
答案 0 :(得分:1)
如果只有指令:
EABXY - Store value XY at location AB
如果该命令存在,您的程序将是:
E4705 # store '05' at address '47'
C000 # halt
但是,该指令不存在 - 部分原因是它需要五个半字节字符,并且指令适合四个。
因此,您将不得不使用两个步骤来模拟“E”指令。
您无法指定直接放入地址的值。
那是真的足够的线索。