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


相关文章
|
SQL Serverless 数据库
|
Linux iOS开发 C++
CMake 秘籍(六)(3)
CMake 秘籍(六)
220 1
|
12月前
|
SQL 数据挖掘 关系型数据库
SQL自学笔记(1):什么是SQL?有什么用?
本文为用户研究新手介绍SQL(结构化查询语言),解释了SQL的基本概念、入门方法及在用户研究中的应用通过实际案例说明,如用户行为分析、用户细分和满意度调查数据分析,展示了SQL在用户研究中的重要作用。
3870 0
SQL自学笔记(1):什么是SQL?有什么用?
|
网络协议 网络架构
配置思科多区域 OSPF
【8月更文挑战第31天】
789 0
配置思科多区域 OSPF
|
API Docker 容器
如何免费获取 ChatGPT API Key?
上篇文章介绍了NextChat项目,只需配置ChatGPT API Key即可拥有私人ChatGPT网页应用。本文继续介绍免费获取API Key的来源——GPT_API_free,一个拥有13.6K Star的Github开源项目。需用Github账号绑定领取Key,支持gpt-3.5-turbo、embedding、gpt-4,但gpt-4每天限3次调用。GPT_API_free也提供付费版API,以支持项目持续运营。
7395 0
如何免费获取 ChatGPT API Key?
|
存储 缓存 监控
Elasticsearch Filter 缓存加速检索的细节,你知道吗?
【8月更文挑战第15天】在大数据与搜索引擎的广阔天地里,Elasticsearch 凭借其强大的全文搜索能力和可扩展性,成为了众多企业和开发者的首选。而在Elasticsearch的性能优化中,Filter缓存(也称为Filter Cache,自Elasticsearch 7.x版本后更名为Query Cache的一部分)扮演着至关重要的角色。今天,我们就来深入探讨一下Elasticsearch Filter缓存如何加速检索过程,以及在日常工作学习中如何有效利用这一特性。
287 0
阿里云短信服务的计费方式、规则和欠费说明_短信服务
阿里云短信服务的计费方式、规则和欠费说明_短信服务,阿里云短信服务价格表,阿里云短信0.032元一条,阿里云短信价格?阿里云短信怎么收费?阿里云短信多少钱一条,阿里云短信价格0.032元一条
1133 0
|
安全 固态存储 Linux
服务器linux操作系统重装的完整流程-傻瓜式教学
服务器linux操作系统重装的完整流程-傻瓜式教学
|
数据库 流计算
Flink CDC的工作原理是通过监听数据库的变更事件
Flink CDC的工作原理是通过监听数据库的变更事件
388 1