8051汇编命令记录。

15年初出了个差,到现在才回到园子里……工作忙一方面,另外确实好久没搞这些东西了。

原本想在8051单片机上搞个分时操作系统,所以看了下8051汇编下代码,总结记录如下:

LJMP C:0149 //长跳转到0x0149地址开始执行命令,这条命令位于0x0000地址,是第一条命令。
MOV R0,#0x7F //把立即数赋值给R0寄存器
CLR A //目前看是清空寄存器A
MOV @R0,A //把R0作为地址,对其内容赋值为0.
DJNZ R0,C:014C //如果R0减1后不为0,就跳转到014C的地址执行命令,目前看这条命令的配合上一条命令能轻松完成指定内存段的初始化工作,按字节完成。但是目前看0地址是不会初始化的。
MOV SP,#0x17 //SP是栈指针寄存器,指向栈顶。将0x17的值赋给SP
LJMP C:0190 //跳转到0x0190的地址执行命令。
MOV DPTR,#0x028E //DPTR是16位寄存器,用于保存片外RAM的地址。
CLR A //目前看是清空寄存器A
MOV R6,#0x01 //把立即数赋值给R6寄存器
MOVC A,@A+DPTR //MOVC用于从ROM中获取数据,A+DPTR的值作为地址,然后将这个地址的存储的值赋值给A
JZ C:0155 //根据寄存器(累加器结果,也就是A)标志位决定跳转结果,为0跳转,非0不跳转。
INC DPTR //为DPTR寄存器的值+1
MOV R7,A //将A的值赋给R7
ANL A,#0x3F //将寄存器A中的值和立即数进行与操作,结果保存在A中
JNB 0xE0.5,01A9 //E0是ACC寄存器的地址,如果ACC的第5位是0的时候,就跳转01A9执行,否则顺序执行。
XCH A,R7 //将A和R7中的数值互换
ANL A,#0xC0 //将寄存器A中的值和立即数进行与操作,结果保存在A中
ADD A,ACC //A的自加操作
JZ C:0158 //在A寄存器=0的时候,跳转到0158地址执行命令。
JC C:016A //进位位为1则跳转,否则不跳转
CLR A
MOVC A,@A+DPTR //MOVC用于从ROM中获取数据,A+DPTR的值作为地址,然后将这个地址的存储的值赋值给A
INC DPTR //DPTR+1
MOV R2,A //将A的值赋值到R2寄存器
CLR A
MOVC A,@A+DPTR
INC DPTR
MOV R0,A
CLR A
MOVC A,@A+DPTR
INC DPTR
XCH A,R0
XCH A,DPL
XCH A,R0
XCH A,R2
XCH A,DPH
XCH R2
MOVX @DPTR,A

感觉整体还是没看懂这段代码具体要干什么。上面看懂了一段代码是内存初始化的,后面的代码要完成什么功能就真的有点看不懂了。

不过对汇编命令有了较好的理解,也没白忙活。

时间: 2024-10-07 09:39:31

8051汇编命令记录。的相关文章

项目感悟 基于8051的数据采集系统-总纲

博文的内容是感想,是我在做一个小作品的时候记录下来的感想.现在将其整理好,分享出来. 我写博文的纲领是隐恶扬善,所以一些不好的事情,闭口不说.但别人对我的好,要尽力写出来. 虽然我不是大牛,感想有时显得有些幼稚,但是我依然希望你能通过我的感想得到一些启发,少走一些弯路. 博文的宗旨是:隐恶扬善. 作品名称:基于8051的数据采集系统 简介:下位机用 8051新手开发板,传感器采集需要的数据,通过USB通信接口发送给上位机,上位机的系统是win 7,用C#的Winform写的串口调试程序接收数据.

老男孩Linux运维第41期20170917开班第四周学习重点课堂记录

第1章 必知必会文件 配置文件位置 该文件作用 /etc/sysconfig/network-scripts/ifcfg-eth0 第一块网卡的配置文件 同setup中的network /etc/resolv.conf 客户端DNS配置文件,优先级低于网卡配置文件 /etc/hosts 主要作用是定义IP地址和主机名的映射关系(域名解析),是一个映射IP地址和主机名的规定 /etc/sysconfig/network 用于配置hostname和networking /etc/fstab 开机自动

SSISDB8:查看SSISDB记录Package执行的消息

在执行Package时,SSISDB都会创建唯一的OperationID 和 ExecutionID,标识对package执行的操作和执行实例(Execution Instance),并记录operation message,统计executable的执行时间,便于developers 优化package的设计,对package进行故障排除. 一,在package发生错误时,查看失败的Executable An executable is a task or container that you

使用插件bootstrap-table实现表格记录的查询、分页、排序等处理

在业务系统开发中,对表格记录的查询.分页.排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这个bootstrap-table是一款非常有名的开源表格插件,在很多项目中广泛的应用.Bootstrap-table插件提供了非常丰富的属性设置,可以实现查询.分页.排序.复选框.设置显示列.Card view视图.主从表显示.合并列.国际化处理等处理功能,而且该插件同时也提供了一些不错的扩展功能,如移动行.移动列位置等一些特殊的功能,插件可

Git 使用记录

在win7平台已经安装好了git的情况下: 1,Git 本地仓库建立与使用步骤: (2)新建立文件夹: $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit (1)引入git: 通过git init命令把这个目录变成Git可以管理的仓库: $ git init Initialized empty Git repository in /Users/michael/learngit/.git/ (3)添加文件:git add fil

前端学HTTP之日志记录

前面的话 几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要.这么做出于一系列的原因:跟踪使用情况.安全性.计费.错误检测等等.本文将谥介绍日志记录 记录内容 大多数情况下,日志的记录出于两种原因:査找服务器或代理中存在的问题(比如,哪些请求失败了),或者是生成Web站点访问方式的统计信息.统计数据对市场营销.计费和容量规划(比如,决定是否需要增加服务器或带宽)都非常有用 可以把一个HTTP事务中所有的首部都记录下来,但对每天要处理数百万个事务的服务器和代理来说,这些数据的体积超大,很

ClientDataSet中动态添加计算字段并用计算字段显示记录的UpdateStatus

ClientDataSet中每条记录都有UpdateStatus=(usUnmodified, usModified, usInserted, usDeleted)记录该条数据是修改的,删除的,还是新增的等.有时候我们只想看修改的或新增的或删除的就可能用到这一属性.下图用计算字段显示UpdateStatus状态. ********************************************************************************************

MySQL删除重复记录的方法

参考网上的方法,总结了产出重复记录的方法,欢迎交流. 方法1:创建一个新表临时储存数据 假设我们有一个存在多个字段的表,表中有部分数据的若干字段重复,此时我们可以使用DISTINCT这个关键字对表数据进行筛选. 1 CREATE [TEMPORARY] TABLE temp LIKE origin_tb; 2 INSERT temp(attr1,attr2,...) SELECT DISTINCT attr1,attr2,... FROM origin_tb; 3 DELETE FROM ori

北塔网管软件BTSO2.5安装过程记录

北塔网管软件据说是同类比较好的,原来的BTIM系列好像停止更新了,用BTSO版本代替,叫智慧运维平台,据说有各种改进,先把安装过程记录下来,以备以后重装. BTSO分两个部分:平台服务器和注册服务器,可以安装到一台主机,也可以分开,他们要能够通讯,否则认为盗版,注册要记录系统环境.要识别原版光盘,反正国产的软件版权意识近乎变态. 说明上要求win2008r2ent中文版或者win2012企业中文版,先试了2012,注册菜单不出现,重新用2008安装.顺序如下: 1.安装BETA-BTSO_2.5