FOJ 1024 Simple Computer

搞了一个早上,代码有点搓。。。。

由于判断while退出的条件是HLT,而我却画蛇添足加了个PC>32的条件。

导致了几次的Wrong Answer

 

其实题目很简单,就是实现一些简单的运算罢了,主要还是对题目的理解。

 

下面是指令的翻译

 

000xxxxx   STA x   把运算器的值存入内存x store the value of the accu into memory byte x
001xxxxx   LDA x   从内存地址x载入值到运算器load the value of memory byte x into the accu
010xxxxx   BEQ x   如果运算器的值为0,那么载入内存地址x到运算器if the value of the accu is 0 load the value x into the pc
011-----   NOP     空操作 no operation
100-----   DEC     运算器减1 subtract 1 from the accu
101-----   INC     运算器加1 add 1 to the accu
110xxxxx   JMP x   载入内存地址到 pc load the value x into the pc
111-----   HLT     结束程序 terminate program

 

学过组成原理的同学都知道,x86机器内存中数据的存放是小顶机模型,也就是lower-to-higher

但是这道题目不同,是higher-to-lower.这个要注意。

 

 

另外加个比较good一些的代码。

这代码主要通过移位运算来做。比我那个字符串处理的简单多了。。。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值