#ecnu20201B. 上古计算机
上古计算机
时间限制: 2.0 秒
空间限制: 512 MB
题目描述
Smith 有一台古老的计算机,这台计算机使用一套非常特殊的标记编程语言。现在我们仅考虑这一语言的一个小的子集,该子集可以实现一个简单计算器。
这台机器一共有 4 个无差别的寄存器,分别为 AX, BX, CX, DX,在指令中他们可以互相替代,下面的表格列出了所有支持的指令。
| 指令 | 中文名 | 格式 | 解释 |
|---|---|---|---|
| IN | 读操作指令 | IN AX,number | AX = number(读数据存储在 AX 中) |
| MOV | 传送指令 | MOV AX,BX | AX = BX |
| ADD | 加法指令 | ADD AX,BX | AX = AX + BX |
| SUB | 减法指令 | SUB AX,BX | AX = AX - BX |
| MUL | 乘法指令 | MUL AX,BX | AX = AX × BX |
| DIV | 除法指令 | DIV AX,BX | AX = AX / BX(执行 C 语言中 int 之间的除法) |
| OUT | 写操作指令 | OUT AX | 输出 AX 的值 |
例如:以下代码实现表达式 (2+3*5)/6 的计算并输出计算结果。
IN AX,3
IN BX,5
MUL AX,BX
IN CX,2
ADD CX,AX
IN BX,6
DIV CX,BX
OUT CX
输入用这种特殊标记编程语言编写的一段代码,请编写一个翻译器,对代码进行翻译,输出最后运行结果。
输入格式
从标准输入读入数据。
输入若干行,为代码片段。
保证读入的数据均为 int 类型整数,所有被计算的数值(包括中间值)均在 int 范围内。保证不包含任何多余的空白字符,在开始执行前,所有寄存器的值可以视为已经清零。
输出格式
输出到标准输出。
对于每个 OUT 指令,输出一行一个整数表示结果。
IN AX,3
IN BX,5
MUL AX,BX
IN CX,2
ADD CX,AX
IN BX,6
DIV CX,BX
OUT CX
2
子任务
设指令数为 :
对于 的数据,;
对于 的数据,;
对于全部数据,。