#P2410. Simple Computers

Simple Computers

描述

您将为一台简单的计算机编写一个解释器。此计算机使用具有少量计算机指令的处理器。此外,它还配备了 32 字节内存、一个 8 位累加器 (accu) 和一个 5 位程序计数器 (pc)。存储器包含数据和代码,这是通常的 von Neumann 架构。

程序计数器保存接下来要执行的指令的地址。每条指令的长度为 1 字节 - 最高的 3 位定义指令的类型,最低的 5 位定义一个可选的作数,它始终是内存地址 (xxxxx)。对于不需要作数的指令,最低的 5 位没有意义 (-----)。以下是机器指令及其语义的列表:

$000xxxxx STA x store the value of the accu into memory byte x

001xxxxx LDA x load the value of memory byte x into the accu

010xxxxx BEQ x if the value of the accu is 0 load the value x into the pc

011----- NOP no operation

100----- DEC subtract 1 from the accu

101----- INC add 1 to the accu

110xxxxx JMP x load the value x into the pc

111----- HLT terminate program $

开始时,程序 counter 和 accumulator 设置为 0。在获取指令之后但在执行之前,程序计数器将递增。您可以假设程序将终止。

输入

输入文件包含多个测试用例。每个测试用例都指定在执行程序之前内存的内容。字节 0 到 31 以二进制表示形式在单独的行上给出。字节由其最高位到最低位表示。输入由 EOF 终止。

输出

对于每个测试用例,在一行上输出 accumulator 在终止时的二进制表示值,同样在最高位之前。

输入数据 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

来源

Ulm Local 2000