【深圳IO】精确食品称(汇编语言的一些理解)
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】精确食品称(汇编语言的一些理解)相关推荐
- 深圳IO:Shenzhen IO Mac版(烧脑编程游戏) v1.4
深圳IO(Shenzhen IO)破解版是由硬核编程游戏开发商Zachtronics打造一款烧脑编程游戏,游戏中玩家需要利用手头的芯片,按照要求条件输出信号,制成一些电器元件产品.由于游戏中的数字都是 ...
- 深圳IO —— 一个汇编编程小游戏
目录 简介 数据手册 接口 简单 I/O XBus 简单 I/O 对比 XBus 语言参考 程序结构 注释 标签 寄存器 acc dat p0.p1.x0.x1.x2.x3 null 伪寄存器 指令操 ...
- IO模型有哪些,讲讲你理解的nio ,他和bio,aio的区别是啥,谈谈reactor模型。
1.什么是BIO,NIO,AIO JAVA BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程并处理,如果这个连接不做任何事情会造成不必要的开销,当然 ...
- 【汇编语言】快速理解什么是寻址,什么是寻址方式
0 前言 有很多专业的资料讲述这些概念,但是,虽然很专业,但是初学者根本看不懂! 因此在这里,我用最简单的方式,告诉你 什么是寻址 什么是寻址方式 1 计算机的极简模型 计算机的世界中,只有二进制信息 ...
- 纽约研究人员称人工智能才是理解量子系统的关键所在
当研究人员们在量子计算机上做实验的时候,基本上相当于在黑暗中摸索.毕竟当前的计算机速度太慢,无法验证任何量子实验的结果.不过来自纽约熨斗研究所(Flatiron Institute)的一支团队,却认为 ...
- 2023深圳国际家用医疗及健康管理展览会
2023深圳国际家用医疗及健康管理展览会 展览时间:2023年5月11-13日 展览地点: 深圳会展中心2号馆 主办单位: 广东省保健协会 深圳市科技经济促进会 深圳市健康产业发展促进会 深圳市丽腾会 ...
- 和府捞面拟冲刺上市:已实现扭亏为盈,绝味食品、腾讯均为股东
又一家餐饮企业要上市.近日,绝味食品(SH:603517)发布公告称,该公司全资子公司深圳网聚投资有限责任公司(下称"深圳网聚")参股的江苏和府餐饮管理有限公司(下称"和 ...
- C程序设计的抽象思维-递归过程-砝码称重
[问题] 在狄更斯时代,商人们用砝码和天平来称量商品的重量,假设你仅仅有几个砝码,就仅仅能精确地称出一定的重量.比如,假定仅仅有两个砝码:各自是1kg和3kg. 仅仅用1kg的砝码能够称出1kg重量的 ...
- 从玉农业谋定塞外-丰收节交易会·林裕豪:巴彦淖尔深圳签约
从玉农业谋定塞外-丰收节交易会·林裕豪:巴彦淖尔深圳签约 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 哲商对话 万权采编:近日,谋定研究中国智库:对话功能性农业农 ...
最新文章
- MaxScale:实现MySQL读写分离与负载均衡的中间件利器
- 多线程信号量PV操作初探
- Java程序员必备 : Java反编译神器——“GUI” 资源分享
- 洛谷 P1309 瑞士轮 解题报告
- python更新到什么版本_Linux更新Python版本及修改python默认版本的方法
- windows server 触屏_宜昌触屏万能蒸烤箱价格-华春新能源有限公司
- 聚合多个文件_python数据分析与挖掘(二十五)--- Pandas高级处理分组与聚合
- 大白菜安装服务器linux,通过U盘安装Debian
- Java 中 == 和equals()方法的不同点
- Bailian3718 位操作练习【位运算】
- pandas把'm8[ns]'类型转换为int类型进行运算
- springboot2集成hbase2环境搭建
- 万能地图下载器中授权谷歌卫星地图下载器的方法
- ABB变频器电路图 ACS510图纸 ACS550原理图 ACS800变频器。pdf格式
- HTTP和MQTT协议实践
- 结合MACD看现货白银价格走势图
- 四次重启共享充电宝业务 美团终结“三电一兽”格局预言会成真吗?
- gedit变身为编程利器的简单配置
- 为什么 application data文件夹是无限循环的
- 如何学习SQL (转)