单片机与接口技术-5 51单片机的CISC指令集与汇编编程举例_第1页
单片机与接口技术-5 51单片机的CISC指令集与汇编编程举例_第2页
单片机与接口技术-5 51单片机的CISC指令集与汇编编程举例_第3页
单片机与接口技术-5 51单片机的CISC指令集与汇编编程举例_第4页
单片机与接口技术-5 51单片机的CISC指令集与汇编编程举例_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机与接口技术第5日指令系统与汇编语言(2)无条件转移指令(4条)

4.控制转移指令(17条)

1.绝对转移指令AJMPaddr11;PC+2PC,addr11PC.10~PC.0···PCPC+1PCPCPC+2PCA10A9A800001A7A6A5A4A3A2A1A0操作码(第一字节)操作数(第二字节)PC高5位(保持不变)PC低11位程序计数器PC注意:目标地址必须与它下面的指令存放地址在同一个2K字节区域内。2.基寄存器加变址寄存器间接转移指令(散转指令)JMP@A+DPTR;((A))+(DPTR)PC功能:改变程序计数器PC中的内容,控制程序执行的流向,实现程序分支转向。除了CJNE影响PSW的进位标志位Cy外,其余均不影响PSW的各标志位。

3.短(相对)转移指令SJMPrel;PC+2PC,rel+PC

PC···PCPC+1PCPCPC+2PCPCPC+2+relPC4.长转移指令LJMPaddr16;addr16PC0-PC15注意:转向的目标地址只能在下条指令前128字节到后127字节注意:该指令可以转移到64KB程序存储器中的任意位置。注意:(1)使用转移指令时,指令中的地址或偏移量均可采用标号,只有在执行前才被汇编成实际的二进制地址。(2)指令的转移范围:在执行当前转移指令后的PC值的基础上:

长转移指令LJMP:64KB

绝对转移指令AJMP:2KB

相对(短)转移指令SJMP:-128~+127(用补码表示)间接(散)转移指令JMP:64KB(3)相对(短)转移指令SJMPrel中地址偏移量的计算:

rel=转移目标地址-转移指令地址(当前PC值)-2(4)原地踏步(暂停当前的程序,并不是真的停机)的实现

SJMP$

或HERE:SJMPHERE(5)间接(散)转移指令:JMP@A+DPTR常用于实现程序的分支转移(散转)。DPTR为转移目的的起始地址,A为转移目的的偏移量。1.累加器为零/非零转移指令(2条)2.减1非零转移指令(2条)DJNZ

Rn,rel;(Rn)-1≠0则转移

(PC)←(PC)+2+rel

(Rn)=0则顺序执行(PC)←(PC)+2DJNZ

direct,rel;(direct)-1≠0则转移(PC)←(PC)+3+rel

(direct)=0则顺序执行(PC)←(PC)+3

在规定的条件满足时进行程序转移,否则程序往下顺序执行。JZ

rel;若(A)=0,则转移

(PC)←(PC)+2+rel

若(A)≠0,则顺序执行(PC)←(PC)+2

JNZ

rel;若(A)≠0,则转移(PC)←(PC)+2+rel

若(A)=0,则顺序执行(PC)←(PC)+2

条件转移指令(8条)

3.比较转移指令(4条)CJNE

A,direct,relCJNE

A,#data,relCJNERn,#data,relCJNE@Ri,#data,rel助记符格式相应操作机器周期CJNEA,#data,rel

若A≠#data,则PCPC+rel,否则顺序执行;若A<#data,则CY=1,否则CY=02CJNERn,#data,rel若Rn≠#data,则PCPC+rel,否则顺序执行;若Rn<#data,则CY=1,否则CY=02CJNE@Ri,#data,rel若(Ri)≠#data,则PCPC+rel,否则顺序执行;若(Ri)<#data,则CY=1,否则CY=02CJNEA,direct,rel若A≠(direct),则PCPC+rel,否则顺序执行;若A<(direct),则CY=1,否则CY=02功能:

把两个操作数进行比较,以比较的结果作为条件来控制程序的转移。

若(目的操作数)=(源操作数),则程序继续执行,(PC)←(PC)+3若(目的操作数)<(源操作数),则程序转移,

(PC)←(PC)+rel+3,Cy←1若(目的操作数)>(源操作数),则程序转移,

(PC)←(PC)+rel+3,Cy←0注意:

比较转移指令的比较是通过两操作数的减法实现的,影响Cy标志位,不保存最后的差值,两个操作数的内容不变。条件转移指令均为相对转移指令,因此指令的转移范围十分有限。若要实现64KB范围内的转移,则可以借助于一条长转移指令的过渡来实现。5.子程序调用与返回指令(4条)

具有完整功能的程序段定义为子程序,供主程序调用。功能:供主程序在需要时调用。子程序可以在程序中反复多次使用,以简化源程序的书写。特点:子程序可以嵌套,有利于模块化程序设计。

主程序与子程序之间的调用关系如下左图所示,两级子程序嵌套的示意图如下右图所示。

为了实现主程序对子程序的一次完整调用,必须有子程序调用指令和子程序返回指令。子程序调用指令在主程序中使用,而子程序返回指令则是子程序的最后一条指令。调用与返回指令是成对使用的。子程序调用指令:必须具有自动把程序计数器PC中的断点地址保护到堆栈中,且将子程序入口地址自动送入程序计数器PC中的功能。子程序返回指令:必须具有自动把堆栈中的断点地址恢复到程序计数器PC中的功能。注意:子程序调用时应注意入口参数设置,子程序返回时应注意出口参数的传递。1.绝对短调用指令

ACALLaddr11;(PC)←(PC)+2,

(SP)←(SP)+1,(SP)←(PC)7~0,(SP)←(SP)+1,

(SP)←(PC)15~8,(PC)10~0←addr11

其中:addr11为11位地址,实际编程时可以用符号地址。并且只能在2KB范围以内调用子程序。2.绝对长调用指令

LCALLaddr16;(PC)←(PC)+3,

(SP)←(SP)+1,(SP)←(PC)7~0,(SP)←(SP)+1,

(SP)←(PC)15~8,(PC)15~0←addr16

其中:addr16为16位地址,实际编程时可以用符号地址。可以在64KB范围以内调用子程序。3.子程序返回指令

RET;(PC)15~8←((SP)),(SP)←(SP)1,

(PC)7~0←((SP)),(SP)←(SP)14.中断返回指令

RETI;(PC)15~8←((SP)),(SP)←(SP)1,

(PC)7~0←((SP)),(SP)←(SP)1注:中断服务程序是一种特殊的子程序,它是在计算机响应中断时,由硬件完成调用而进入相应的中断服务程序。RETI指令与RET指令相仿,区别在于RET是从子程序返回,RETI是从中断服务程序返回。无论是RET还是RETI都是子程序执行的最后一条指令。空操作指令NOP(1条)

NOP;(PC)←(PC)+1功能:不执行任何操作,消耗了一个机器周期,常用于软件延时或在程序可靠性设计中用来稳定程序。特点:NOP占据一个单元的存储空间,除了使PC的内容加1外,CPU不产生任何操作结果,只是消耗了一个机器周期。6.位操作指令(17条)

位操作(布尔变量操作):操作数不是字节,而是字节中的某个位。每位的取值只能取0或1。指令的寻址范围:片内RAM位寻址区20H~2FH,SFR中的11个可位寻址特殊寄存器中的83个可寻址位。特点:以进位标志Cy作为位累加器,可以实现布尔变量的传送、运算和控制转移等功能。指令中的位地址的表达方式:直接地址方式(如0AFH)、特殊功能寄存器名.位序号(如PSW.3)、字节地址.位序号(如0D0H.0)、位名称方式(如F0)和用户定义名称等几种方式。RAM位寻址区位地址映象7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D05单元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07MSB

位地址

LSB7C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800特殊功能寄存器位地址映象D7F7E7CYD7—B7AFA7SM09F97TF18F87D6F6E6ACD6—B6—A6SM19E96TR18E86D5F5E5F0D5—B5—A5SM29D95TF08D85D4F4E4RS1D4PSBCB4ESACA4REN9C94TR08C84D3F3E3RS0D3PT1BBB3ET1ABA3TB89B93IE18B83D2F2E2OVD2PX1BAB2EX1AAA2RB89A92IT18A82D1F1E1F1D1PT0B9B1ET0A9A1TI9991IE08981D0F0E0PD0PX0B8B0EX0A8A0RI9890TF08880特殊功能寄存器BACCPSWIPP3IEP2SCONP1TCONP0位变量传送指令(2条)

MOV

C,bitMOV

bit,C单元地址7E766E665E564E463E362E261E16067D756D655D554D453D352D251D150D052FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07

MSB位地址LSB7C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800MOVC,0EH0E(21H).6

CY助记符格式机器码(B)相应操作指令说明机器周期MOVC,bit10100010CYbit位传送指令,结果影响CY标志2MOVbit,C10010010bitCY位传送指令,结果不影响PSW2位变量修改指令(6条)

CLRCCLRbitSETBCSETBbitCPLCCPLbit助记符格式机器码(B)相应操作指令说明机器周期CLRC11000011CY0位清0指令,结果影响CY标志1CLRbit11000010bitbit0位清0指令,结果不影响PSW1SETBC11010011CY1位置1指令,结果影响CY标志1SETBbitbit1位置1指令,结果不影响PSW111010010bitCPLC10110011位取反指令2CPLbit10110010位取反指令,结果不影响CY2CYCYbitbit位变量逻辑操作指令(4条)

ANLC,bitANLC,/bitORLC,bitORL

C,/bit助记符格式机器码(B)相应操作指令说明机器周期ANLC,bit10000010bitCYCY∧bit位与指令2ANLC/bit10110010bit位与指令2ORL,bit01110010bitCYCY∨bit位或指令2ORLC/bit10100010bit位或指令2CYCY∧bitCYCY∨bit例1:MOVC,00HANLC,P1.1;(20H).0CY;(C)^(P1.1)CY例2:MOVC,6EHORLC,/P1.1;(2DH).6CY;(C)∨(P1.1)CY位条件(控制)转移指令(5条)

特点:以位的状态作为实现程序转移的判断条件。1.以进位标志位Cy内容为条件的转移指令

JCrel;若(Cy)=1,则转移(PC)←(PC)+2+rel,否则顺序执行JNCrel;若(Cy)=0,则转移(PC)←(PC)+2+rel,否则顺序执行2.以位地址bit内容为条件的转移指令

JBbit,rel;若(bit)=1,则转移(PC)←(PC)+3+rel,否则顺序执行

JNBbit,rel;若(bit)=0,则转移(PC)←(PC)+3+rel,否则顺序执行

JBCbit,rel;若(bit)=1,则转移(PC)←(PC)+3+rel,且(bit)←0,否则顺序执行7.伪指令汇编语言源程序由以下两种指令构成汇编语句(指令语句)伪指令(指示性语句)汇编语句的格式:

标号:

操作码

操作数 ;注释3.

伪指令:控制汇编用的特殊指令,这些指令不属于指令系统,不产生机器代码。

常用的伪指令ORG定位目的程序的起始地址。格式: ORG表达式表达式必须为16位地址值。如:ORG0000H

DS

自此开始保留几个字节不用。

如:

ORG 1000H TEMP:DS10

END汇编语言程序结束伪指令。一定放在程序末尾!EQU赋值伪指令。

格式:字符名称EQU数值或汇编符号

例: AA EQU 30H

K1 EQU 40H MOVA,AA ;(30H)→A MOVA,K1 ;(40H)→ADB

从指定单元开始定义(存储)若干个字节的数据或ASCII码字符,常用于定义数据常数表。 格式:DB

字节常数或ASCII字符例: ORG 1000H DB 34H,0DEH,’A’,’B’

DB 0AH,0BH,20DW

从指定单元开始定义(存储)若干个字的数据或ASCII码字符。格式:DW 字常数或ASCII字符

例: ORG2000H DW 1234H,’B’ DW 0AH,20

BIT

位地址符号指令。把位地址赋于规定的字符名称。 格式:字符名称 BIT 位地址例: ABC BIT P1.1 QQ BIT P3.28.汇编语言程序设计举例

在进行应用程序设计时,首先要确定算法,算法的优劣很大程度上决定了程序的效率,另外还要尽可能画出程序框图,以便于分析程序流程。具体设计中还有主程序和子程序之分,主程序又称为前台程序,它通常是一个无穷循环,子程序又称为后台程序,它可以是各种功能子程序,也可以是中断服务子程序。在主程序中完成单片机系统的初始化,如内存单元清零、开放中断等。子程序一般完成某个具体任务,如数据采集、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论