第5讲 单片机指令系统2_第1页
第5讲 单片机指令系统2_第2页
第5讲 单片机指令系统2_第3页
第5讲 单片机指令系统2_第4页
第5讲 单片机指令系统2_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

第5讲(2012-4-17)11-12第2学期第8周汽车单片机1.指令系统简介;2.寻址方式;3.指令系统;4.汇编语言程序设计;5.程序设计实例;第3章MCS-51指令系统及汇编语言MCS-51的基本指令共111条,按指令所占的字节来分:

(1)单字节指令49条;

(2)双字节指令45条;

(3)三字节指令17条。按指令的执行时间来分:

(1)1个机器周期(12个时钟振荡周期)指令64条

(2)2个机器周期(24个时钟振荡周期)指令45条(3)只有乘、除两条指令的执行时间为4个机器周期(48个时钟振荡周期)。复习指令系统分类占用哪里的字节?该时间由谁来决定?复习指令格式

指令格式——指令的表达方式称为指令格式

[标号:]操作码[目的操作数][,源操作数][;注释]LP1:MOV@R0,A;先清R0INCR0;R0里数据自加1DJNZR7,LP1;先(R7)-1→R7,判断R7复习

寻址方式

MCS-51单片机有7种寻址方式,见表1。序号寻址方式范例1立即寻址MOVA,#20H2直接寻址MOVA,20H3寄存器寻址MOVA,Rn

4寄存器间接寻址MOVA,@Ri

5变址寻址MOVCA,@A+DPTRMOVCA,@A+PC6相对寻址JZrel;PC<-(PC)+2+relJCLOOP7位寻址MOVC,40H有五大类指令,共111条:(1)数据传送类(28条)

:RAM、ROM、堆栈,传送、交换数据。(2)算术运算类(24条)

:字节。其中操作数既可能是数据,也可能是地址。加、减、乘、除,自加(减)1;(3)逻辑运算类(25条)

:与、或、异或、移位。(4)控制转移类(17条)

:(无)条件转移、空操作。(5)布尔变量操作类(17条)

:位数据传送、与、或、转移。3.3指令系统

3.3.1数据传送类指令(赋值指令)

使用最频繁的一类指令,共29条,通用格式:

MOV<目的操作数>,<源操作数>属“复制”性质,而不是“搬家”数据传送类指令不影响标志位,Cy、Ac和OV,但不包括奇偶标志位P。片内数据传送指令;片外数据传送指令;程序存储器数据传送指令;数据交换指令;堆栈操作指令;1.以累加器A为目的操作数的指令

MOVA,direct;(direct)→A

MOVA,Rn;(Rn)→A,n=0~7 MOVA,@Ri;((Ri))→A,i=0,1 MOVA,#data;#data→A功能:是把源操作数的内容送入累加器A。一、片内数据传送指令指令助记符及功能说明如下:目的操作数源操作数功能说明源操作数寻址方式MOVA,direct;(A)←(direct)直接寻址MOVA,@Ri;(A)←((Ri))寄存器间接寻址MOVA,Rn;(A)←(Rn)寄存器寻址MOVA,#data;(A)←data立即寻址例1

若(50H)=10H,则执行指令MOVA,50H之后,(A)=10H。例2

若(R0)=20H,(20H)=39H,则执行指令MOVA,@R0后,(A)=39H。例3

若(R5)=55H,则执行指令MOVA,R5后,(A)=55H。2.以Rn为目的操作数的指令

MOVRn,A;(A)→Rn,n=0~7 MOVRn,direct;(direct)→Rn,n=0~7MOVRn,#dat;#data→Rn,n=0~7功能:是把源操作数的内容送入当前一组工作寄存器区的R0~R7中的某一个寄存器。例1

若(A)=20H,则执行指令MOVR3,A后,(R3)=20H。例2

若(30H)=01H,则执行指令MOVR7,30H后,(R7)=01H。指令助记符及功能说明如下:目的操作数源操作数功能说明源操作数寻址方式MOVRn,A;(Rn)←(A)寄存器寻址MOVRn,direct;(Rn)←(direct)直接寻址MOVRn,#data;(Rn)←data立即寻址3.以直接地址direct为目的操作数的指令

MOVdirect,A;(A)→directMOV direct,Rn;(Rn)→direct,n=0~7MOVdirect1,direct2; MOVdirect,@Ri;((Ri))→direct MOV direct,#data;#data→direct功能:把源操作数送入直接地址指出的存储单元。direct指的是内部RAM或SFR的地址。例1

若(30H)=20H,(R0)=30H,则执行指令MOV90H,@R0的结果为(90H)=20H。例2

若例1中的条件不变,而执行指令MOVP1,@R0,则(P1)=20H。指令助记符及功能说明如下:目的操作数源操作数功能说明源操作数寻址方式MOVdirectX,A;(directX)←(A)寄存器寻址MOVdirectX,Rn;(directX)←(Rn)寄存器寻址MOVdirectX,directY;(directX)←(directY)直接寻址MOVdirectX,@Ri;(directX)←((Ri))寄存器间接寻址MOVdirectX,#data;(directX)←data立即寻址若(30H)=20H,(R0)=30H,则执行指令MOV90H,@R0的结果为(90H)=20H。执行指令MOVP1,@R0,则(P1)=20H=00100000B

MCS-51P1.0P1.7000001005V0V0V4.以寄存器间接地址为目的操作数的指令

MOV@Ri,A;(A)→((Ri)),i=0,1MOV@Ri,direct;(direct)→((Ri))MOV@Ri,#data;#data→((Ri))例1若(R0)=50H,(50H)=20H,(A)=10H,则执行指令“MOV@R0,A”后,50H单元的内容由原来的20H变为10H。目的操作数源操作数功能说明源操作数寻址方式MOV@Ri,A;((Ri))←(A)寄存器寻址MOV@Ri,direct;((Ri))←(direct)直接寻址MOV@Ri,#data;((Ri))←data立即寻址

MOVA,#00H;00H→(A)MOVR0,#20H;20H→(R0)第一个单元MOVR7,#20H;20H→(R7)个数LP1:MOV@R0,A;先清R0INCR0;R0里数据自加1DJNZR7,LP1;先(R7)-1→R7,判断R7

是否为0,不为0则返回

例3-7P52

将20H开始的32个单元全部清05.16位数传送指令

MOVDPTR,#data16;#data16→DPTR唯一的16位数据的传送指令,立即数的高8位送入DPH,立即数的低8位送入DPL。目的操作数源操作数功能说明源操作数寻址方式MOVDPTR,#data16;(DPTR)←data16立即寻址这条指令的功能是:把16位立即数送入DPTR中。而16位的数据指针DPTR由DPH与DPL组成,该指令执行后,16位立即数的高8位送入DPH中,低8位送入DPL中。该指令的执行,不影响程序状态寄存器PSW。指累加器A与外部数据存储器传送指令

MOVXA,@DPTR;((DPTR))→A,读外部RAM/IOMOVXA,@Ri;((Ri))→A,读外部RAM/IOMOVX@DPTR,A;(A)→((DPTR)),写外部RAM/IOMOVX@Ri,A;(A)→((Ri)),写外部RAM/IO功能:读外部RAM存储器或I/O中的一个字节,或把A中一个字节的数据写到外部RAM存储器或I/O中。

注意:RD*或WR*信号有效。二、片外数据存储器传送指令外部数据存储器(或I/O口)与累加器A传送指令指令助记符与功能说明如下:目的操作数源操作数功能说明源操作数寻址方式MOVXA,@DPTR;(A)←((DPTR))寄存器间接寻址MOVXA,@Ri;(A)←((Ri))寄存器间接寻址MOVX@DPTR,A;((DPTR))←(A)寄存器寻址MOVX@Ri,A;((Ri))←(A)寄存器寻址注意:1)采用DPTR间接寻址,高8位地址(DPH)由P2口输出,低8位地址(DPL)由P0口输出。最多64K。2)采用Ri(i=0,1)间接寻址,可寻址片外256个单元的数据存储器。Ri内容由P0口输出。3)片外RAM存储器数据只能与A进行交换。例1将外部数据存储器7FF0H单元中的数据取出,存放到外部数据存储器2000H单元中去。MOVDPTR,#7FF0HMOVXA,@DPTRMOVDPTR,#2000HMOVX@DPTR,A自学例题3-9,3-10,3-11程序存储器向累加器A传送数据指令指令助记符与功能说明如下:目的操作数源操作数功能说明源操作数寻址方式MOVCA,@A+PC;(A)←((A)+(PC)+1)变址寻址MOVCA,@A+DPTR;(A)←((A)+(DPTR))变址寻址三、程序存储器数据传送指令用于读程序存储器中的数据表格的指令,均采用基址寄存器加变址寄存器间接寻址方式。

(1)MOVCA,@A+PC

以PC作基址寄存器,A的内容作为无符号整数和PC中的内容(下一条指令的起始地址)相加后得到一个16位的地址,该地址指出的程序存储单元的内容送到累加器A。注意:PSEN信号有效。例如:(A)=30H,执行地址1000H处的指令

1000H:MOVCA,@A+PC

本指令占用一个字节,执行结果将程序存储器中1031H的内容送入A。优点:不改变特殊功能寄存器及PC的状态,根据A的内容就可以取出表格中的常数。缺点:表格只能存放在该条查表指令后面的256个单元之内,表格的大小受到限制,且表格只能被一段程序所利用。

(2)MOVCA,@A+DPTR以DPTR作为基址寄存器,A的内容作为无符号数和DPTR的内容相加得到一个16位的地址,把由该地址指出的程序存储器单元的内容送到累加器A.例如(DPTR)=8100H(A)=40H执行指令

MOVCA,@A+DPTR

本指令的执行结果只和指针DPTR及累加器A的内容有关,与该指令存放的地址及常数表格存放的地址无关,因此表格的大小和位置可以在64K程序存储器中任意安排,一个表格可以为各个程序块公用。两条指令是在MOV的后面加C,“C”是CODE的第一个字母,即代码的意思。教材例3-12、3-13

1.字节交换指令例1设(R1)=30H,(30H)=45H,(A)=7FH,则执行指令:XCHA,@R1结果:(A)=45H,而(30H)=7FH,从而实现了累加器A与内部数据存储器RAM中30H单元的数据交换。指令助记符与功能说明如下:目的操作数源操作数功能说明源操作数寻址方式XCHA,direct(direct)直接寻址XCHA,@Ri((Ri))间接寻址XCHA,Rn(Rn)寄存器寻址四、数据交换指令2.半字节交换指令例1设(30H)=6FH,(R0)=30H,(A)=0F6H,则执行指令:XCHDA,@Ri结果:(A)=0FFH,(30H)=66H数据交换指令除了影响始终跟踪A中数据奇偶性的P标志外,对PSW中其他标志位均无影响。指令助记符与功能说明如下:目的操作数源操作数功能说明源操作数寻址方式XCHDA,@Ri(A)←((Ri))间接寻址3.累加器A中高四位与低四位交换指令SWAPA该指令所执行的操作是累加器A中的高4位与低4位的内容互换,其结果仍存放在累加器A中。例1

设(A)=0A5H(10100101B),则执行指令:SWAPA结果:(A)=5AH(01011010B)指令SWAP交换了A中高、低半字节(3~0和7~4),结果不影响标志寄存器PSW。MCS-51内部RAM中可以设定一个后进先出(LIFO-LastInFirstOut)的区域称作堆栈.堆栈指针SP指出堆栈的栈顶位置。堆栈操作指令只有2条,即:压入(PUSH)和弹出(POP)。压入指令:PUSHdirect ;SP←SP+1,((SP))←(direct)弹出指令:POPdirect ;((SP))←(direct),SP←SP-1五、堆栈操作指令形式1 PUSHA ;保护A中数据

PUSHPSW;保护标志寄存器中数据

… ;

温馨提示

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

评论

0/150

提交评论