历史上的今天
今天是:2024年12月03日(星期二)
2021年12月03日 | 嵌入式系统学习笔记(6)——MCS51汇编语言程序设计
2021-12-03 来源:eefocus
有汇编程序和反汇编程序,可以由机器语言得到汇编语言
不是所有都会默认从0000H开始,保险起见,还是要在开头用ORG 0000H,然后加一条跳转指令到程序存放起始地址
交叉汇编,在一台电脑上汇编,在另一台电脑上运行
注意,除了51单片机之外,其它单片机上电后PC值并不一定是0000H,所以需要根据实际情况放第一条指令的位置。此外,0003H到0023H是中断入口,所以第一条指令只能是0000H到0002H一共三个字节,LJMP指令恰好就是3个字节。跳转后的两个NOP是为了等外接芯片复位,因为外接芯片可能复位比51的CPU慢,这段时间不应该对外接芯片发命令,所以要等两个机器周期。接下来必须重新设置SP指针。最后一共SJMP A2是为了避免程序运行到没有写入有效代码的区域。程序是不会自己停下来的,PC会一直取指,一直运行。所以为了让它不再前进,就要在最后加这么一个循环使得程序“停”在A2这里。以下代码有个缺点,表格的位置是固定的,这也就意味着有效程序段太长的话可能会超过2000H,导致重叠。所以可以改进为浮动的,如下下图所示
一个好的程序应该按以下顺序组成:主程序-子程序-表格-end
冒泡排序,R0放首地址,R2为字节数,对这批数据进行升序排序
史海拾趣
|
将RVDS中的工程移植到RealView MDK说明文档 请点击链接:http://arm.embedinfo.com/BBS/dispbbs.asp?boardid=3&Id=219… 查看全部问答> |
|
首次发帖---国内最详细的linux基础教程(不过是第一版)---网域时代的教程 确实详细,只是版本有点老,贡献一下,供参考。 点击此处下载 或粘帖:http://download.eeworld.net/source/2251570… 查看全部问答> |
|
2410 内部 1 ram起始地址被映射到哪里?容量有多大? 2 rom起始地址被映射到哪里?容量有多大? 2410 启动方式: 3 2410外启动时,第一条指令时在哪里执行的? & ...… 查看全部问答> |
|
大家好! 我们要开发一个sim卡的读卡器 gsm协议中提到了dialling number的概念,但是并没有明确提出通讯录是如何存储的, 请教大家dialling number和通讯录之间是什么关系?是不是通过读取dialling number就 可以读取通讯录了? 谢谢! … 查看全部问答> |
|
基于DS18B20和四位LED的温度自动控制系统 1:采用DS18B20采集温度,精度在0.1度。 2:采用89S52芯片。 3:采用四位共阳LED数码显示,亮度高。 4:可以设定控制温度,达到设定值继电器A工作,低于设定值继电器A断开。 5:超温报警,超过设定温 ...… 查看全部问答> |




































