缓存 主频 集成电路 总线 逻辑门 处理器
主页 正文

51单片机CJNE指令$+3详解及PIC8位单片机汇编指令全面解析

51单片机中汇编CJNE A,#10,$+3后面$+3是什么意思

CJNEA,#10,$+3 是比较命令,$+3 是目标。
$+3表示当前指令地址下面的第三个字节。
指令:CJNEA,#10,$+3只有3个字节,所以$+3是该指令的下一条指令。
该指令使用A-10,不存储结果,仅设置标志位。
下一条指令必须根据标志位进行分支。

求 PIC 8位单片机 汇编指令比较全的,详细点的

Pic8位单片机汇编指令读取指令系统对各类单片机的指令不通用。
它是由单片机制造商规定的,因此用户必须遵循制造商规定的标准才能达到应用单片机的目的。
PIC8位单片机分为三个级别,并具有相应的指令集。
基础级PIC系列芯片共有33条指令,每条指令为12位字长; 中级PIC系列芯片共有35条指令,每条指令为14位字长; 高级PIC系列芯片共有58条指令,每条指令为16位字长。
它的指令是向后兼容的。
在这里,作者介绍了PIC8位单片机汇编语言指令的组成以及指令中符号的作用,以便初学者在阅读相关书籍和资料时能够快速上手。
1. PIC 汇编语言指令格式 PIC 系列单片机汇编语言指令与MCS-51 系列单片机汇编语言相同。
每条汇编语言指令由 4 部分组成。
其书写格式如下:标号操作码助记符操作数1、操作数2; 注释指令格式解释如下:指令的四个部分之间使用空格作为分隔符。
空格可以是一个或多个空格,以保证PC函数在交叉汇编时能够识别该指令。
1、标签与MCS-51系列单片机功能相同。
标签代表指令的符号地址。
在程序汇编时,指令存储器地址的具体值已经被赋值。
汇编语言中使用符号地址(即标号),方便查看和修改,特别是对于指令传输地址的表示。
标签在指令格式中是可选的,只有在被其他语句引用时才需要赋值。
在没有标签的情况下,在编写指令助记符之前,必须在指令助记符前面留一个或多个空格。
指令助记符不能占据标签的位置,否则助记符会被汇编器错误地处理为标签。
编写标签时,规定第一个字符必须是字母或半角下划线“-”,后面可以是英文和数字字符、冒号(:)制表符等,并且可以组合成 反正。
此外,标签不能用操作码助记符和寄存器码来表示。
标签也可以独占一行。
2. 操作码助记符 该字段是指令所必需的。
本项可以是指令助记符,也可以由伪指令和宏命令组成。
其作用是在交叉汇编时将“指令操作码助记符”与“操作码表”一一比较,找出对应的机器码,一次生成一代。
3、操作数:由操作数的数据值或符号表示的数据或地址值组成。
如果有两个操作数,则用逗号(,)分隔。
当操作数为常数时,常数可以是二进制、八进制、十进制或十六进制数。
还可以定义标签、字符串、ASCII码等。
具体表示时,规定字母“B”前面加二进制数,如B10011100; 字母“O”前面是八进制数,例如O257; 字母“D”前面是十进制数,例如D122; 以“H”为前缀的十六进制数,例如H2F。
这里,PIC8位单片机的默认基数是十六进制。
在十六进制数前添加 Ox。
例如,H2F可以写成Ox2F。
指令的操作数项也是可选的。
PIC系列与MCS-51系列8位微控制器一样,具有寻址方法,即操作数的源或目的地。
由于PIC系列单片机采用精简指令集(RISC)架构,其寻址方式和指令既少又简单。
其寻址方式按操作数来源可分为立即数寻址、直接寻址、寄存器间接寻址和位寻址四种。
因此,PIC系列单片机指令中的操作数常常与相关的寄存器符号一起出现。
相关寻址示例可以在本文后面找到。
4 注释用于对程序进行解释,方便人们阅读程序。
在开始注释之前使用分号 (;) 将其与其他部分分开。
当汇编器检测到分号时,不再处理分号后面的字符。
注:使用子程序时,应说明程序的进入条件和退出条件,以及程序应完成的功能和作用。
2. 清除指令(共 4 条) 1 寄存器清除指令示例:CLRW; 寄存器W清零说明:这条指令很简单,其中W是PIC单片机的工作寄存器,相当于MCS-51系列单片机。
累加器A,CLR是英文Clear的缩写。
2看门狗定时器清零命令:例如:CLRWDT; 清除看门狗定时器(如果指定,同时清除预分频器) 注:WDT 是英文 Watchdog Timer 的缩写。
请参阅上面关于 CLR 的描述。
请注意,这两条指令没有操作数。
3. 寄存器f清除指令。
指令格式:CLRFf 示例:CLRFTMRO; clear TMRO 说明:在PIC系列8位单片机中,常用符号F(或f)代表芯片中的各个寄存器以及F的序号地址。
F的值根据PIC系列不同型号而不同,一般情况下 Ox00~Ox1F/7F/FF。
TMRO代表定时器/计数器TMRO,因此CLRF清零寄存器,采用直接寻址方式,直接给出要访问的寄存器TMRO。
4位清零指令。
指令格式 BCFf,b 例:BCFREG1,2; 清除寄存器 REG1 的 D2 位。
注:BCF是英文BitClearF的缩写。
指令格式中的F如上所述; 符号b代表PIC芯片中一个8位数据寄存器F的位数(或位地址),因此b的值为0~7或D0~D7。
示例中,REG 是 Register 的缩写。
示例中的2在指令格式中代表b=2,即寄存器REG1的D2位。
通过以上四种清晰的指令格式和示例,可以说明在学习PIC系列8位单片机的指令时,首先应了解指令的助记符含义(功能),然后才是其表达方法。
初学者不需要死记硬背指令,重要的是理解和练习。
本文中有关指令的注释将与之前的指令中的注释略有不同。
上述指令注释是为了说明指令执行的具体功能。
这种评论方式确实很容易让初学者接受和理解。
然而,实际应用中PIC产品的汇编语言中的注释通常是基于程序的作用(或指令)。
function)而不是指令的直接函数。
鉴于以上原因,下面的指令注释将改变过去的注释方式,将程序应该发挥的功能作为注释。
10 寄存器四位交换指令 指令格式:SWAPF f,d 说明:SWAPF 是Swapf 的合写。
符号f和d的含义与上述相同。
该指令的作用是交换寄存器f的高4位和低4位。
即指令执行前,如果寄存器f的8位状态为D7、D6、D5、D4、D3、D2、D1、D0,执行后8位状态变为D3、D2、D1, D0、D7、D6、D5、D4,结果存储在W(d=0)或f(d=1)中。
举例:中断站点保护是中断技术的重要组成部分。
由于PIC16CXX指令系统中没有PUSH和POP指令,只能使用其他指令来实现。
由于主程序中经常用到工作寄存器W和状态寄存器STATUS,因此中断现场保护往往需要对寄存器W和STATUS进行保护。
下面是PIC16C7×系列芯片中断现场保护的示例程序。
MOVWF W_TEMP; 将W存储在临时寄存器SWAPF STATUS中,W存储在W_TEMP中; 交换 STATUS 和 W MOVWFSTATUS_TEMP ; 将 STATUS 存储在临时寄存器 STATUS_TEMP 中断服务程序 SWAPF STATUS _TEMP,W; 将 STATUS_TEMP 的与 W MOVWFSTATUS 交换,将 TATUS 恢复到原来的状态 SWAPF W_TEMP,F ;交换 SWAPF W_TEMP,W ;W 恢复到原来的状态 说明:上面程序中各指令的注释基本上都是根据用途来注释的 程序应该实现的功能,几乎不涉及到每条指令的功能。
这是初学者应该特别注意的。
11 子程序调用指令(SubroutineCall) 指令格式:CALLk; k为立即地址 说明:子程序调用,不同型号的芯片有不同的实现方式,共同点是先将返回地址((PC)+1)压入堆栈进行保护,然后转移到被调用的子程序入口 执行地址(类似于MCS-51指令功能)。
指令格式模式:HERE CALL DELAY; 调用延迟子程序 DELAYMOVLW0x80; 延时子程序RETLW0 说明: 调用指令执行前,PC = 地址 HERE 调用指令执行后,PC = 地址 DELAY(标号),堆栈指针 TOS = HERE + 1(返回地址)。
举例:参见下一条指令示例,获取寄存器12 的计数器指令 指令格式:COMF f,d 说明:COMF 是Complementf 的缩写。
当d=1时,运算(f)→f; 当d=0时,操作(f)→w。
功能:将寄存器f的取反后发送到W(d=0)或f本身(d=1)。
示例: ORG 0x1FF GOTO MAIN ORG 0 DELAY … MAIN MOVLW 0 ; 主程序启动TRTS 5; 设置RA口为输出BCF 5,0; 设置 RA 端口 0 位为 0 LOOP CALL DELAY; 闪光延迟 COMF 5; RA端口取反(灯——销毁-亮…控制)GOTO LOOP; 循环 说明:以上说明是PIC16C54LED发光控制实验的一部分。
延时子程序DELY未列出,但不影响该指令的读取。
程序中主程序开头的三个指令已经全部介绍过了。
接下来的CALL指令是调用执行子程序,其入口地址是标号DELAY。
子程序执行完毕后,执行COMF5 LED灯亮灭 开关 控制指令。
后面的GOTOLOOP指令就是达到LED循环点亮的目的。
13条面向位的操作指令(共4条,PIC高级产品多1条)。
除了一条清零指令外,还有一条设置寄存器f位b的指令和另外两条跳位指令(PIC高级产品)。
产品增加了f的额外b位来触发转换指令)。
(1) 位置 1 命令。
指令格式 BSF | f,b 说明:BSF是BitSetf的缩写。
F和b的含义与上述相同。
该指令的作用是将寄存器f的b位设置为1。
(2)位测试、零跳转指令。
指令格式 BTFSC f,b 说明: BTFSC 是BitTest、SkipifClear 的缩写。
该指令功能是测试寄存器的f位“b”。
如果为0,则跳过下一条指令; 如果为1,则顺序执行,即当f(b)=0时,不执行当前指令而是执行下一条指令(跳过),即替换为空指令NOP,所以 该指令需要2个指令周期。
(3) 位测试是1步跳转指令。
指令格式 BTFSS | f、b 说明:BTFSS 是 BitTest、SkipifSet 的缩写。
该指令的逻辑功能与上述相反。
如果位测试f(b)=1,则跳过执行,如果f(b)=0,则顺序执行。
上面介绍的PIC8位单片机汇编语言指令只是部分指令。
此外,还有循环左移、右移指令等指令; W和寄存器f的“相加”和“与”指令,以及进入休眠模式等指令。
鉴于报纸篇幅所限,这里不一一介绍,在以后程序的应用测试中会进行补充说明。
有点多,建议你打印出来慢慢看!
热门资讯
主板LEDSW线连接指南
电脑加装固态硬盘教程轻松提升电脑性能指南
51单片机中断优先级与优先权规定详解
cpu取消超频
Redis高效管理轻松删除指定前缀的key
家用电脑选择:笔记本还是台式?
深入解析交流伺服电机技术与应用
日本电视台频道解析:多元化内容满足不同观众需求