版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理与C51基础寻址方式指令指令系统程序概念机器语言、汇编语言、高级语言-规定CPU执行某类操作的命令-全部指令的集合-相关指令的组合MCS-51指令系统指令类型5数据传送、算术运算、控制转移等寻址方式7寄存器寻址、直接寻址等(汇编)助记符42MOV、MOVX、ADD等(汇编)指令条数111如:MOVA,#data;MOVA,direct(少于机器码数)机器码种类255例:00000100B=INCA指令按功能分类数据传送类指令29算术运算类指令24逻辑运算及移位类指令24控制转移类指令17位操作类指令173.1汇编语言指令格式及常用方法指令系统的汇编语言格式指令通常包含操作码和操作数两个部分操作码指示计算机执行何种操作;操作数指出参加操作的数据或数据所在地址。3.1.1汇编语言指令格式:[标号:]操作助记符[目的操作数][,源操作数][;注释]
标号:该指令首地址,以子母开始,后可接1~8个字母或数字,不能是操作码或专用符号操作数:参加操作的数据或数据所在地址。助记符:汇编程序英文关键字,必须有注释:增加可读性例如:
ADD---加法助记符ADDA,RnADDA,@Ri寻址方式不同具体操作数有8个,所以机器码有8个
具体操作数有2个,所以机器码有2个
汇编指令助记符机器码3.1.2机器码的三种格式一、单字节指令单字节指令包含操作码、操作数的信息。两种情况:(1)一种是指令的含义和对象都很明确,用一个字节已能完全表示。无需特指操作对象。例指令:INCA(将累加器A的内容加1)指令编码:00000100B
(04H,A已知无需特指)(2)另一种是8位编码含有操作码和寄存器编码。例指令:MOVA,R0
(当前工作寄存器R0中的数据传送到累加器A)机器码:11101000B(高五位做操作码,低三位做寄存器编码)二.双字节指令双字节指令中,用第一字节表示操作码,第二个字节表示操作数(参与的数据或数据存放的地址)。MCS51指令系统中有45条双字节指令。格式:MOVA,#01HMOVA,#02H…MOVA,#0FFH操作数本身一字节三.三字节指令三字节指令的第一字节是操作码,后两个字节是操作数。三字节指令的编码形式有以下四种情况:操作码操作码操作码操作码立即数地址立即数地址立即数立即数地址地址例如:MOV20H,#50H编码为01110101B,00100000B,01010000B。十六进制表示为75H,20H,50H。功能是将数据“50H”传送到内部数据存储器的20H单元中。这类指令中的存储单元有256个,需用一字节表示,数据也有256个,也需用一字节表示,因此需要用3个字节表示指令的具体功能3.1.3指令中的符号标识在后续章节中用到的符号标识及含义如下:Rn(n=0~7)----当前选中的工作寄存器组中的寄存器R0~R7之一;Ri(i=0,1)---当前选中的工作寄存器组中的寄存器R0或R1
(间接寻址寄存器)
@
---------间址寄存器前缀;C---------进位标志位;$--------本条指令的起始地址#data---8位立即数;#data16--16位立即数;direct---片内数据存储器地址及SFR地址(可用符号名称表示);addr11---11位目的地址(短跳转、调用);addr16---16位目的地址;rel-----补码形式表示的8位地址偏移量,值在-128~+127范围内;bit------片内数据存储器可位寻址单元的位地址、SFR的位地址(可用符号名称);
/
----位操作数的取反操作前缀;
(×)
---表示×地址单元或寄存器中的内容;((×))
---表示×地址单元或寄存器中的内容为地址的单元的内容;←---将箭头右边的内容送入箭头左边的单元中。
→
---将箭头左边的内容送入箭头右边的单元中。3.280C51系列单片机的寻址方式寻址方式:指令执行时,得到参与操作的数据或者数据所在的地址单元的方法。51指令系统有七种寻址方式,即:立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。一条指令执行时,对源操作数和目的操作数都要寻址,本章针对源操作数对寻址方式进行介绍。3.2.1立即寻址定义:指令编码中直接给出操作数(数据)的寻址方式。寻址空间:立即寻址所对应的寻址空间为程序存储器。立即数可以为一个字节,也可以是两个字节,并要用符号“#”来标识由于立即数是一个常数,所以只能作为源操作数。例:MOVA,#30H
特殊功能寄存器区ACC程序存储器0FFFH30H74H0000HFFH30H80H3.2.2直接寻址定义:在指令中直接给出操作数的地址(direct),即指令中操作数部分是存放操作数的地址。寻址空间:片内数据存储区,即地址为00H~7FH的RAM单元和地址80H~0FFH的21个特殊功能寄存器。对于特殊功能寄存器一般采用其符号名称。如MOVA,SBUF例:MOVA,30H
数据存储器ACC程序存储器0FFFH30HE5H0000HFFH58H80H58H30H00H直接寻址还可用于对片内数据区中可位寻址单元的位,
和可位寻址的特殊功能寄存器的位进行寻址。特殊功能寄存器的按位直接寻址:既可用其位名称也可用位地址,一般使用位名称代表其具体地址。如MOVC,EA(EA/AFH)使用直接寻址要注意两个问题注意区分操作数是字节地址还是位地址
MOVA,30H
MOVC,30H
(进位标志C只可存1位)注意寄存器寻址与直接寻址的区别
INCA
A-累加器,汇编地址隐藏
INCACC
ACC-A的符号,E0H,可按位表示
INC0E0H
与上面等价3.2.3寄存器寻址定义:操作数放在寄存器(Rn等)中,指令中直接给出该寄存器名称无外部信息交换,速度快例:MOVA,R0机器码E8H=11101000B寄存器:工作寄存器R0-R7;A;B;DPTR注:ACC为直接寻址3.2.4寄存器间接寻址定义:指令中给出寄存器名,以该寄存器中的内容为地址,从该地址去取操作数。寻址空间:片内或片外数据存储器。为了和寄存器寻址相区别,寄存器名前加“@”符号例:(R0)=60H,(60H)=32H,执行MOVA,@R0
数据存储器ACC程序存储器0FFFHE6H0000HFFH32H80H32H60H60H00HR0片内寻址:数据传送采用“MOV”类指令,CPU不产生访问外部数据存储器的读/写信号,间接寻址寄存器采用寄存器R0或R1(堆栈操作时采用SP);片外寻址:数据传送采用“MOVX”类指令,CPU将产生访问外部数据存储器的读/写信号。两种选择:采用R0和R1作间址寄存器,这时R0或R1提供低8位地址(外部数据存储器多于256字节采用页面方式访问时,由P2口未使用的I/O引脚提供高位地址);采用DPTR作为间址寄存器,提供16位地址,可访问整个片外数据存储器的64K空间。例:假设DPTR内容为2000H,
片外数据存储器2000H单元内容为30H,片外数据存储器累加器A执行
MOVXA,@DPTR结果A=30H3.2.5变址寻址定义:以一个基地址加上一个偏移量形成操作数地址的寻址方式称为变址寻址。基址寄存器:数据指针DPTR或程序计数器PC,内容为基地址偏移量寄存器:累加器A,其内容为偏移量实际操作数地址:基址寄存器的内容与偏移量寄存器的内容之和寻址空间:程序存储器,如读取数据表格例:MOVCA,@A+PC两条变址寻址指令:
MOVCA,@A+PCA((A)+(PC))
MOVCA,@A+DPTRA((A)+(DPTR))
3.2.6相对寻址目标地址=源地址+本转移指令的字节数+rel用于转移类指令,以程序计数器PC的值(PC取指后下条指令的地址)为基准,加上相对偏移量rel
形成目标地址,使程序转移到目标地址继续执行。偏移量rel为带符号八位二进制数,补码,范围:-128~127例:SJMP08H例3-6、指令SJMP54H存放于ROM的2000H起始单元,运行后如何跳转?3.2.7位寻址定义:对位地址中的内容进行操作的寻址方式。寻址空间:数据存储器操作数是8位二进制数中的某一位,例:MOVC,20H
SETB30H
(置1)
CLRR1
(清零)位寻址指令中,操作数部分是要操作的数的位地址,因此,位寻址实质上是直接寻址。位地址的表示方法表示方法适用示例位名称特殊功能寄存器CLRRS0位地址通用CLR0D3H字节地址.位通用CLR0D0H.3特殊功能寄存器名.位可位寻址的特殊功能寄存器CLRPSW.3BIT伪指令给位地址赋名称通用FLAGBIT30HMOVC,FLAG单片机原理与C51基础指令系统(数据传送类)指令系统分类111条指令,按照功能分为:数据传送类指令算术运算类指令逻辑运算及移位类指令控制转移类指令位操作指令3.3数据传送类指令最基本,使用最多的指令实现数据传送、存储和交换一般不影响PSW的状态,传送到A时影响奇偶标志P内部RAM传送访问外部RAM查表-读取ROM中常数表数据交换指令堆栈操作指令MOVMOVXMOVCXCH/XCHD/SWAPPUSH/POP(1)以累加器A为目的操作数源操作数的寻址方式可以是寄存器寻址、直接寻址、寄存器间接寻址、和立即寻址四种MOVA,Rn;(A)←(Rn)MOVA,direct ;(A)←(direct)MOVA,@Ri ;(A)←((Ri))MOVA,#data ;(A)←#data
3.3.1内部RAM数据传送指令(MOV)例:已知(A)=30H,(R0)=40H,(40H)=50H:MOVA,R0 ;将R0中的数据取出送入A,(A)=40HMOVA,40H;将40H单元数据送入A,(A)=50HMOVA,@R0
;把R0内容为地址的单元的内容送入A,(A)=50H。(2)以寄存器Rn为目的操作数MOVRn,direct ;Rn←(direct)MOVRn,#data ;Rn←#dataMOVRn,A ;Rn←A
不可用:Rn←((Ri))、Rn←(Rn)例:若片内数据存储器50H单元的内容(50H)=40H,
执行指令
MOVR6,50H
后,(R6)=40H。例3-9、(A)=50H,(R1)=10H,(R2)=20H,
(R3)=30H,(30H)=4FHMOVR1,A ;R1←(A)MOVR2,30H;R2←(30H)MOVR3,#85H ;R3←85H
(R1)=50H,(R2)=4FH,(R3)=85H(3)以直接地址为目的操作数MOVdirect,A ;direct←(A)MOVdirect,Rn ;direct←(Rn)MOVdirect,direct1 ;direct←(direct1)MOVdirect,@Ri ;direct←((Ri))MOVdirect,#data ;direct←#data
(4)以间接地址@Ri为目的操作数MOV@Ri,A ;(Ri)←(A)MOV@Ri,direct ;(Ri)←(direct)MOV@Ri,#data
;(Ri)←#data
例3-11、(R1)=60H,(A)=20H,(30H)=22HMOV@R1,A;(R1)←(A)MOV@R1,#26H;(R1)←26HMOV@R1,30H ;(R1)←(30H)(R1)=60H,(60H)=20H;(R1)=60H,(60H)=26H;(R1)=60H,(60H)=22H;(5)以DPTR为目的操作数MOVDPTR,#data16;DPTR←data16data16的高8位送DPH,低8位送DPL操作码目的操作数源操作数ARndirect@Ri#dataMOVA√√√√Rn√√√direct√√√√√@Ri√√√例:顺序执行下列指令序列,求每一步结果。MOVA,#30H MOV4FH,A MOVR0,#20H MOV@R0,4FH MOV21H,20H;A=30H;(4FH)=30H;R0=20H;(20H)=30H;(21H)=30HMOV指令的字节数一字节:指令中不含直接地址,又不含8位立即数二字节:指令中包含一个直接地址或8位立即数三字节:指令中包含两个上述类型的操作数MOVA,@R0;1字节MOVA,direct;2字节MOVdirect,#data;3字节MOVDPTR,#data16;3字节3.3.2.访问外部RAM的数据传送指令(MOVX)用于与外部RAM或I/O口进行数据传送必须使用寄存器间接寻址法必须通过累加器A来传送注意每条指令的数据传输方向注意每条指令的16位外部地址的形成方法(1)读取片外RAM或I/O口指令MOVXA,@DPTR ;A←((DPTR))MOVXA,@Ri ;A←((P2Ri))(2)写片外RAM或I/O口指令MOVX@Ri,A ;(P2Ri)←(A)
MOVX@DPTR,A ;(DPTR)←(A)例:试编写一程序段,实现将片外RAM的2000H单元中的内容传送到片外RAM的20H单元中。解:MOVDPTR,#2000HMOVXA,@DPTRMOVR0,#20HMOVX@R0,A片外RAM与片外RAM间不能直接传送,需用累加器A3.3.3.查表指令(MOVC)MOVCA,@A+DPTR;(A)←((A)+(DPTR))MOVCA,@A+PC ;(PC)←(PC)+1,(A)←((A)+(PC))
1两条指令寻址的存储空间2两条指令的查找范围例3-14、在外部ROM中2000H单元开始存放(0-9)的平方值0,1,4,9,…81,要求根据A中的值(0-9)来查找对应的平方值,并存入60H中。解1)用DPTR作基址寄存器MOVDPTR,#2000HMOVCA,@A+DPTRMOV60H,A解2)用PC作基址寄存器,在MOVC前用加法调整ADDA,#dataMOVCA,@A+PCMOV60H,ARET2000H:DB0,1,4,9,16,25,36,…813.3.4.数据交换类指令XCH A,Rn ;(A)<=>(Rn)XCH A,direct;(A)<=>(direct)XCH A,@Ri ;(A)<=>((Ri))XCHD A,@Ri ;(A0~3)<=>((Ri)0~3)SWAP A ;(A0~3)<=>(A4~7)
交换类指令数据传送示意图片内数据存储器片内数据存储器3.3.5.堆栈操作类指令堆栈定义:在片内RAM中开辟一个空间用于数据暂存,遵循先进后出原则,此区域叫堆栈。堆栈特点:栈底固定,栈顶浮动,地址指针为SP。堆栈用途:子程序嵌套保存断点,中断时保护断点和现场。
PUSHdirect
;
SP←(SP)+1,(SP)←(direct)
POPdirect;
direct←((SP)),SP←(SP)–1如:(A)=44H,(30H)=55H62H61H55H60H44H5FH…5EH…SP62H61H55H60H44H5FH…5EH…SPMOVSP,#5FH;
栈顶设为5FHPUSHACC;
把A中的44H压到60H中保存PUSH30H;
把30H中的55H压到61H中保存POP30H;
把61H中的55H弹出到30H中POPACC;
把60H中的44H弹出到A中堆栈区注意:堆栈区可在RAM内任意设定,复位置于07H避免堆栈区与数据存储区冲突压栈时堆栈指针SP先加1,然后进行数据传送弹栈时先进行数据传送,堆栈指针SP之后减1
要注意压栈和弹栈的顺序,并保证堆栈平衡传送类指令与存储空间关系片内数据存储器数据传送使用MOV、XCH、XCHD、SWAP、PUSH、POP等程序存储器数据传送或称查表指令使用
MOVC助记符,共两条指令。片外数据存储器数据传送使用MOVX助记符,共四条指令;单片机原理与C51基础指令系统(运算类)3.4.算术运算类指令
该类指令可以完成加、减、乘、除以及加1、减1和十进制调整等运算这类指令多数以A为源操作数之一,同时又使A为目的操作数。3.4.1.加法指令ADDA,#data ;(A)←(A)+#data
ADDA,Rn ;(A)←(A)+(Rn)ADDA,direct ;(A)←(A)+(direct)ADDA,@Ri ;(A)←(A)+((Ri))影响CY、AC、OV、P位(1)不带进位加法10010100+10001101
100100001 例:无符号数(A)=94H,(30H)=8DH,执行指令ADDA,30H,求和与标志位情况 PSW=?11000100=C4H1011A=21H(2)带进位加法指令ADDCA,Rn ;(A)←(A)+(Rn)+(CY)ADDCA,direct ;(A)←(A)+(direct)+(CY)ADDCA,@Ri ;(A)←(A)+((Ri))+(CY)ADDCA,#data ;(A)←(A)+#data+(CY)用于多字节数相加,CY为指令运行前值例3-24、两个无符号16位二进制数,分别存于30H、31H单元和40H、41H单元(低8位先存)。写出两个16位数的加法程序,将和存于50H、51H单元(设和不超过16位)。MOVA,30HADDA,40HMOV50H,AMOVA,31HADDCA,41HMOV51H,A(3)加1指令INC A ;(A)←(A)+1(溢出只存余项)INC Rn ;(Rn)←(Rn)+1INC direct;(direct)←(direct)+1INC @Ri ;((Ri))←((Ri))+1INC DPTR;(DPTR)←(DPTR)+1(16位)例3-25、已知(A)=20H,(30H)=36H,(R7)=58H,(R0)=50H,(50H)=08H,(DPTR)=2000HINCAINC30HINCR7INC@R0INCDPTR(A)=21H(30H)=37H(R7)=59H(R0)=50H,(50H)=09H(DPTR)=2001H(4).十进制调整指令DAA ;把A中的二进制数调整为BCD码调整要完成的任务:1)当A中的低4位数出现了非BCD码(1010~1111)或低4位产生进位(AC=1),则应在低4位加6调整。2)当A中的高4位数出现了非BCD码(1010~1111)或高4位产生进位(CY=1),则应在高4位加6调整。执行本指令后,PSW中的CY表示结果的百位值。例:设A的内容为BCD码56,R3内容为BCD码69,要求两数按10进制相加执行指令ADDA,R3DA A0101011001101001+1011111101100110调整+001001011←结果
125--10进制(1)带借位减法指令SUBBA,Rn ;(A)←(A)-(Rn)-(CY)SUBBA,direct ;(A)←(A)-(direct)-(CY)SUBBA,@Ri ;(A)←(A)-((Ri))-(CY)SUBBA,#data ;(A)←(A)-#data-(CY)如用不带借位减法,先用指令清零CY。3.4.2.减法指令(2)减1指令DEC A ;(A)←(A)-1DEC Rn ;(Rn)←(Rn)-1DEC direct;(direct)←(direct)-1DEC @Ri ;((Ri))←((Ri))-13.4.3乘除法指令乘法
MULAB;(B)15~8(A)7~0←(A)×(B)乘数、被乘数分别存于A、B积的低字节存于A。如果乘积大于0FFH,则高字节存于B,且置位溢出标志(OV),否则溢出标志清零。用OV判断积的字节个数。进位标志CY总被清零
除法DIVAB;(A)商(B)余数←(A)/(B)
运算前,被除数、除数分别存于A、B;运算后,商存于A,余数存于B;进位标志CY清零;若除数为零,置位溢出标志OV,否则清零OV。
3.5逻辑运算及移位类指令1.逻辑与指令(ANL)ANLA,Rn ;(A)←(A)(Rn)ANLA,direct ;(A)←(A)(direct)ANLA,@Ri ;(A)←(A)((Ri))ANLA,#data ;(A)←(A)#dataANLdirect,A ;(direct)←(direct)(A)ANLdirect,#data;(direct)←(direct)#data2.逻辑或指令(ORL)ORLA,Rn ;(A)←(A)(Rn)ORLA,direct ;(A)←(A)(direct)ORLA,@Ri ;(A)←(A)((Ri))ORLA,#data ;(A)←(A)#data
ORLdirect,A ;(direct)←(direct)(A)ORLdirect,#data;(direct)←(direct)#data3.逻辑异或指令(XRL)XRLA,Rn ;(A)←(A)⊕(Rn)XRLA,direct;(A)←(A)⊕(direct)XRLA,@Ri ;(A)←(A)⊕((Ri))XRLA,#data;(A)←(A)⊕#dataXRLdirect,A;(direct)←(direct)⊕(A)XRLdirect,#data;(direct)←(direct)⊕#data基本用途例3-34、编程使RAM中30H单元的低2位清零,高2位置1,其余4位取反。ANL30H,#0FCH;11111100ORL30H,#0C0H;11000000XRL30H,#3CH;00111100逻辑与–将某些位清零(该位与0相与)逻辑或–将某些位置一(该位与1相或)逻辑异或–将某些位取反(该位与1作异或)与、或、异或三类指令都是按位进行逻辑运算,不影响CY、AC和OV标志位;以A为目的操作数的指令影响P标志位。特点4.累加器清零及取反指令CPLA
;(A)←(/A)CLRA
;(A)←0这两条指令影响P标志位5.移位指令所有移位指令只能对累加器A内容进行操作循环左移(1位)指令RLA
;(An+1)←(An),(A0)←(A7)CyA7A0循环右移(1位)指令
RRA
;(An)←(An+1),(A7)←(A0)
注:左移一位相当于乘2;右移一位相当于除2。
带进位位循环左移指令
RLCA
;(An+1)←(An),(CY)←(A7),(A0)←(CY)
CyA7A0带进位位循环右移指令
RRCA
;(An)←(An+1),(CY)←(A0),(A7)←(CY)
CyA7A0单片机原理与C51基础指令系统(控制、位操作)3.6控制转移类指令
控制程序转移到新的PC地址去执行可改变程序执行的顺序,实现判断、分支以及循环。可分为4类:
-无条件转移指令-条件转移指令-调用子程序及返回指令-空操作指令1.无条件转移指令
LJMPaddr16;PC←addr16
长转移,目标地址:0000H~FFFFH,64KBSJMPrel ;PC←PC+2+rel-相对转移(短转移),偏移量为目标与下一条指令地址之差。目标地址=源地址+2+rel-rel补码,带符号,+127~-128-rel(或addr,addr16)可写为目标地址标号,偏差量由汇编自动计算,如SJMPdest,dest为某指令行标号AJMPaddr11;PC10~0←addr11
-短跳转(绝对跳转),指令本身双字节。给出11位目标地址。由操作码的高3位和一字节操作数构成
-目的地址的形成:先(PC)=(PC)+2;然后PC15~11不变,PC10~0=addr10~0操作码操作数A10A9A800001A7~A0程序存储器序号地址范围序号地址范围序号地址范围序号地址范围10000H~07FFH94000H~47FFH178000H~87FFH25C000H~C7FFH20800H~0FFFH104800H~4FFFH188800H~8FFFH26C800H~CFFFH31000H~17FFH115000H~57FFH199000H~97FFH27D000H~D7FFH41800H~1FFFH125800H~5FFFH209800H~9FFFH28D800H~DFFFH52000H~27FFH136000H~67FFH21A000H~A7FFH29E000H~E7FFH62800H~2FFFH146800H~6FFFH22A800H~AFFFH30E800H~EFFFH73000H~37FFH157000H~77FFH23B000H~B7FFH31F000H~F7FFH83800H~3FFFH167800H~7FFFH24B800H~BFFFH32F800H~FFFFH–64KB分32个页面,每页2KB.PC高5位指定页面数-AJMP跳转范围是下一条指令同页面内的2KB注意:相对转移(如SJMP)的范围,是以指令的下一条指令为中心的前后范围(-128~+127),这一范围随指令位置不同而浮动;短跳转指令(AJMP)的跳转范围是其下一条指令所在的某个固定页面内。从程序存储器0000H单元开始每2K区域依次划分为一个固定页面。偏移量rel都可以写作16位目的地址的标号,汇编时自动转换为转移字节数。间接转移指令,不影响标志位,不更改A和DPTR的内容目标地址=(A)+(DPTR)
(16位无符号数相加)常用于多分支转移(也称为散转):由DPTR决定散转表首址,A确定具体分支JMP@A+DPTR;PC←A+DPTR例:当(A)=0时,执行PRG0段程序,(A)=1时,执行PRG1段程序,……(A)=n时,执行PRGn段程序(n=0,1,2,3……)MOVDPTR,#TABLE
;表首址送DPTR
RLA;A乘2 JMP@A+DPTR;散转TABLE:AJMPPRG0 AJMPPRG1 ┆ AJMPPRGn比较LJMP、AJMP、SJMP、JMP转移的起点和范围:
LJMPLJMPPC64K
AJMPAJMP2K
SJMPSJMPPC+2-128+127
JMPJMP@A+DPTRPCPC+2DPTR64K实现按照一定条件决定转移的方向,分三类:判零转移指令比较转移指令循环转移指令2.条件转移指令
判零转移指令
JZ rel
;若A=0则转移(PC←PC+2+rel),若A0程序顺序执行JNZ rel
;若A0则转移(PC←PC+2+rel),若A=0程序顺序执行例、将外RAM的一个数据块(首地址为DATA1)传送到内部数据RAM(首地址为DATA2),遇到传送的数据为零时停止传送,试编程。解:MOVR0,#DATA2MOVDPTR,#DATA1LOOP1:MOVXA,@DPTR
JZLOOP2MOV@R0,AINCR0INCDPTRSJMPLOOP1LOOP2:SJMPLOOP2
DJNZRn,rel
;Rn←Rn–1,若Rn0,则转移(PC←PC+2+rel),若Rn=0,程序顺序执行DJNZdirect,rel ;(direct)←(direct)-1,
若(direct)0,则转移(PC←PC+3+rel),若(direct)=0,程序顺序执行循环转移指令
例:1~100逐个累加程序:MOV R0,#64HCLR AMOV 30H,AMOV 31H,ALOOP:MOV A,30H
ADD A,R0MOV 30H,AMOVA,31H
ADDC A,#00HMOV 31H,ADJNZ R0,LOOP
SJMP$CJNEA,direct,rel;若A(direct),则转移(PC←PC+3+rel),否则程序顺序执行
CJNEA,#data,rel;若A#data,则转移(PC←PC+3+rel),
否则程序顺序执行CJNERn,#data,rel ;若Rn#data,则转移(PC←PC+3+rel),
否则程序顺序执行CJNE@Ri,#data,rel;若((Ri))#data,则转移(PC←PC+3+rel),否则程序顺序执行
比较转移指令
比较转移指令特点具有比较和判断双重功能,比较的本质是做减法运算,用第一操作数内容减去第二操作数内容,但差值不回存。转移目的地址=(PC)+3+rel若第一操作数内容小于第二操作数内容,则(C)=1,否则(C)=0。该类指令可产生三分支程序:即,相等分支;大于分支;小于分支。
A=B?出口YN
A>B?入口YN123例、设P1口的P1.0~P1.3为准备就绪信号输入端,当该四位为全1时,说明各项工作已准备好,单片机可顺序执行,否则,循环等待。解:WAIT:MOVA,P1ANLA,#0FHCJNEA,#0FH,WAIT;P1.0~P1.3不全为1时,返回WAIT
MOVA,R2………
LCALLaddr16;长调用
ACALLaddr11;短调用
(绝对调用)LCALLaddr16;转移范围64KB,不影响标志位。执行中自动完成如下过程:PCPC+3SPSP+1(SP)PC7~0,保护断点地址低字节;SPSP+1(SP)PC15~8,保存断点地址高字节;PCaddr16,目的地址送PC,转子程序。
3、调用及返回指令例、设SP=07H,PC=2100H,子程序首地址为3456H,执行:LCALL3456HMOVA,20H······LCALL34H56HMOV
••••执行结果:SP=09H,(09H)=21H,(08H)=03H,
PC=3456H
SP07HSPSP08H09H2100H3456H外ROM内RAMPC+3PC2103HPC03H21H转移范围与(PC)+2在同一个2KB内。不影响任何标志位,执行中机器自动完成下列过程:PCPC+2SPSP+1(SP)PC7~0SPSP+1(SP)PC15~8PC10~0addr10~0 ACALLaddr11:返回指令:从子程序返回主程序。RET
;调用子程序返回,弹栈;
RETI
;中断子程序返回。
其机器自动操作过程如下:异同点:RET返回地址事先已知,而RETI的返回地址在程序执行中产生的,不固定。不影响标志位,但PSW不能恢复到中断前的状态。PC15~8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《光电信息科学与工程专业毕业实习》课程教学大纲
- 人教版部编本二年级语文上册全本教案
- 2024年出售转让绕线机合同范本
- 2024年代理柴油买卖合同范本
- 2024年便利店盘货转让合同范本
- 江苏省淮安市2024-2025学年九年级上学期期中历史试卷(含答案解析)
- 基础护理的护理
- 广东省2024-2025学年七年级上学期期中语文试题
- 天津市河北区2024-2025学年八年级上学期11月期中英语试题(含答案含听力原文无音频)
- 咽喉炎护理个案
- 2024届高考高考英语高频单词素材
- 回收PET塑料资源化利用及产业化进展研究
- 《住院患者身体约束的护理》团体标准解读课件
- 安全事故管理考核办法范本(2篇)
- 2024-2025一年级上册科学教科版2.4《气味告诉我们》课件
- 宣讲《铸牢中华民族共同体意识》全文课件
- 睡眠障碍的种类和处理方法
- 10000中国普通人名大全
- 口腔诊所器材清单
- 产品合格证模板
- 天然基础基坑3M深土方开挖专项方案
评论
0/150
提交评论