版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3 3章章 51 51单片机的指令系统单片机的指令系统 单片机原理及应用2第第3章章 目录目录内容简介内容简介3.1 51单片机的汇编指令单片机的汇编指令 3.1.13.1.1一个简单的程序示例一个简单的程序示例 3.1.2 3.1.2 指令格式指令格式 3.1.3 3.1.3 指令类型指令类型 3.1.4 3.1.4 常用符号说明常用符号说明3.2 51单片机指令的寻址方式单片机指令的寻址方式3.3 51单片机的指令集单片机的指令集 3.3.1 3.3.1 数据传送类指令数据传送类指令 3.3.2 3.3.2 算术运算指令算术运算指令 3.3.3 3.3.3 逻辑运算及移位类指令逻辑运算
2、及移位类指令 3.3.4 3.3.4 控制转移类指令控制转移类指令 3.3.5 3.3.5 位操作类指令位操作类指令习题习题内容简介内容简介 本节介绍本节介绍51单片机的指令系统。单片机的指令系统。 重点介绍指令格式,重点介绍指令格式,常用符号常用符号,寻址方式,指令的,寻址方式,指令的分类,每条指令的功能。分类,每条指令的功能。 要求掌握指令的要求掌握指令的功能分类,每条指令属于何种指令功每条指令属于何种指令功能的类别,每条指令操作数的寻址方式。能够区分字节指能的类别,每条指令操作数的寻址方式。能够区分字节指令和位指令。令和位指令。 43.1 51单片机的汇编指令单片机的汇编指令例例31 将
3、内部RAM中的20H和30H单元的无符号数相加,结果存入R0(高位)和R1(低位)中。图31 程序流程图3.1.1 3.1.1 一个简单的程序示例一个简单的程序示例5 按照图31编写汇编程序源代码如下: ORG0000H ;ORG为伪指令,程序从0000H开始执行LJMP MAIN ;长跳转指令,跳到标号MAIN处执行 ORG 0030H ;主程序起始地址0030H MAIN: MOVA, 20H ;20H单元中的内容送至累加器A中CLRC ;清进位位Cy ADDA, 30H ;30H中的内容与累加器A的内容相加, ;结果存放在累加器A中MOVR1, A ;将累加器A中的内容传送给寄存器R1C
4、LRA ;清累加器AADDC A, #00 ;带进位加法指令MOVR0, A ;将累加器A的内容传送给R0SJMP $ ;相对转移指令,$是当前行指令的地址END ;结束,伪指令6 指令的表示方法就是指令格式指令格式。51单片机指令主要由操作码操作码(指令助记符)字段和操作数操作数字段组成。 指令格式:指令格式:操作码 操作数1 ,操作数2 ,操作数3 程序程序是指令的有序结合有序结合,指令在汇编程序中可以增加标号字段和注释字段标号字段和注释字段,其格式如下: 标号: 操作码 操作数1 ,操作数2 ,操作数3 ;注释3.1.2 3.1.2 指令格式指令格式73.1.3 指令类型指令类型 51单
5、片机汇编语言有42种操作码(参见附录A),用来描述33种操作功能。操作码与寻址方式组合可得到111条指令。(1) 按指令所占字节数分类,共有单字节指令(49条)、双字 节指令(45条)和三字节指令(17条)。(2) 按指令执行时间分类,共有单周期指令(64条)、双周期指令(45条)和四周期指令(2条:乘法指令和除法指令)。(3) 按功能分类,51单片机指令系统可分为:数据传送类指令(29条)、算术运算类指令(24条)、逻辑运算类指令(24条)、控制转移类指令(17条)、位操作类指令(17条)。83.1.4 3.1.4 常用符号说明常用符号说明符符 号号含含 义义Rn当前选定寄存器组的寄存器Rn
6、,n=07Ri作为间接寻址的地址指针Ri,i=0或1#data8位立即数,8位立即数的数据范围:00HFFH#data1616位立即数,16位立即数的数据范围:0000HFFFFHaddr1616位地址,可表示64KB范围内的地址单元的寻址,用于LCALL和LJMP指令中addr1111位地址,2KB范围寻址,用于ACALL和AJMP指令,16位地址指针寄存器DPTR的数据传输指令中direct8位直接地址,可以是片内RAM区的某一单元或某一特殊功能寄存器的地址rel带符号的8位地址偏移量,rel地址偏移量的范围:128 +127,用于SJMP和条件转移指令中bit位单元的位单元的8 8位地址
7、,位寻址区的直接寻址位,表示片内位地址,位寻址区的直接寻址位,表示片内RAMRAM中可寻址位和中可寻址位和SFRSFR中可寻址位的中可寻址位的位单元的内容只有位单元的内容只有“0 0”和和“1 1”两种状态,作为源操作数在注释和说明时不加括号两种状态,作为源操作数在注释和说明时不加括号(X)X是一个地址,(X)是X地址单元中的内容。(X)只用于对指令的注释和说明(X)X X是一个地址,是一个地址,X X地址单元中的内容作为地址指针,即地址单元中的内容作为地址指针,即(X)(X)仍然是一个地址,仍然是一个地址,(X)(X)是是(X)(X)地址指针所地址指针所指向的地址单元中的内容。指向的地址单元
8、中的内容。(X)(X)只用于对指令的注释和说明只用于对指令的注释和说明按箭头指示方向传送内容,主要用于对指令的注释和说明$当前指令所在地址,用于无条件转移指令中/在位单元之前,表示该位状态取反参与操作,但位单元本身状态不变,用于位操作指令中在位单元之前,表示该位状态取反参与操作,但位单元本身状态不变,用于位操作指令中 间接寻址寄存器或基址寄存器的前缀,用于寄存器间接寻址和基址+变址寻址方式的指令中9 51单片机指令的操作数寻址方式操作数寻址方式主要有7 7种种,分别为直接寻址、立即寻址、寄存器寻址、寄存器间接寻址、基址+变址寻址、位寻址、相对寻址。3.2 51单片机指令的寻址方式单片机指令的寻
9、址方式 1. 1. 直接寻址直接寻址 直接寻址方式直接寻址方式:指令中的源操作数是操作数的单元地址,该单元地址指出了参与运算或传送的数据所在的字字节单元地址节单元地址或位单元地址位单元地址。 例如,已知(30H)=FFH,执行指令: MOV A, 30H;A(30H),执行结果:(A)=FFH10 2. 2. 立即寻址立即寻址 立即寻址方式:指令中含有立即数立即数,立即数作为源操作数源操作数,即指令中的立即数以指令操作数的形式存放于程序存储器中,为了与直接寻址指令中的直接地址相区别,需要在操作数前面加前缀标志“# #”;当立即数是以字母字母开头的数开头的数时,前面必须加0,如#0FEH#0FE
10、H。 例如例如,执行指令: MOVA, #0FEH ;AFEH,A为目的操作数,A中的内容为FEH MOVDPTR, #8000H ; DPTR8000H,DPTR中的内容为8000H11 3. 3. 寄存器寻址寄存器寻址 寄存器寻址方式寄存器寻址方式:指令中的源操作数是寄存器源操作数是寄存器,源操作数的内容存放在寄存器内。寄存器寻址一般用于访问选定的通用寄存器通用寄存器R0R7R0R7,以及A A、B B和和DPTRDPTR。源操作数和目的操作数均为寄存器寻址方式的指令都是单字节指令。 例如例如,执行指令: MOV A, R0 ;A A(R0)(R0),指令中的R0为源操作数,A为目的操作数
11、 INC R0 ;(R0)+1(R0)+1R0R0,指令中的R0是源操作数,也是目的操作数 MOV A, 30H ;A(30H)A(30H),指令中的30H为源操作数,A为目的操作数12 4. 4. 寄存器间接寻址寄存器间接寻址 寄存器间接寻址:指令中的某一个寄存器某一个寄存器的内容内容作为操作数地址操作数地址的寻址方式,即寄存器的内容寄存器的内容作为地址指针地址指针,操作数的单元地址单元地址是通过寄存器间间接得到接得到。 寄存器间接寻址方式中,必须在寄存器的名称前面加前缀标志前缀标志“ ”。访问内部RAM或外部数据存储器和其它扩展部件的低256个字节时,只能采用R0R0或R1R1作为间接寻址
12、寄存器;访问外部扩展的64K单元地址空间和程序存储器采用DPTRDPTR作为间接寻址寄存器。 例例3232 已知R0中存放片内RAM地址65H,数据指针DPTR中存放片外RAM地址8000H,地址65H单元中的数据为30H,8000H单元中的数据为59H,执行指令: MOV A,R0 ;A(R0),执行指令:(A)=30H,R0为源操作数 MOVX A,DPTR ;A(DPTR) ,执行指令:(A)=59H13寄存器间接寻址的寻址范围如下:寄存器间接寻址的寻址范围如下:51单片机片内RAM的低低128B单元单元,52单片机片内RAM的256B单元单元,应 用R0和R1作为间接寻址寄存器间接寻址
13、寄存器。(2) 片外扩展片外扩展的 64KB单元地址空间:使用DPTR作为间接寻址寄存器间接寻址寄存器。如果P2口口输出的高高8位地址值位地址值是一个确定地址值,也可以使用R0和R1作为间接寻址寄存器。例例33 已知片外RAM的0118H中的内容为58H,执行指令: MOV P2, #01H ;设置51单片机地址总线的高高8位地址位地址为01H MOV R0, #18H ;设置51单片机地址总线的低低8位地址位地址为18H MOVX A, R0 ;A(R0)+0100H)=(0118H),(A)=58H(3) 程序存储器程序存储器:使用DPTR作为间接寻址寄存器。(4) 片外扩展片外扩展的低低
14、256B单元地址空间单元地址空间:可以使用DPTR、R0和R1作为间接寻址寄存器;或只扩展256B单元,使用R0和R1作为间接寻址寄存器。(5) 堆栈区堆栈区:以堆栈指针SP作为间接寻址寄存器间接寻址寄存器。14 5. 5. 基址基址+ +变址寻址方式变址寻址方式 基址基址+ +变址寻址方式变址寻址方式:指令中有操作数A+PC或A+DPTR,程序计数器PCPC或数据指针DPTRDPTR作为基址寄存器基址寄存器,累加器A A作为变址寄存器变址寄存器,基址寄存器和变址寄存器的内容相加相加形成读取程序存储器数据数据的1616位地址位地址,用于访问程序存储器中的数据表格数据表格。 例例3434 执行指
15、令: MOVC A,A+PC;(A)+(PC)A,A+PCA+PC为源操作数 MOVC A,A+DPTR;(A)+(DPTR)A,A+DPTRA+DPTR为源操作数15 6. 6. 位寻址位寻址 51单片机有一个布尔处理机布尔处理机,可以对8位字节中的位单元位单元进行操作。位寻址方式位寻址方式:对位单元的寻址。 除了位判断转移指令外,位操作指令位操作指令的源操作数和目的操作数都是位单元。 例例3535 执行指令: MOV C, 40H ;该指令的功能是把40H40H位单元位单元中的状态状态送进位位位CyCy SETB TR0 ;该指令的功能是把TR0TR0位单元位单元中的状态状态置为“1”状态
16、 位寻址的寻址范围如下。 (1)(1) 片内RAM中的位寻址区。位单元地址范围位单元地址范围:00H7FH (2) (2) 可位寻址的特殊功能寄存器可位寻址的特殊功能寄存器。可以直接使用位单元的符号,比如第2条 指令中的TR0,参见第2章表表2727的特殊功能寄存器中的位单元地的特殊功能寄存器中的位单元地址分址分 布布。16 7. 7. 相对寻址相对寻址 相对寻址相对寻址用于访问程序存储器访问程序存储器,只出现在转移指令转移指令中。以PC的当前值加上指令中给出的相对偏移量(rel)形成转移地址。其中,rel是一个带符号的8位二进制数,以补码形式置于操作码之后存放。程序的转移范围以PC当前值为中
17、心,介于128+127之间。 例如例如,执行指令: JC rel 设rel=85H,Cy=1,这是一条以Cy状态为条件的转移指令,指令为两字节指令两字节指令,CPU取出第二个字节时,PC当前值为原原PCPC值加值加2 2。由于Cy=1,程序转向(PC)+2+rel程序存储器的目的地址单元去执行。注意,此时rel=85H为负值。17 按照指令的功能分类,51单片机指令系统的111条指令分为数据传送数据传送类指令、算术运算算术运算类指令、逻辑运算逻辑运算类指令、控制转移控制转移类指令、位操作位操作类指令。3.3 51单片机的指令集单片机的指令集3.3.1 数据传送类指令数据传送类指令 数据传输类指
18、令又可分为: 单片机内部数据内部数据的传送传送指令; 累加器累加器A A与片外片外RAMRAM或外部扩展接口部件外部扩展接口部件的数据传送指数据传送指令令; 18 1 1内部数据的传送指令内部数据的传送指令 (1)(1) 以累加器以累加器A A为目的操作数的指令,即累加器为目的操作数的指令,即累加器A A为目的地址单元为目的地址单元3.3.1 数据传送类指令数据传送类指令例例36 将立即数立即数35H送入片内30H单元单元,可执行以下指令: MOV A, #35H ;累加器A为目的地址单元,35HA MOV R0, #30H ;R0为目的地址单元,30HR0 MOV R0, A ;R0为目的地
19、址单元,(R0)=30H,(30H)A 也可执行以下这一条指令达到目的: MOV 30H, #35H ;35H30H (2) 以寄存器以寄存器Rn为目的操作数的指令为目的操作数的指令 例例37 若(A)=20H,(20H)=F0H,执行以下指令: MOV R0, A;(R0)=20H MOV R0, 20H ;(R0)=F0H MOV R6, #0A5H;(R6)=A5H19 (3) (3) 以直接地址为目的操作数的指令以直接地址为目的操作数的指令 例例38 设66H单元中的内容为EAH,执行下面指令: MOV 36H, #66H ;66H36H,(36H)=66H MOV R1, 36H ;
20、(36H)R1,(R1)=66H MOV 7EH, R1 ;(R1)7EH,(7EH)=(66H)=EAH MOV 38H, 7EH ;(7EH)38H,(38H)=(7EH)=EAH (4) (4) 以寄存器间接地址为目的操作数的指令以寄存器间接地址为目的操作数的指令 例例39 若(A)=20H,(R0)=42H,(32H)=46H,(42H)=52H,执行以下指令: MOV R0, A ;(R0)=(42H)=(A)=20H,42H单元的内容被刷新 MOV R0, 32H ;(R0)=(42H)=(32H)=46H,42H单元的内容被刷新 MOV R0, #0D5H ;(R0)=(42H)
21、=D5H,42H单元的内容被刷新3.3.1 数据传送类指令数据传送类指令20 (5) 16位数据传送指令位数据传送指令 MOV DPTR, #data16 ;立即寻址,16位地址值data16DPTR ;16位地址值高8位送DPH,低8位送DPL 这是51单片机中唯一的一条16位数据传送指令。 例例310 执行指令: MOV DPTR, #1234H ;DPH12H,DPL34H,(DPTR)=1234H (6) 堆栈操作指令堆栈操作指令PUSH、POP 堆栈操作堆栈操作:通过堆栈指针堆栈指针SP来实现,分为入栈操作入栈操作和出栈操作出栈操作,先先进后出进后出。51单片机开机或复位开机或复位后
22、(SP)=07,一般需要重新设定SP的初始值初始值, SP的内容的内容:栈顶的位置(地址)。 两条堆栈指令两条堆栈指令:进栈进栈指令;出栈出栈指令。21 例例311 已知(A)=10H,(B)=40H,执行指令: MOV SP, #30H ;设置堆栈指针初值堆栈指针初值:(SP)=30H, PUSH ACC ; SP(SP)+1,(SP)=31H; (SP)=(31H)=(A)=10H PUSH B ; SP(SP)+1,(SP)=32H; (SP)=(32H)=(B)=40H POP ACC ; (SP)=(32H)=40HA; (SP)=(SP)1,(SP)=31H POP B ; (SP
23、)=(31H)=10HB; (SP)=(SP)1,(SP)=30H 22(7)(7) 字节交换指令和半字节交换指令字节交换指令和半字节交换指令例例312 已知(A)=80H,(R0)=28H,(28H)=36H,执行指令: XCH A, R0 ;(R0)(A),(R0)=28H,28H单元和A互相交换数据 ;使得(A)=36H,(Ri)=(28H)=80H SWAP A ;(AD3D0)(AD7D4),使得(A)=63H例例313 已知(A)=80H,(R0)=08H,(08H)=36H,执行指令: XCHD A, R0 ;(R0)=(08H)=36H的低低4位位与(A)=80H的低低4位位交
24、换交换, ;使得(08H)=30H,(A)=86H SWAP A ;(A)=86H的高半字节高半字节8和低半字节低半字节6交换交换,使得(A)=68H 23 51单片机应用系统扩展的片外片外RAM和外部接口部件外部接口部件只能够通过累累加器加器A进行数据传输数据传输,而不能够与51单片机内部RAM、其它特殊功能寄存器直接进行数据传输。例例314 已知(DPTR)=2000H,(2000H)=10H,执行指令: MOVX A, DPTR ;A(DPTR)=(2000H),(A)=10H例例315 已知(P2)=20H,(R1)=48H,(A)=60H,执行指令: MOVX R1, A ;(R1)
25、+2000H(A),则片外(2048H)=60H2累加器A与片外RAM或外部扩展接口部件的数据传送指令24 只有两条查表指令,均采用基址基址+变址寻址方式变址寻址方式,单字节指令,用于读取读取程序存储器中的数据程序存储器中的数据。 例例316 设(A)=30H,执行指令: MOVC A, A+PC 若该指令的单元地址为1000H,则下一条指令单元的地址为1001H,执行该条指令将(A)+(PC)=1031H作为地址指向程序存储器,将程序存储器1031H单元的内容累加器A。 例例317 设(DPTR)=8200H,(A)=30H,执行指令: MOVC A, A+DPTR ;(A)+(DPTR)=
26、8230H,将程序存储器的(8230H)A 建议同学们首选查表指令:MOVC A, A+DPTR; DPTR:表格的首地址表格的首地址; 累加器A:变址变址25 算术运算指令:加、减、乘、除加、减、乘、除法指令,以及加加1 1和减减1 1指令,共有24条指令。大多数指令都以累加器累加器A A作为一个源操作数源操作数和目的操作数目的操作数,另一个源操作数另一个源操作数可以存放于任何一个工作寄存器RnRn或片内片内RAMRAM单元中,也可以是一个立即数立即数,运算结果运算结果存放在目的操作数累加器累加器A A中。3.3.2 3.3.2 算术运算指令算术运算指令 261 1加法指令加法指令(1) 不
27、带进位的加法指令不带进位的加法指令例例318 设(A)=45H,(R0)=20H,(20H)=ADH,执行指令: ADD A, R0 ; , 结果:(A)=F2H,Cy=0,AC=1,OV=0,P=1(2) 带进位的加法指令带进位的加法指令例例319 设(A)=85H,(20H)=FFH,Cy=1,执行指令: ADDC A, 20H ;10000101+11111111+1=110000101,产生进位1 结果:(A)=85H,Cy=1,AC=1,OV=0,P=1 01000101 10101101 1111001027 (3) 加加1指令指令例例320 设(A)=FFH,(R3)=0FH,(
28、30H)=E2H,(R0)=40H,(40H)=AAH, 执行指令: INC A ;FFH+1A,(A)=00H,PSW的P状态设置为0 INC R3 ;0FH+1R3,(R3)=10H,PSW状态不变 INC R0 ;(R0)=(40H),AAH+140H,(40H)=ABH,PSW状态不变 (4) 十进制调整指令十进制调整指令 计算机的运算运算以二进制二进制为基础,对于十进制十进制BCD码相加码相加应用ADD和ADDC指令的运算结果都是二进制数,要得到正确的十进制数运算结果,就必须应用十进制调整指令十进制调整指令。 DA A ;十进制调整指令,必须应用在在ADD或或ADDC指令的后面指令的
29、后面 十进制调整指令执行后,程序状态字(PSW)中的进位标志位(Cy)表示结果的百位值百位值。28 例例321 (A)=56H,(30H)=77H, 编程实现BCD码56+77的运算。 执行指令: ADD A, 30H ;(A)+(30H)=56H+77H=CDH DA A ;个位数为DH,DH+6=3,进位1 ;十位数为CH,CH+6+1=3,进位1Cy MOV R0, A ;把和的低字节的十位数和个位数存入R0 CLR A ;0A ADDC A, #00 ;百位数:0+CyA MOV R1, A ;和的高字节的百位数存入R1 运算结果为133,并将其十进制BCD码存放在R1R0中,R1为0
30、1H,R0为33H29 (1) 减法指令减法指令 减法指令:只有带借位带借位的减法指令。在进行减法操作时,如果运算结果产生借位借位,Cy置置1,无借位清无借位清0;如果D3位需借位,则将辅助进位标志位AC置1,否则将AC清0;如果D7需借位而D6位不借位或D6位借位而D7位不借位,则将溢出标志位OV置1,否则清0;奇偶标志位P随着累加器A中1的个数而变化。 例例322 设(A)=76H,立即数为C5H,Cy=0,执行指令: SUBBA, #0C5H ; 结果:(A)=B1H,Cy=1,AC=0,OV=1,P=02减法指令减法指令 01110110 11000101 01 10110001借位3
31、0(2) 减减1指令指令例例323 设(A)=0EH,(30H)=00H,(R1)=70H,(70H)=FFH。 执行指令: DEC A ;A(A)1,(A)=0DH,P=1,不影响其它标志 DEC 30H ;30H(30H)1,(30H)=FFH,PSW状态不变 DEC R1 ;(R1)(R1)1,(70H)=FEH,PSW状态不变31 乘法和除法指令乘法和除法指令:只能够对两个两个8位无符号数位无符号数进行乘法乘法和除法除法运算。 MUL AB这条指令对Cy、OV和P三个标志位产生影响。如果乘积大于255(FFH),溢出标志OV置1,否则OV清0。进位标志Cy总是清0,P随着A中1的个数而
32、变化。 例例324 设(A)=4EH,(B)=5DH,执行指令: MUL AB ;运算结果:(B)=1CH,(A)=56H,即乘积结果(BA)=1C56H 执行DIV AB这条指令之前,如果原来B中的内容为0,即除数为0,执行结果A和B中的内容不定,并将溢出标志OV置1,在其它情况下,OV被复位为0,表示除法操作是合理的。进位标志Cy总是清0。 例例325 设(A)=BFH,(B)=32H,执行指令: DIV AB ;运算结果:(A)=03H,(B)=29H,Cy=0,OV=03乘法和除法指令乘法和除法指令32 逻辑运算指令逻辑运算指令:两个两个8 8位二进制数位二进制数按位按位进行与与、或或
33、、异或异或的逻辑运算,以及对累加器累加器A A的内容清清0 0和按位取反按位取反操作。 移位类指令移位类指令:累加器:累加器A A的循环移位循环移位操作,包括左移左移一位一位、右移一位右移一位,以及带进位标志位带进位标志位与不带进位标志位不带进位标志位移位的方式。两类指令共有24条。3.3.3 逻辑运算及移位类指令逻辑运算及移位类指令331逻辑与指令逻辑与指令ANL指令助记符指令助记符操作说明操作说明指令助记符指令助记符操作说明操作说明指令助记符指令助记符操作说明操作说明ANL A, RnA(A)(Rn) ANL A, directA(A)(direct)ANL A, RiA(A)(Ri)AN
34、L A, #dataA(A)data ANL direct, A direct(direct)(A) ANL direct, #data direct(direct)data2逻辑或指令逻辑或指令ORL指令助记符指令助记符操作说明操作说明指令助记符指令助记符操作说明操作说明指令助记符指令助记符操作说明操作说明ORL A, RnA(A)(Rn) ORL A, directA(A)(direct)ORL A, RiA(A)(Ri)ORL A, #data A(A)data ORL direct, A direct(direct)(A) ORL direct, #data direct(direct
35、)data3逻辑异或指令逻辑异或指令XRL指令助记符指令助记符操作说明操作说明指令助记符指令助记符操作说明操作说明指令助记符指令助记符操作说明操作说明XRL A, RnA(A) (Rn) XRL A, directA(A) (direct)XRL A, RiA(A) (Ri)XRL A, #data A(A) data XRL direct, A direct(direct) (A) XRL direct, #data direct(direct) data34 在使用中,逻辑与逻辑与:实现对指定位清0,其余位不变; 逻辑或逻辑或:实现对指定位置1,其余位不变; 逻辑异或逻辑异或:实现指定位取
36、反,其余位不变。 例例329329 根据要求写指令 (1) (1) 对累加器A的D1D1、D3D3、D5D5位清位清0 0,其余位不变: ANL A, #0D5H ;D5H=1101 0101, D1D1、D3D3、D5D5位位为为0 0 (2) (2) 对累加器A中的D2D2、D4D4、D6D6位置位置1 1,其余位不变: OR A, #54H ;54H=0101 0100, D2D2、D4D4、D6D6位位为为1 1 (3) (3) 对累加器A中的D0D0、D1D1位取反位取反,其余位不变: XRL A, #03H ;03H=0000 0011, D0D0、D1D1位位为为1 1354清零
37、和求反指令清零和求反指令 51单片机只有只有清零指令CLR A和求反指令CPL A是字节指令字节指令,其它清其它清零零和求反指令求反指令都是位操作指令位操作指令。 例例330 对R0中的内容取反: MOV A, R0 CPL A MOV R0, A5循环移位指令循环移位指令(a) RL A (b) RR A (c) RLC A (d) RRC A36 控制转移控制转移类指令:主要用于循环结构循环结构和分支结构分支结构程序,共有17条指令,包括无条件转移无条件转移指令、条件转移条件转移指令、子程序调用子程序调用和返回指令,以及空操作指令。 执行控制转移控制转移类指令将修改修改程序计数器PCPC的
38、值的值,使程序从PCPC新新指向指向的程序存储器地址存储单元地址存储单元开始执行程序开始执行程序,即实现了程序的转移。3.3.4 控制转移类指令控制转移类指令1无条件转移指令无条件转移指令指令助记符指令助记符操作说明操作说明指令助记符指令助记符操作说明操作说明LJMP addr16PCaddr16AJMP addr11PCD10D0addr11SJMP relPCPC+2+relJMP A+DPTRPC(A)+(DPTR)2条件转移指令条件转移指令 条件转移指令是指当条件满足时,程序转移到指定的目的地址;条件不满足时,程序将顺序执行。在51单片机中,条件转移指令有3种:对累加器A判0或判非0条
39、件转移指令、比较转移指令,以及减1不为0转移指令。37(1) 对累加器对累加器A判判0和判非和判非0条件转移指令条件转移指令指令助记符指令助记符操作说明操作说明指令助记符指令助记符操作说明操作说明JZ rel若A=0,则转移,否则,顺序执行JNZ rel若A0,则转移,否则,顺序执行(2) 比较不相等转移指令比较不相等转移指令指令助记符指令助记符操作说明操作说明CJNE A, direct, rel若(A)=(direct),顺序执行,否则转移;如果(A)(direct),Cy0;否则,Cy1CJNE A, #data, rel若(A)=data,顺序执行,否则转移;如果(A)data,Cy0
40、;如果(A)data,Cy0;如果(Rn)data,Cy0;否则,Cy1(3) 减减1不为不为0转移指令转移指令指令助记符指令助记符操作说明操作说明DJNZ Rn, rel若(Rn)1=0,则顺序执行;如果(Rn)10,则转移DJNZ direct, rel若(direct)1=0,则顺序执行;如果(direct)10,则转移383子程序调用与返回指令子程序调用与返回指令指令助记符指令助记符操作说明操作说明LCALL addr16 将该指令的下一条指令地址压入堆栈,然后PCaddr16,addr16为子程序人口地址ACALL addr11将该指令的下一条指令地址压入堆栈,然后PCaddr11,PC的高5位(D15D11)不变RET执行LCALL addr16或ACALL addr11指令压入堆栈的16位指令地址出栈PCRETI将响应中断时压入堆栈的16位指令地址出栈PC,清内部中断优先级标志4空操作指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毕业自我评价15篇
- 个人保证书集锦15篇
- 战友聚会致辞(15篇)
- 学生毕业晚会策划书12篇
- 四年级下册语文说课稿锦集六篇
- 客服辞职报告15篇
- 秋季幼儿园中班工作计划
- 出纳的实习报告范文锦集10篇
- 晶状体病-教学课件
- 健康检测设备代理销售合同(2篇)
- GB/T 42449-2023系统与软件工程功能规模测量IFPUG方法
- 酒店装修工程预算表EXCEL模板(推荐)
- NY 5052-2001无公害食品海水养殖用水水质
- 【讲座】2020年福建省高职分类考试招生指导讲座
- 性格决定命运课件
- 学习会计基础工作规范课件
- 双面埋弧焊螺旋钢管公称外公壁厚和每米理论重量
- 富士施乐VC2265打印机使用说明SPO
- 服务态度决定客户满意度试题含答案
- 教科版四年级科学上册全册复习教学设计及知识点整理
- 重庆万科渠道制度管理办法2022
评论
0/150
提交评论