该项目是模拟由CPU和内存组成的简单计算机系统。 CPU和内存是通过交流的单独过程模拟的。内存包含CPU将执行的一个程序,然后模拟将结束。
对于CPU:
用于内存:
对于计时器:
用于中断处理:
指令集:
- > 1 =负载值#将值加载到AC中
- > 2 = load addr#将地址处的值加载到AC中
- > 3 = loadind addr#从给定地址中的地址加载值中的值。 (例如,如果Loadind 500和500包含100,则从100中加载)。
- > 4 = loadIdxx addr#将值(地址+x)加载到AC中。 (例如,如果LoadIdxx 500和X包含10,则从510加载)。
- > 5 = loadiDxy addr#将值加载到(地址+y)中
- > 6 = loadSpx#从(SP+X)加载到AC中(如果SP为990,而X为1,负载为991)。
- > 7 =存储addr#将AC中的值存储到地址中
- > 8 =获取#从1到100的随机int进入AC
- > 9 = put port#如果端口= 1,请将AC作为屏幕上的int写入;如果端口= 2,请将AC作为char写在屏幕上
- > 10 = addx#将x中的值添加到AC中
- > 11 = addy#将y中的值添加到交流
- > 12 = subx#从AC中减去X中的值
- > 13 = suby#从AC中减去y中的值
- > 14 = CopyTox#将AC中的值复制到X
- > 15 = copyfromx#将x中的值复制到AC
- > 16 = CopyToy#将AC中的值复制到Y
- > 17 =复制#将Y中的值复制到AC
- > 18 = copyTosp#将AC中的值复制到SP
- > 19 = copyfromsp#将SP中的值复制到AC
- > 20 =跳跃addr#跳到地址
- > 21 = JumpifeQual addr#仅在AC中的值为零时跳到地址
- > 22 = JumpiFnoteQual addr#仅在AC中的值不为零时跳到地址
- > 23 =呼叫addr#将返回地址推到堆栈,跳到地址
- > 24 = RET#从堆栈中的POP返回地址,跳到地址
- > 25 = incx#递增x中的值
- > 26 = decx#降低x中的值
- > 27 =推#推到堆栈
- > 28 = pop#pop从stack到AC
- > 29 = int#执行系统调用
- > 30 = IRET#从系统呼叫返回
- > 50 =结束#结束执行
=================================================================================
示例文件夹包含5个示例文件。
sample1.txt
sample2.txt
sample3.txt
sample4.txt
sample5.txt
=================================================================================
编译和执行项目的步骤: