Steam游戏:深圳IO

近期,接触到深圳IO这个游戏,在学习深度学习网络的主线任务中开启了汇编语言的支线任务,发现学习下汇编语言还是挺有趣的,而且还挺锻炼编程思维。

身为一个完全没学过嵌入式系统或者汇编语言的小白,目前已经“玩”了 38h,玩到了精确食品称这一关,记录一些理解。

讽刺的是,这个“Shenzhen IO”游戏并不能在国服玩,要注册海外账号才行。

精确食品称功能需求


和我们日常使用的电子秤别无二致,这个秤有“开机”,“关机”,“净重”(去皮)这三个功能。

代码实现

这个设计实现的思路很简单,左边的芯片用来判断目前电子秤的状态,在按下“按钮”后,应该开机(dat置1),还是关机(dat置0),还是纪录皮重,并把目前重量清零(dat置3)。
这个设计确实可以满足需求,但是看下结果,在全球玩家中属于吊车尾的段位。

而看到产品成本最佳是¥5,那毫无疑问:
这个电子秤是可以用一个MC6000实现的!

代码的优化思路

在学习高级语言的时候,往往会应用把多条简单的逻辑组合起来,做很复杂的功能的逻辑,也就是说,有的时候打代码,都可以“不带脑子”,只要按条件,简单粗暴地全部敲完就完事了。
但是这种做法,在汇编这种“低级”语言,往往行不通,主要因为:芯片限制了代码行数,而且汇编语言在嵌套逻辑中的能力,比较高级语言确实非常难用。

起码在深圳IO这个游戏中是这样的,涉及到嵌套逻辑,真的是非常头疼,而高级语言直接多写几层if就行了

所以在用汇编的时候,必须要“带脑子”,在写程序之前就要想好代码如何能做的精简且聪明。而我个人总结的最重要的方法就是:进行条件合并,找到关键条件。

代码优化方法

信号规划

如果只使用一块MC6000芯片,那可以操作的acc必须用来做净重,dat用为记录皮重(输入为毛重)

条件整理

本设计任务的核心重点&难点就在于如何区分“开机”,“关机”,“置零(去皮)”这三个功能。

①开机条件

  • 按钮=100
  • 重量(毛重)=0
  • 皮重=999(开机前的状态必定时关机,关机状态定义为净重=-999)

②关机条件

  • 按钮=100
  • 重量(毛重)=0
  • 皮重=0

③置零条件

  • 按钮=100
  • 重量(毛重)>0
  • 皮重=0(目前皮重还是0,在下一个状态,皮重会等于此时的毛重)

下面开始整理合并,首先,三个功能可以合并成两个,开机和置零本质上是一个状态(开机皮重为0)
接下来,只要从以上条件中,找到最简洁的能区分关机和置零状态的充分条件就行了。
那就是:
①置零条件

  • 重量≠皮重

②关机条件

  • 重量=皮重

找到这个条件,就可以构建新的设计了。

设计优化


运行结果,world best design!

【深圳IO】精确食品称(汇编语言的一些理解)相关推荐

  1. 深圳IO:Shenzhen IO Mac版(烧脑编程游戏) v1.4

    深圳IO(Shenzhen IO)破解版是由硬核编程游戏开发商Zachtronics打造一款烧脑编程游戏,游戏中玩家需要利用手头的芯片,按照要求条件输出信号,制成一些电器元件产品.由于游戏中的数字都是 ...

  2. 深圳IO —— 一个汇编编程小游戏

    目录 简介 数据手册 接口 简单 I/O XBus 简单 I/O 对比 XBus 语言参考 程序结构 注释 标签 寄存器 acc dat p0.p1.x0.x1.x2.x3 null 伪寄存器 指令操 ...

  3. IO模型有哪些,讲讲你理解的nio ,他和bio,aio的区别是啥,谈谈reactor模型。

    1.什么是BIO,NIO,AIO JAVA BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程并处理,如果这个连接不做任何事情会造成不必要的开销,当然 ...

  4. 【汇编语言】快速理解什么是寻址,什么是寻址方式

    0 前言 有很多专业的资料讲述这些概念,但是,虽然很专业,但是初学者根本看不懂! 因此在这里,我用最简单的方式,告诉你 什么是寻址 什么是寻址方式 1 计算机的极简模型 计算机的世界中,只有二进制信息 ...

  5. 纽约研究人员称人工智能才是理解量子系统的关键所在

    当研究人员们在量子计算机上做实验的时候,基本上相当于在黑暗中摸索.毕竟当前的计算机速度太慢,无法验证任何量子实验的结果.不过来自纽约熨斗研究所(Flatiron Institute)的一支团队,却认为 ...

  6. 2023深圳国际家用医疗及健康管理展览会

    2023深圳国际家用医疗及健康管理展览会 展览时间:2023年5月11-13日 展览地点: 深圳会展中心2号馆 主办单位: 广东省保健协会 深圳市科技经济促进会 深圳市健康产业发展促进会 深圳市丽腾会 ...

  7. 和府捞面拟冲刺上市:已实现扭亏为盈,绝味食品、腾讯均为股东

    又一家餐饮企业要上市.近日,绝味食品(SH:603517)发布公告称,该公司全资子公司深圳网聚投资有限责任公司(下称"深圳网聚")参股的江苏和府餐饮管理有限公司(下称"和 ...

  8. C程序设计的抽象思维-递归过程-砝码称重

    [问题] 在狄更斯时代,商人们用砝码和天平来称量商品的重量,假设你仅仅有几个砝码,就仅仅能精确地称出一定的重量.比如,假定仅仅有两个砝码:各自是1kg和3kg. 仅仅用1kg的砝码能够称出1kg重量的 ...

  9. 从玉农业谋定塞外-丰收节交易会·林裕豪:巴彦淖尔深圳签约

    从玉农业谋定塞外-丰收节交易会·林裕豪:巴彦淖尔深圳签约 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 哲商对话 万权采编:近日,谋定研究中国智库:对话功能性农业农 ...

最新文章

  1. MaxScale:实现MySQL读写分离与负载均衡的中间件利器
  2. 多线程信号量PV操作初探
  3. Java程序员必备 : Java反编译神器——“GUI” 资源分享
  4. 洛谷 P1309 瑞士轮 解题报告
  5. python更新到什么版本_Linux更新Python版本及修改python默认版本的方法
  6. windows server 触屏_宜昌触屏万能蒸烤箱价格-华春新能源有限公司
  7. 聚合多个文件_python数据分析与挖掘(二十五)--- Pandas高级处理分组与聚合
  8. 大白菜安装服务器linux,通过U盘安装Debian
  9. Java 中 == 和equals()方法的不同点
  10. Bailian3718 位操作练习【位运算】
  11. pandas把'm8[ns]'类型转换为int类型进行运算
  12. springboot2集成hbase2环境搭建
  13. 万能地图下载器中授权谷歌卫星地图下载器的方法
  14. ABB变频器电路图 ACS510图纸 ACS550原理图 ACS800变频器。pdf格式
  15. HTTP和MQTT协议实践
  16. 结合MACD看现货白银价格走势图
  17. 四次重启共享充电宝业务 美团终结“三电一兽”格局预言会成真吗?
  18. gedit变身为编程利器的简单配置
  19. 为什么 application data文件夹是无限循环的
  20. 如何学习SQL (转)

热门文章

  1. python画同心圆程序_python turtle画4个同心圆方法!
  2. 主成分分析(PCA算法)
  3. 手机内存不足?不要胡乱清理了,学会了让手机空间瞬间释放!
  4. 2022年Q3咖啡行业数据分析(咖啡行业市场未来发展趋势)
  5. 教你用 Python 将微信头像秒变成表情包
  6. idea包或文件删除恢复
  7. 没有信用卡怎么去申请谷歌云
  8. 用python计算复利计算器_选股模型回测
  9. 一份从0到1的Java项目实践清单,看这篇就对了!
  10. windows win10装机软件清单