《单片机原理、应用与Proteus仿真》课件-第2章 指令系统与汇编语言_第1页
《单片机原理、应用与Proteus仿真》课件-第2章 指令系统与汇编语言_第2页
《单片机原理、应用与Proteus仿真》课件-第2章 指令系统与汇编语言_第3页
《单片机原理、应用与Proteus仿真》课件-第2章 指令系统与汇编语言_第4页
《单片机原理、应用与Proteus仿真》课件-第2章 指令系统与汇编语言_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

2.1概述指令是CPU控制计算机进行某种操作的命令,指令系统则是全部指令的集合。机器指令

又称机器码,由二进制代码0和1表示,能够被计算机直接识别和执行的指令。助记符指令

由助记符表示的机器指令,不能够被计算机直接识别和执行的指令。汇编语言用助记符书写的指令系统称为汇编语言,汇编语言源程序用汇编语言编写的程序称为汇编语言源程序;目标程序用机器语言编写的程序称为目标程序。汇编汇编语言源程序翻译成目标程序的过程。1、指令格式[标号:]

操作码

[目的操作数,]

[源操作数]

[;注释]STAR:

MOV

A,

#01H

;(A)←01H

操作码表明指令的操作类型,任何一条指令都必须包含操作码,其他部分可有可无,看具体指令需要。标号和注释都不产生机器码;操作数用于表明操作数据的大小或者存储位置。指令字符的大写和小写效果相同2.2寻址方式(共7种)

寻址方式是在指令中寻找操作数的方法。寻址方式越丰富,灵活性就越大,能实现的功能也越强。1、立即寻址

立即寻址是直接在指令中给出操作数真实大小的寻址方式。如:MOVA,#05AH;把8位立即数5AH送入A中。

※特别说明(1)立即数有8位和16位两种;

(2)可以采用二进制、十进制和十六进制三种形式;(3)立即数前面必须带“#”;(4)十六进制数以A~F字符打头的数前面要加0。(5)存储位置位于程序存储器ROM中2、寄存器寻址寄存器寻址是指操作数存放在寄存器中,通过给出寄存器名的形式来访问操作数的寻址方式。如:MOVA,R0;将寄存器R0中的内容传送到A中。寄存器包括:

通用寄存器:R0~R7;部分特殊功能寄存器,如A、B以及DPTR。3、直接寻址直接寻址是直接给出操作数在存储器中存放地址的寻址方式。如:MOVA,50H

;将片内RAM50H单元中的内容送A中

操作数形式:直接给出地址的形式;如:30H。采用特殊功能寄存器名称的形式;如PSW。注意和立即数的区别,特殊功能寄存器本质为直接寻址。4、寄存器间接寻址寄存器间接寻址是通过寄存器给出操作数在存储单元中的存储地址的寻址方式。

如:MOVA,@R0

;将R0中的内容为地址的片内RAM存储单元中的内容送入A中。注意和直接寻址方式的区别,寄存器中存放的不是操作数本身,而是操作数在内部RAM中存放的地址。

形式只支持:@Ri(i=0,1)和@DPTR两种形式5、基址加变址寻址以DPTR或PC的内容作为基址,以累加器A的内容作为偏移量,将两者相加得到的16位地址作为操作数地址的寻址方式。

如:MOVCA,@A+PC;将A中和PC中的内容相加后的数作为地址注意和间接寻址区别在于地址由两个寄存器提供。只有两种形式:@A+PC和@A+DPTR6、相对寻址相对寻址主要用于转移指令,一般在转移指令中直接给出要转向的目标地址。如:SJMP LOOP

;程序跳至标号为LOOP处执行操作数形式:标号的形式和直接给出地址的形式7、位寻址位寻址是在指令中直接给出位操作数的寻址方式,位寻址只能出现在位操作指令中,位地址可用通用符号“bit”表示。如:MOVC,2EH;将位地址2EH中的内容送入位累加器C中。寻址范围:片内RAM20H~2FH的位寻址空间;地址能被8整除的特殊功能寄存器,共11个。2.3指令分类介绍

MCS-51单片机指令系统共有指令111条,可分别按照指令字节数、指令执行时间和指令功能进行分类。1、数据传送指令功能:进行数据传送,数据传送类指令一般不影响状态标志位。(1)片内RAM传送指令

MOV

通用格式:MOV

目的操作数,源操作数操作数说明:目的操作数可为:A,Rn,Direct,@Ri;源操作数可为:A,Rn,Direct,@Ri,#data;

两个操作数的长度一致,如同为8位或16位;立即数不能作为目的操作数;两个操作数不能同时为通用寄存器Rn;若目的操作数不为A时,指令不影响标志位。如:

MOV A,R1 ;(R1)=40H

MOV R1,30H ;(30H)=R1 MOV 50H,#56H ;(50H)=56H

MOV @R0,30H ;(40H)=12H

MOV DPTR, #1234H ;(DPTR)=1234H

MOV DPH,#12H ;(DPH)=12H MOV DPL,#34H ;(DPL)=34H(2)片外RAM传送指令MOVX

片外RAM或者I/O接口与累计器A之间的数据传送例如:将外部RAM1000H单元中的内容送入外部RAM2000H单元,已知(1000H)=12H,(2000H)=34H。

MOV DPTR, #1000H ;DPTR←#1000H MOVX A,@DPTR ;A←((DPTR))

MOV DPTR, #2000H ;DPTR←#2000H MOVX @DPTR,A ;(DPTR)←(A)(3)ROM数据传送指令MOVC

用于访问程序存储器中数据(常数),如数据表格等,通常也称查表指令。只存在如下2条指令:

MOVC A,@A+PC ;PC←(PC)+1,A←(A+PC)

MOVC A,@A+DPTR

;A←(A+DPTR)(4)数据交换指令全字节交换指令XCHA,@Ri/direct/Rn

半字节交换指令XCHDA,@Ri

高低四位互换指令SWAPA注意事项:目的操作数只能为A;

XCHD和SWAP只有一种指令格式;

XCHD只交换低4位数据,高位不交换。例:已知(A)=20H,(R1)=30H,(20H)=12H,(30H)=54H,依次执行下列指令后,分析程序执行结果。

XCH A,R1 ;(A)=30H,(R1)=20H XCH A,30H ;(A)=54H,(30H)=30H XCH A,@R1 ;(A)=12H,(20H)=54H XCHD A,@R1 ;(A)=14H,(20H)=52H SWAP A ;(A)=41H

指令执行结果:(A)=41H,(R1)=20H,(20H)=52H,(30H)=30H。(5)堆栈操作类指令堆栈的概念:

内部RAM中一段连续的存储区域,一般为内部RAM的30H~7FH范围内。用于保存重要数据,遵循“先进后出”或“后进先出”的操作原则。通过堆栈指针SP作为指针来指向数据。两类指令:进栈(入栈)指令和出栈(弹栈)指令进栈指令PUSH

进栈时:先将堆栈指针SP的内容加1(指针上移一个单元),然后将直接寻址单元的内容送到SP指针所指的堆栈单元中(栈顶)。出栈指令POP

出栈时:先将堆栈指针SP所指的单元(栈顶)内容弹出,并送入direct单元中,然后SP的内容减1(指针下移一个单元)。例:设(SP)=40H,(DPTR)=0123H,分析指令执行结果。

PUSH DPL PUSH DPH 23H01H3EH3FH40H41H42H43HSP23H01H低8位进入低地址高8位进入高地址弹栈操作时,过程正好相反,注意SP变化情况2、算术运算指令包含加、减、乘、除运算,指令一般会影响状态标志位,且目的操作数只能为累加器A。(1)加法指令

不带进位加法

ADDA,Rn/direct/@Ri/#data

带进位的加法ADDCA,Rn/direct/@Ri/#data

(2)减法指令

SUBBA,Rn/direct/@Ri/#data

(3)乘法指令

MULAB(4)除法指令

DIVAB例题:设(A)=0C2H,(R0)=0BBH,执行指令:ADDA,R0,分析执行结果及对标志位的影响,

执行结果:(A)=7DH,Cy=1,Ac=0,OV=1,P=0。例题:设(A)=6CH,(R2)=40H,Cy=0,执行指令:SUBBA,R2,分析执行结果及对标志位的影响,

执行结果:(A)=2CH,Cy=0,Ac=0,OV=0,P=1例题:设(A)=64H,(B)=3CH,执行指令:MUL AB指令执行结果:(A)×(B)=1770H,(A)=70H,(B)=17H,

例题:设(A)=0F0H,(B)=20H,执行指令:DIV AB执行结果:(A)=07H(商),(B)=10H(余数)(5)自加1指令功能:操作数内容加1后进行保存

指令格式:

INCA/Rn/direct/@Ri/DPTR

(6)自减1指令功能:操作数内容减1后进行保存

指令格式:

DECA/Rn/direct/@Ri

类似C语言中的i++或者i--(7)十进制调整指令DAA例题:两个组合BCD码(A)=35H,(R3)=59H,执行指令:ADDA,R3 DA指令的作用在于根据计算结果自动进行调整。00110101+01011001

10001110+00000110

100101003、逻辑操作指令(1)逻辑与ANL(2)逻辑或ORL(3)逻辑异或XRLA, RnA, directA, @RiA, #datadirect, Adirect, #data例题:分析下列程序的执行结果。MOV A, #77H ;(A)=77HXRL A, #0FFH ;(A)=77H⊕0FFH=88HANL A, #0FH ;(A)=88H∧0FH=08HMOV P1, #64H ;(P1)=64HANL P1, #0F0H ;(P1)=64H∧0F0H=60HORL A, P1 ;(A)=08H∨60H=68H指令执行结果:(A)=68H,(P1)=60H。(4)累加器A的逻辑操作指令

累加器A清“0”CLRA

累加器A取反CPLA

累加器A移位

RLA

RRARLCARRCA例题:设(A)=11H,Cy=1,依次执行指令:

RL A

;(A)=22H,Cy=1

RLC A

;(A)=45H,Cy=0

RR A

;(A)=A2H,Cy=0

RRC A

;(A)=51H,Cy=0指令执行结果:(A)=51H,Cy=0。4、控制转移指令(1)无条件转移指令

长转移指令LJMP

--可实现在整个程序存储器中的64KB范围内转移

绝对转移指令AJMP

--可实现在程序存储器中的2KB范围内转移

相对转移指令SJMP--向上跳128个字节或向下跳127个字节,255B内转移间接转移指令JMP--只有JMP@A+DPTR形式,也成为散转指令说明:无条件转移指令后面的操作数通常采用两种形式表示:

一是:标号地址的形式(如:LOOP);二是:绝对地址的形式(如:0030H);通常建议采用第一种(标号形式),防止程序修改后,需要重新确定目标地址。(2)条件转移指令

比较不等转移指令

CJNEA,direct,relCJNEA,#data,rel

CJNERn,#data,relCJNE@Ri,#data,rel

减1不为0转移指令

DJNZRn,rel

DJNZdirect,rel

累加器A的判零转移指令

JZrelJNZrel

例题:编程实现片内RAM的30H~34H单元置初值00H~04H。

MOV R0, #30H ;设定地址指针

MOVR2, #05H ;数据区长度设定

MOV A, #00H ;装初值LOOP: MOV @R0, A ;送数

INC R0 ;修改地址指针

INC A ;修改待传送的数据

DJNZR2, LOOP ;送完转LOOP,否则传送结束HERE: SJMP HERE ;踏步(3)调用子程序及返回指令长调用指令LCALL

绝对调用指令ACALL

子程序返回指令RET

中断返回指令RETI

调用指令后面的操作数只能为标号,表示转向目标地址执行程序,执行完后还需要回到原点执行程序。

涉及断点保护的问题,返回指令实现回到断点。空操作指令NOP

该指令执行时CPU不进行任何操作,只消耗一个机器周期的时间

例题:

假设堆栈指针SP=42H,并且(42H)=10H,(41H)=23H,执行RETI指令后PC值为多少?

执行RETI指令后,PC=1023H5、位操作指令

位传送指令

MOV C,bitMOV bit,C

位置“1”、清“0”指令、取反指令

SETB C/bit CLR C/bitCPL C/bit位逻辑运算指令ANL C,bitANL C,/bitORL C,bitORL C,/bit

位条件转移指令JC/JNCrelJB/JNBbit,rel

JBC bit, rel

例题:片内RAM的30H单元中存有一个带符号数,试判断该数的正负性,若为正数将6EH位清0;若为负数将6EH位置1。

MOVA,30H ;30H单元中的数送入A JB AcC.7,LOOP ;为1是负数转移

CLR6EH ;为0是正数清标志位

RETLOOP:SETB6EH ;标志位置1 RET2.5常用伪指令

伪指令并不生成目标代码,仅仅在汇编过程中起作用,故又称为汇编命令或汇编程序控制命令。1、设定起始地址ORG

用ORG伪指令规定程序段或数据段存储的起始地址。如:0RG0030H2、汇编结束END3、赋值EQU

EQU也可以用“=”来表示

如:TAB1 EQU 1000H4、定义位地址BIT

flag BIT07H

5、定义字节DB

DDS

温馨提示

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

评论

0/150

提交评论