简单的电脑
#描述#
一台简单的电脑使用一个极少指令的处理器,它配备有32字节的存储器,一个8位的累加器(accu),一个5位的程序计数器(pc)。存储器同时也是处理器运行的代码,就像普通的冯·诺依曼结构一样。<br>
<br>
程序计数器(pc)表示下一条要执行的指令地址。每个指令都是一个字节——高3位表示指令类型,低5位表示指令参数。有些指令的参数是一个存储器地址(xxxxx),有些指令不需要低5位所以它们的低5位(-----)没有意义。这里有一个列表表示机器指令和它们的含义。<br>
<br>
000xxxxx STA x<br>
将累加器(accu)里的内容存至内存地址x处<br>
001xxxxx LDA x<br>
将内存地址x的内容加载至累加器(accu)<br>
010xxxxx BEQ x<br>
如果累加器的值是0,那么把x赋值给程序计数器(pc)<br>
011----- NOP<br>
无操作<br>
100----- DEC<br>
累加器减1<br>
101----- INC<br>
累加器加1<br>
110xxxxx JMP x<br>
把x赋值给程序计数器(pc)<br>
111----- HLT<br>
程序停止<br>
<br>
一开始,程序计数器(pc)和累加器(accu)都为0。<br>
在接收下一条指令(在存储器中的地址为pc的值)后,程序计数器(pc)加1,再执行该指令。保证程序会停止。<br>
<br>
<b>Input</b><br>
输入包含多组数据。<br>
每组数据有32行,每行是一个8位的01串,表示存储器里的数据,一个字节的8位数据从高位到低位给出。<br>
输入以EOF结尾。<br>
<br>
<b>Output</b><br>
对于每组数据,输出程序停止时累加器(accu)里的值以二进制形式输出,高位在左。
每组数据结果占一行。
#格式#
##输入格式##
##输出格式##
#样例1#
##样例输入1##
00111110
10100000
01010000
11100000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00111111
10000000
00000010
11000010
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
11111111
10001001
##样例输出1##
10000111
#限制#
1000ms
32768KB
#提示#
#来源#
Boski.Jr