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


相关文章
|
1月前
|
安全 Java 数据库连接
【Java每日一题】——第四十五题:综合案例:模拟物流快递系统。
【Java每日一题】——第四十五题:综合案例:模拟物流快递系统。
40 0
|
4月前
|
Java
1276. 不浪费原料的汉堡制作方案 --力扣 --JAVA
圣诞活动预热开始啦,汉堡店推出了全新的汉堡套餐。为了避免浪费原料,请你帮他们制定合适的制作计划。 给你两个整数 tomatoSlices 和 cheeseSlices,分别表示番茄片和奶酪片的数目。不同汉堡的原料搭配如下: 巨无霸汉堡:4 片番茄和 1 片奶酪 小皇堡:2 片番茄和 1 片奶酪 请你以 [total_jumbo, total_small]([巨无霸汉堡总数,小皇堡总数])的格式返回恰当的制作方案,使得剩下的番茄片 tomatoSlices 和奶酪片 cheeseSlices 的数量都是 0。 如果无法使剩下的番茄片 tomatoSlices 和奶酪片 cheeseSlic
31 0
|
7月前
|
Java
华为OD机试真题 Java 实现【核酸最快检测效率】【2022.11 Q4 新题】
华为OD机试真题 Java 实现【核酸最快检测效率】【2022.11 Q4 新题】
|
15天前
|
Java
Java 15 炫酷特性揭秘:告别拼接,迎接文本块时代
Java 15 炫酷特性揭秘:告别拼接,迎接文本块时代
11 0
|
9月前
|
Java
中南林业科技大学Java实验报告三:数组的初始化和逻辑运算符的使用
中南林业科技大学Java实验报告三:数组的初始化和逻辑运算符的使用
88 0
|
5月前
|
Java
Java案例----公交车上下车计算(设定6站)
Java案例----公交车上下车计算(设定6站)
|
8月前
|
存储
8086存储器和IO组织【微机原理】
8086存储器和IO组织【微机原理】
112 0
|
9月前
|
Java
中南林业科技大学Java实验报告二:基本数据类型的使用和数据输入、输出
中南林业科技大学Java实验报告二:基本数据类型的使用和数据输入、输出
124 0
|
11月前
|
小程序 Java API
涨知识!一文带你读懂空气质量数据(附Java 和小程序接入示例代码)
涨知识!一文带你读懂空气质量数据(附Java 和小程序接入示例代码)
10895 0
涨知识!一文带你读懂空气质量数据(附Java 和小程序接入示例代码)
|
11月前
|
运维
一键分析硬件/IO/全国网络性能脚本(强推)
一键分析硬件/IO/全国网络性能脚本(强推)