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

简介: 【深圳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!


相关文章
|
编解码 ice
Google Earth Engine——NASA-USDA增强型SMAP全球土壤水分数据以10公里的空间分辨率提供全球的土壤水分信息。包括:地表和地下土壤湿度(毫米)和异常,土壤湿度剖面(%)
Google Earth Engine——NASA-USDA增强型SMAP全球土壤水分数据以10公里的空间分辨率提供全球的土壤水分信息。包括:地表和地下土壤湿度(毫米)和异常,土壤湿度剖面(%)
384 0
Google Earth Engine——NASA-USDA增强型SMAP全球土壤水分数据以10公里的空间分辨率提供全球的土壤水分信息。包括:地表和地下土壤湿度(毫米)和异常,土壤湿度剖面(%)
|
13天前
|
JavaScript Java 测试技术
基于Java的中医+养老服务平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的中医+养老服务平台的设计与实现(源码+lw+部署文档+讲解等)
25 0
|
19天前
|
Web App开发 算法 数据挖掘
JCR一区7.3分|内质网应激+分型+药物筛选分子对接
这篇研究分析了溃疡性结肠炎(UC)内质网应激相关基因特征,发表在《Frontiers in Immunology》杂志上。通过基因表达谱和加权基因共表达网络分析,研究人员识别出915个差异表达基因和11个关键的内质网应激相关基因(ERSRGs),这些基因在UC中具有诊断价值。他们还发现诺斯卡品作为小分子药物,可能通过影响ERS对UC产生治疗潜力。此外,研究揭示了ERS在UC发病机制中的重要角色,并与免疫细胞浸润和结肠粘膜侵袭相关。通过一致性聚类,确定了ERS相关的亚型,这些发现为理解UC的病理机制和潜在治疗提供了新见解。
18 0
|
7月前
|
消息中间件 存储 Java
3000人群被字节内部技术图谱炸翻了,惊艳级实用
前几天晚上群里的消息炸翻了,我以为发生啥大事了。一看,一字节老哥秀了一把他们老大给组里配的技术图谱手册! 大家都求着来1套,我认真看了,基本覆盖了所有Java技术栈以及架构设计的方方面面。 确实很少见,够实在够精华,这套东西要是拿出去卖,少说也得一二百!
|
9月前
|
算法 调度 Python
粒子群算法求解电力系统环境经济调度+微电网调度(风、光、电动车、柴油机、主网)(Python代码实现)
粒子群算法求解电力系统环境经济调度+微电网调度(风、光、电动车、柴油机、主网)(Python代码实现)
|
10月前
|
存储 算法 数据可视化
将330亿参数大模型「塞进」单个消费级GPU,加速15%、性能不减
将330亿参数大模型「塞进」单个消费级GPU,加速15%、性能不减
159 0
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
AI再卷数学界,DSP新方法将机器证明成功率提高一倍
AI再卷数学界,DSP新方法将机器证明成功率提高一倍
133 0
|
11月前
|
存储 自动驾驶 量子技术
新型量子计算机首次打破二进制,信息存储在钙原子中
新型量子计算机首次打破二进制,信息存储在钙原子中
|
Java 数据安全/隐私保护
Java基础寒假作业-个人所得税计算系统
Java基础寒假作业-个人所得税计算系统
211 0
Java基础寒假作业-个人所得税计算系统
|
Java
分析华为毕昇JDK8:一个性能开关
分析华为毕昇JDK8:一个性能开关
210 0