我正在学习计算机编程艺术(Knuth's)混合教学。
我正在努力理解MUL 1000指令如下:
| + | 1 | 1 | 1 | 1 | 1 | [rA before]
| + | 1 | 1 | 1 | 1 | 1 | [Cell 1000]
| + | 0 | 1 | 2 | 3 | 4 | [rA after]
| + | 5 | 4 | 3 | 2 | 1 | [rX After]有什么方法可以知道为什么rA和rX会得到这些值呢?
帮帮忙!
发布于 2017-06-23 13:05:23
混合的乘法指令定义为,请看这里。
MUL ADDR,i(0:5) --> (rA,rX) := rA * memory[ADDR + rIi];
这意味着累加器寄存器rA和内存地址ADDR + rIi (其中rIi是索引寄存器)的值被乘以。乘法结果存储在累加器寄存器rA和扩展寄存器rX中。
以下情况也适用:
MIX是一台混合二进制-十进制计算机.
因此,计算是通过简单地使用长乘法来完成的,如下所示,其中Cell 1000来自命令MUL 1000,而不使用索引寄存器rIi。标识符Cell 1000是指存储1 1 1 1 1的地址,而不是值本身。
rA: 1 1 1 1 1
Cell 1000: * 1 1 1 1 1
___________________
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
___________________
0 1 2 3 4 5 4 3 2 1
| rA | rX |
rA = 0 1 2 3 4
rX = 5 4 3 2 1https://stackoverflow.com/questions/44712763
复制相似问题