我有一个累加器架构的机器代码。 该架构为8位;指令编码看起来像 真实的机器代码用于指令一例如:001 1 0001,001表示LOAD,1表示该值为,001表示小数1,因此其LOAD#1
0---LOAD #1
1---STORE 15
2---LOAD #0
3---EQUAL #4
4---JUMP #6
5---HALT
6---LOAD 3
7---SUB #1
8---STORE 3
9---LOAD 15
10--ADD 15
11--STORE 15
12--JUMP #2
13-- 000 0 0000
14-- 000 0 0000
15-- 000 0 0000
当程序停止时,我必须找到内存单元格15中的内容。
但是如果跳转到指令2,这意味着累加器的值为0,永远不会等于4,程序只会以无限循环运行,对吧?
如果存储单元3为空,那么STORE 3会做什么?这是否意味着当存储单元为空时其值为0?
如果不回答这两个问题我就无法继续下去
答案 0 :(得分:1)
我假设这是针对n累加器架构的,我不得不对该架构做出一些假设。您真的需要更多地描述您的CPU如何工作以使其成为一个可回答的问题。
是的,在#3处,累加器将始终为0。 是的,如果指令#3永远不会改变,那么0永远不会等于4,程序将永远循环。
但是,当你存储到存储单元3时,我想你最终用单元3中的指令替换现在的累加器中的指令。
所以,有趣的问题是当你从equal #4
的指令表示中减去1时会发生什么。
这取决于yoru特定的架构,但我的强烈猜测是你获得equal #3
并将其存储在单元格3中。
这应该足以让你逐步了解你的循环何时终止以及单元格15中的内容。