历史上的今天
返回首页

历史上的今天

今天是:2025年02月26日(星期三)

正在发生

2020年02月26日 | pic单片机的各种汇编语言指令解析

2020-02-26 来源:elecfans

pic 单片机为最常用单片机之一,许多程序均基于 pic 单片机进行开发。因此,熟练 pic 单片机编程尤为重要。为保证大家能准确、熟练掌握 pic 单片机的使用,本文特带来 pic 单片机的各种汇编语言指令的讲解上篇,下篇将在后期文章中予以讲解。如果你对本文即将讲解的内容充满兴趣,不妨继续往下阅读哦。

pic单片机的各种汇编语言指令解析

一、pic 的指令系统

pic8 位单片机共有三个级别,有相对应的指令集。基本级 pic 系列芯片共有指令 33 条,每条指令是 12 位字长;中级 pic 系列芯片共有指令 35 条,每条指令是 14 位字长;高级 pic 系列芯片共有指令 58 条,每条指令是 16 位字长。其指令向下兼容。


二、pic 汇编语言指令格式

pic 系列微控制器汇编语言指令与 MCS-51 系列单片机汇编语言一样,每条汇编语言指令由 4 个部分组成,其书写格式如下:

标号 操作码助记符 操作数 1,操作数 2;注释

指令格式说明如下:指令的 4 个部分之间由空格作隔离符,空格可以是 1 格或多格,以保证交叉汇编时,PC 机能识别指令。


1. 标号

与 MCS-51 系列单片机功能相同,标号代表指令的符号地址。在程序汇编时,已赋以指令存储器地址的具体数值。汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。


书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。再有标号不能用操作码助记符和寄存器的代号表示。标号也可以单独占一行。


2. 操作码助记符

该字段是指令的必选项。该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。

pic单片机的各种汇编语言指令解析

3. 操作数

由操作数的数据值或以符号表示的数据或地址值组成。若操作数有两个,则两个操作数之间用逗号(,)分开。当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。还可以是被定义过的标号、字符串和 ASCⅡ码等。具体表示时,规定在二进制数前冠以字母“B”,例如 B10011100;八进制数前冠以字母“O”,例如 O257;十进制数前冠以字母“D”,例如 D122;十六进制数前冠以“H”,例如 H2F。在这里 PIC8 位单片机默认进制是十六进制,在十六进制数之前加上 Ox,如 H2F 可以写成 Ox2F。


指令的操作数项也是可选项。


PIC 系列与 MCS-51 系列 8 位单片机一样,存在寻址方法,即操作数的来源或去向问题。因 PIC 系列微控制器采用了精简指令集(RISC)结构体系,其寻址方式和指令都既少而又简单。其寻址方式根据操作数来源的不同,可分为立即数寻址、直接寻址、寄存器间接寻址和位寻址四种。所以 PIC 系列单片机指令中的操作数常常出现有关寄存器符号。有关的寻址实例,均可在本文的后面找到。

pic单片机的各种汇编语言指令解析

4. 注释

用来对程序作些说明,便于人们阅读程序。注释开始之前用分号(;)与其它部分相隔。当汇编程序检测到分号时,其后面的字符不再处理。值得注意:在用到子程序时应说明程序的入口条件、出口条件以及该程序应完成的功能和作用。

推荐阅读

史海拾趣

AD Semiconductor公司的发展小趣事

AD Semiconductor是一家专注于模拟和数字混合信号集成电路的设计、生产和销售的公司。以下是该公司发展的五个相关故事:

  1. 公司成立与初期发展: AD Semiconductor成立于1990年,总部位于美国马萨诸塞州。公司的创始人具有丰富的集成电路设计和制造经验,致力于开发高性能、高可靠性的模拟和数字混合信号芯片。初期,公司主要专注于功率管理、数据转换和信号处理等领域。

  2. 技术创新与产品推出: AD Semiconductor在技术创新方面取得了多项突破,不断推出具有领先性能的芯片产品。公司的产品涵盖了模拟转换器、运算放大器、数据采集系统、功率管理器等多个系列,广泛应用于通信、工业控制、汽车电子等领域。

  3. 市场拓展与国际化发展: 随着产品线的不断完善和市场认可度的提升,AD Semiconductor逐步拓展了国内外市场。公司在美国、中国、欧洲等地设立了销售和技术支持中心,与全球各地的客户建立了合作关系。通过与国际合作伙伴的合作,AD Semiconductor的产品远销至全球各地,赢得了广泛的市场认可。

  4. 并购与战略合作: 为了加强自身的技术实力和市场地位,AD Semiconductor进行了一系列的并购和战略合作。其中最重要的是2015年,AD Semiconductor收购了一家专注于RF和微波集成电路设计的公司,进一步拓展了在无线通信领域的业务布局。

  5. 持续创新与未来展望: AD Semiconductor致力于持续创新,不断推出符合市场需求的新产品和解决方案。公司将继续加强技术研发投入,提升产品性能和稳定性,以满足客户在不断变化的市场需求。未来,AD Semiconductor将继续致力于成为模拟和数字混合信号领域的领先企业,并为全球客户提供更加优质的产品和服务。

浙江东亚电子(DongYa)公司的发展小趣事

浙江东亚电子不仅在国内市场上取得了显著成绩,还积极开拓国际市场。公司已为多家世界五百强企业、上市公司提供服务,如华为、中兴、通用电气及西门子等。通过与这些国际知名企业的合作,公司不仅提升了自身品牌的影响力,还积累了丰富的国际市场经验。

Cal-Chip Electronics公司的发展小趣事

在快速发展的过程中,Cal-Chip Electronics公司始终关注社会责任和可持续发展。公司积极参与公益事业,支持教育、环保等领域的发展。同时,公司还注重环保生产,通过引进先进的环保技术和设备,减少生产过程中的污染排放。此外,公司还建立了完善的员工培训体系,为员工提供广阔的职业发展空间。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

以上是关于Cal-Chip Electronics公司在电子行业发展的5个相关故事,这些故事展示了公司在不同历史阶段所取得的成就和面临的挑战。通过不断努力和创新,Cal-Chip Electronics公司已经成为了电子行业的一颗璀璨明星。

BALLUFF公司的发展小趣事

随着中国经济的快速发展,BALLUFF公司也看到了中国市场的巨大潜力。为了更好地服务中国市场,BALLUFF在2007年坚定地走本土化路线,在成都建立了生产工厂。这一举措不仅缩短了亚洲地区的响应时间和供货周期,也极大地提升了客户满意度。随着工厂的正式运行,BALLUFF在中国市场的地位逐渐稳固,其传感器产品也广泛应用于汽车、冶金、机床和风电等行业。

B&F;公司的发展小趣事

随着FK系列飞机在全球范围内的知名度不断提升,B&F公司意识到,要想进一步拓展市场,必须建立完善的全球分销网络。于是,公司开始积极寻找合作伙伴,并在全球范围内建立分销点。通过这一举措,B&F公司的产品得以迅速进入更多国家,进一步提升了公司的市场份额和影响力。

安信可(Ai)公司的发展小趣事

在不断创新和突破的过程中,安信可不断推出具有创新性的产品。例如,公司推出的WiFi+BLE蓝牙二合一的Ai-WB1系列模组,凭借其高可靠度、高集成度、应用灵活、高性价比等特点,深受市场欢迎。这款产品不仅为智能设备提供了无线通信连接能力,还广泛应用于工业、商业、消费等各类市场,进一步拓展了安信可的应用领域。

问答坊 | AI 解惑

ZT:一个技术人员悟到的管理秘诀

我在原来的公司做的时候,就注意观察公司在管理上的成功和失败的经验教训,并在网络上找很多关于管理的文章。     管理上有很多故事,让我领悟到管理就是设计一个合理的机制。          故事之一:分粥          分粥的故 ...…

查看全部问答>

驱动加载出错

我写了个驱动程序,编译没错,但是insmod的时候就出现 moduletest: please compile with -fno-common insmod: cannot insert `moduletest.ko\': Invalid module format (-1): Exec format error的错误,不知道为什么,求高手指教. 源码如下: #inclu ...…

查看全部问答>

s3c2440 for wince4.2 的 eboot启动时出现的网络端口问题,高手请进给解答一下。

启动后,DNW出现下列打印信息: WinCE NAND Boot v1.00 Jun 11 2007 11:50:13 Start Eboot... Start Launch...0 Microsoft Windows CE Ethernet Bootloader Common Library Version 1.0 Built Mar 13 2003 23:05:42 Microsoft Windows CE SMD ...…

查看全部问答>

STM32菜鸟程序!

拿到STM32开发板三天了!写了几个程序!程序简单但对入门还是有点帮助的!我自己下次调试成功了的! 上传供一起刚入门的朋友分享下! 第一天学习:MDK工程建立和GPIO 第二天学习:RCC和按键程序 第三天学习:EXTI程序(一个中断按键程序) 每 ...…

查看全部问答>

请教2407数据区与程序存储区的问题!谢谢

我用2407做一个液晶显示,因为有存放大量字符数据的常量数组,我把这些数组定义为const unsigned char 类型。cmd文件如下: -o LCD.out - stack 60 MEMORY {     PAGE 0:    /* Program Memory */      & ...…

查看全部问答>

电风扇模拟控制系统设计 求助 !!真的不会啊!!

电风扇模拟控制系统设计1.用4个LED显示电风扇的工作状态(1,2,3,4四档风力),显示风类:“自然风”、 “常风”和“睡眠风”。2.设计 “自然风”、 “常风”和“睡眠风” 三个风类键用于设置风类; 设计一个“摇头” 键用于控制电机摇头。 &nb ...…

查看全部问答>

MSP430极品的中文资料,本人极力推荐!

偶然发现这个PDF,与别的430资料不同,这里全是经典,传上来与大家分享下!…

查看全部问答>

趣味实验

家里有一个上小学的女孩子,有一天兴冲冲的跟我说,要做一个伟大的实验给我看,并且不许我偷看。看着她神秘的样子,我想小孩子搞什么名堂。大概过了半个多小时,她跑进来把我屋里面的灯给关了,然后又匆匆忙忙的跑出去。不一会儿,她小心翼翼的端着 ...…

查看全部问答>

知道一些MOS管的选择方法

        我们知道, MOS管最常见的应用可能是电源中的开关元件,此外,它们对电源输出也大有裨益。服务器和通信设备等应用一般都配置有多个并行电源,以支持N+1 冗余与持续工作 (图1)。各并行电源平均分担负载,确保 ...…

查看全部问答>

液晶显示图片

在执行以下函数的时候 用仿真发现 i 只能加到14,然后就归零(也就是程序退不出第一个for循环),为什么?按道理说不该这样啊 显示上半屏函数: Write_Command(0x34); //  *******显示上半屏内容设置    for(i=0;i…

查看全部问答>