单片机应用技术(汇编语言)课件:MCS-51单片机指令系统_第1页
单片机应用技术(汇编语言)课件:MCS-51单片机指令系统_第2页
单片机应用技术(汇编语言)课件:MCS-51单片机指令系统_第3页
单片机应用技术(汇编语言)课件:MCS-51单片机指令系统_第4页
单片机应用技术(汇编语言)课件:MCS-51单片机指令系统_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

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

文档简介

任务1数据传送类指令的应用任务2

算术运算类指令的应用任务3控制转移类指令和位操作类指令的应用任务4

逻辑运算类指令的应用任务1数据传送类指令的应用1.掌握MCS-51单片机的寻址方式。2.掌握数据传送类指令的功能及用法。将LED0~LED7八只发光二极管接在单片机的P1.0~P1.7,如图所示。编程实现如下功能,并在Protues软件中进行仿真。1.分别运用立即数寻址、直接寻址、寄存器寻址和寄存器间接寻址方式结合数据传送指令实现LED0、LED2、LED4、LED6亮,LED1、LED3、LED5、LED7灭。2.运用交换指令实现LED0、LED1、LED2、LED3亮,LED4、LED5、LED6、LED7灭。一、指令的格式一条指令通常由操作码和操作数两部分组成。操作码是用来规定指令所完成的操作的,而操作数则表示操作的对象。在51系列的指令中,有单字节、双字节和三字节等不同长度的指令。1.单字节指令指令只有一个字节,操作码和操作数在同一个字节中。在51系列的指令系统中,共有49条单字节指令。[例]INCA2.双字节指令双字节指令包括两个字节。其中一个字节为操作码,另一个字节为操作数。在51系列的指令系统中,共有45条双字节指令。[例]MOVA,#data3.三字节指令在三字节指令中,操作码占一个字节,操作数占两个字节,其中操作数既可能是数据,也可能是地址。在51系列的指令系统中,共有17条三字节指令。[例]CJNEA,#data,rel汇编语言指令基本格式见下表:标号:操作码助记符操作数1,操作数2,操作数3;注释LOOP:MOVA,30H---;A

(30)MAIN:INCA------;A

A+1DELAY:CJNEA,#30H,LOOP;比较指令二、常用符号与助记符◆Rn:工作寄存器中的寄存器Rn,R1…R7之一。◆Ri:工作寄存器中的寄存器R0或R1。◆#data:8位立即数。◆#data16:16位立即数。◆direct:片内RAM或SFR的地址(8位)。◆@Ri(i=0,1):间接寻址寄存器。◆Bit:片内RAM或SFR的位地址。1.常用符号◆addr11:11位目的地址。◆addr16:16位目的地址。◆rel:补码形式的8位地址偏移量,偏移范围为-128~127。◆/:位操作指令中,该位求反后参与操作,不影响该位。◆X:片内RAM的直接地址或寄存器。◆(X):相应地址单元中的内容。◆((X)):由X寻址的单元中的内容。◆

←:箭头右边的内容传送到箭头的左边。2.助记符助记符用于规定指令进行何种操作,共42种,一般由2~5个英文字母组成。常用助记符及其功能见下表:助记符常见格式功能MOVA,R0对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送MOVXA,@R0对外部RAM的数据进行传送MOVCA,@A+DPTR程序存储器内容与其他存储单元间数据进行传送XCHA,R0字节交换XCHDA,@R0低半字节交换助记符常见格式功能SWAPA低4位与高4位交换PUSHA入栈POPA出栈SETBC置1CLRC清0ANLA,R0逻辑与JNZLOOPA不为0则转移(续表)三、

MCS—51单片机的寻址方式1.立即寻址寻址方式是指某一个CPU指令系统中规定的寻找操作数所在地址的方式。立即寻址即直接在指令中给出操作数,一般把指令中的操作数称为立即数。为了与直接寻址相区别,在操作数前加“#”表示。[例]MOVA,#30H;

A

30HMOVDPTR,#40H;DPTR

40H[例]

MOVA,30H;A

(30H)

MOV40H,30H;(40H)

(30H)2.直接寻址直接寻址就是在指令中给出操作数的地址。3.寄存器寻址寄存器寻址就是将寄存器中的内容作为操作数,寄存器一般指累加器A或工作寄存器R0~R7。[例]

MOVA,Rn;A

(Rn)

MOVRn,A;Rn

(A)MOVB,A;B

(A)[例]

MOVA,

@Ri;A

((Ri))

4.寄存器间接寻址5.变址寻址[例]MOVCA,@A+DPTR;A

((A)+(DPTR))

MOVCA,@A+PC;A

((A)+(PC))寄存器间接寻址就是以寄存器中的内容作为地址,将该地址内的数作为操作数。变址寻址用于访问程序存储器中的数据表格,它以基址寄存器(DPTR或PC)的内容为基本地址,加上变址寄存器A的内容形成16位的地址,访问程序存储器中的数据表格。[例]

JNZ60H;A=0PC

PC+2

;A≠0PC

PC+60H

6.相对寻址相对寻址是以程序计数器PC的当前值作为基地址,与指令中给出的相对偏移量rel进行相加,把所得之和作为程序的转移地址。转移的范围为-128~+127,使用中应注意rel的范围不要超出。该指令中60H为偏移量,偏移量为一个8位有符号数,其取值范围在-128~+127之间,所以程序既可以向上转移,也可以向下转移。[例]

SETBTR0;TR0

1CLR00H;(00H)

0MOVC,bit;C

bitANLC,bit;C

C∧bit7.位寻址位寻址就是对位地址空间的每个位进行位状态传送、状态控制、逻辑运算操作。在51系列单片机中,与外部存储器RAM打交道的只能是A累加器。所有需要传送入外部RAM的数据必需通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。在此能看出内外部RAM的区别,内部RAM间能直接进行数据的传递,而外部则不行。除了目的操作数为ACC的指令影响奇偶标志P外,其他一般不影响标志位。四、数据传送类指令(共29条)1.以累加器A为目的操作数类指令数据传送类指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。MOVA,data;(A)

(data)MOVA,#data;(A)

#dataMOVA,Rn;(A)

(Rn)MOVA,@Ri;(A)

((Ri))功能:把源操作数的内容送到累加器A。寻址方式:直接、立即、寄存器和寄存器间接4种寻址方式。2.以寄存器Rn为目的操作数的指令MOVRn,data;(Rn)

(data)MOVRn,#data;(Rn)

#dataMOVRn,A;(Rn)

(A)功能:把源操作数指定的内容送到所选定的工作寄存器Rn中。寻址方式:直接、立即和寄存器3种寻址方式。3.以直接地址为目的操作数的指令功能:把源操作数指定的内容送到由直接地址data所选定的片内RAM中。寻址方式:直接、立即、寄存器和寄存器间接4种寻址方式。MOVdata,data;(data)

(data)MOVdata,#data;(data)

#dataMOVdata,A;(data)

(A)MOVdata,Rn;(data)

(Rn)MOVdata,@Ri;(data)

((Ri))4.以间接地址为目的操作数的指令功能:把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。

寻址方式:直接、立即和寄存器3种寻址方式。MOV@Ri,data;((Ri))

(data)MOV@Ri,#data;((Ri))

#dataMOV@Ri,A;((Ri))

(A)5.查表指令功能:对存放于程序存储器中的数据表格进行查找传送。寻址方式:使用变址寻址方式。MOVCA,@A+DPTR;(A)

((A)+(DPTR))MOVCA,@A+PC;(A)

((A)+(PC))6.累加器A与片外数据存储器RAM传送指令功能:

用于累加器A与片外RAM间的数据传送。寻址方式:使用寄存器寻址方式。MOVX@DPTR,A;((DPTR))

(A)MOVXA,@DPTR;(A)

((DPTR))MOVXA,@Ri;(A)

((Ri))MOVX@Ri,A;((Ri))

(A)7.堆栈操作类指令功能:把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。PUSHdata;SP

SP+1,((SP))

(data)POPdata;(data)

(SP)SP

(SP)-1这类指令只有两条,第一条称为入栈操作指令,第二条称为出栈操作指令。1.单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。2.进栈是堆栈指针首先加1,然后直接寻址单元中的数据再送到堆栈指针SP所指的单元中。而出栈是指针SP所指的单元数据先送到直接寻址单元中,然后堆栈指针SP再进行减1操作。8.交换指令功能:把累加器A中的内容与源操作数所指的数据相互交换。XCHD是把累加器A中的内容的低4位与源操作数所指的数据的低4位相互交换。SWAP将A中的值的高4位与低4位进行交换。XCHA,Rn;(A)←→(Rn)XCHA,@Ri;(A)←→((Ri))XCHA,data;(A)←→(data)XCHDA,@Ri;(A3-0)←→((Ri)3-0)SWAPA;(A3-0)←→(A7-4)9.十六位数据传送指令

功能:把16位常数送入数据指针寄存器,其中高8位送到DPH,低8位送到DPL。MOVDPTR,#data16;(DPH)

#dataH,;(DPL)

#dataL一、在Proteus中绘制仿真电路图二、数据传送类指令1.ASM1.编写程序2.编译程序并仿真三、数据传送类指令2.ASM1.编写程序单击此处返回目录2.编译程序并仿真任务2算术运算类指令的应用1.理解MCS-51单片机算术运算类指令的功能。2.掌握算术运算类指令的用法。3.通过编程计算梯形的面积,掌握算术运算类指令的应用。51系列单片机为单芯片微控制器(简称MCU),内部含有具有数据运算处理能力的CPU。而在一些单片机应用系统中,往往需要对外部复杂数据进行运算处理。本任务主要通过编程计算图示梯形的面积来学习对外部数据进行算数运算处理的方法(已知梯形的上底长为a,下底长为b,高是h)。算术运算类指令主要包括ADD、ADDC、SUBB、MUL、DIV、INC、DEC和DA等,如图所示。一、不带进位的加法指令ADDA,Rn;A

(A)+(Rn)ADDA,direct;A

(A)+(direct)ADDA,@Ri;A

(A)+((Ri))ADDA,#data;A

(A)+data

[例](A)=85H,R0=20H,(20H)=0AFH,执行指令:ADDA,@R0结果:(A)=34H;CY=1;AC=1;OV=1。二、带进位的加法指令ADDCA,Rn;A

(A)+(Rn)+(CY)ADDCA,direct;A

(A)+(direct)+(CY)ADDCA,@Ri;A

(A)+((Ri))+(CY)ADDCA,#data;A

(A)+data+(CY)

[例]

(A)=85H,(20H)=0FFH,CY=1,执行指令:ADDCA,20H结果:(A)=85H;CY=1;AC=1;OV=0。三、带借位的减法指令SUBBA,Rn;A

(A)-(Rn)-(CY)SUBBA,direct;A

(A)-(direct)-(CY)SUBBA,@Ri;A

(A)-(Ri)-(CY)SUBBA,#data;A

(A)-data-(CY)

[例](A)=4EH,R0=5DH,执行指令:

SUBBA,R0结果:(A)=F1H,CY=1(有借位),OV=0。四、乘法指令没有不带借位的减法指令,如果需要做不带借位的减法指令(在做第一次相减时),只要将CY清零即可。MULAB;B

高8位,A

低八位

[例1](A)=4EH,(B)=5DH,执行指令:MULAB结果:(B)=1CH,(A)=56H(即乘积为1C56H)CY=0,OV=0。

[例2](A)=50H,(B)=0A0H,执行指令:MULAB;结果:(B)=32H,(A)=00H(即乘积为3200H),CY=0,OV=1。五、除法指令DIVAB;A

商,B

余数CY位和OV位都是“0”,如果在做除法前B中的值是00H,那么OV=1。

[例](A)=3FH,(B)=0AH,执行指令:DIVAB;结果:(B)=03H,(A)=06H(即乘积为3200H),CY=0,OV=1。六、加1指令

[例]

(A)=12H,(R3)=0FH,(35H)=4AH,(R0)=56H,(56H)=00H,执行如下指令:INCA;执行后(A)=13HINCR3;执行后(R3)=10HINC35H;执行后(35H)=4BHINC@R0;执行后(56H)=01HINCA;A

(A)+1INCRn;Rn

(Rn)+1INCdirect;direct

(direct)+1INC@Ri;(Ri)

((Ri))+1INCDPTR;DPTR

(DPTR)+1七、减1指令

[例]

(A)=12H,(R3)=0FH,(35H)=4AH,(R0)=56H,(56H)=00H,执行如下指令:DECA;执行后(A)=11HDECR3;执行后(R3)=0EHDEC35H;执行后(35H)=3FHDEC@R0;执行后(56H)=0FFHDECA;A

(A)-1DECRn;Rn

(Rn)-1DECdirect;direct

(direct)-1DEC@Ri;(Ri)

((Ri))-1要实现梯形面积的运算,主要分为三步:计算a+b;计算(a+b)×h;计算(a+b)×h÷2。在汇编语言中,除法运算是取余,因此此计算梯形的方法仅适用于上底加下底结果为偶数的梯形。此外,为了使梯形的面积值便于观察,程序中分别定义梯形的上底长a、下底长b、高h的数值都比较小,这样(a+b)×

h的数值不会超过0FFH。根据上面的分析,先分配上底、下底、高的具体数据存储单元,见下表。数据名称数据存放地址数据名称数据存放地址上底30H高32H下底31H面积33H1.将编写完的程序输入WAVE软件并编译。梯形面积.ASM2.修改上底、下底、高的数据。单击此处返回目录3.运行并调试。任务3控制转移类指令和位操作类指令的应用1.掌握控制转移类和位操作类指令的功能与使用技巧。2.掌握用冒泡法对无符号数进行排序的编程方法。编写一段程序,对内存为50H~59H十个单元中存放的数据进行从小到大排序,从而掌握使用控制转移类指令和位操作类指令进行编程的方法。一、控制转移类指令控制转移指令共有17条,包括64K范围的长调用、长转移指令;2KB范围的绝对调用和绝对转移指令;全空间的长相对转移和一页范围内的短相对转移指令以及多种条件转移指令。但不包括按布尔变量控制程序转移指令。控制转移类指令用到的助记符共有10种:AJMP、LJMP、SJMP、JMP、ACALL、LCALL、JZ、JNZ、CJNE、DJNZ。1.无条件转移指令AJMPaddr11;PC=PC+2,

PC10~0

addr11[例]

程序存储器的2070H地址单元有绝对转移指令:2070HAJMP16AH(000101101010B)则程序计数器PC当前=PC+2=2070H+02H=2072H(0010000001110010),取其高5位00100和指令机器代码给出的11位地址00101101010最后形成的目的地址为:0010000101101010B=216AH。(1)绝对转移指令(2)相对转移指令SJMPrel;PC=PC+2,PC

PC+rel源地址是SJMP指令操作码所在的地址。相对偏移量rel是一个用补码表示的8位带符号数,转移范围为当前PC值的-128~+127,共256个单元。MCS-51没有专用的停机指令,若要求动态停机可用SJMP指令来实现:HERE:SJMPHERE;动态停机(80H,FEH)或SJMP$;“$”表示本指令首字节所在单元;

的地址,使用它可省略标号。(3)长跳转指令LJMPaddr16;PC

addr16转移指令的目标地址可在64KB程序存储器地址空间的任何地方,不影响任何标志。(4)间接转移指令(散转指令)JMP@A+DPTR;PC

A+DPTR间接转移指令采用变址方式实现无条件转移,其特点是转移地址可以在程序运行中加以改变。2.条件转移指令JZrel;若(A)=0,则转移PC←(PC)+2+relJNZrel;若(A)≠0,则转移PC←(PC)+2+rel这类指令是依据累加器A的内容是否为0的条件转移指令。条件满足时转移(相当于一条相对转移指令),条件不满足时则顺序执行下面一条指令。转移的目标地址在以下一条指令的起始地址为中心的256个字节范围之内(-128~+127)。3.比较转移指令CJNEA,direct,rel;若(A)

(direct),则转移;PC←(PC)+3+relCJNEA,#data,rel;若(A)

data,则转移;PC←(PC)+3+relCJNERn,#data,rel;若(Rn)

data,则转移;PC←(PC)+3+relCJNE@Ri,#data,rel;若((Ri))

data,则转移;PC←(PC)+3+rel这组指令是比较前面两个操作数的大小,如果它们的值不相等则转移。如果第一个操作数(无符号整数)小于第二个操作数,则进位标志CY置“1”,否则清“0”,但不影响任何操作数的内容。4.减1不为0转移指令DJNZRn,rel;若Rn

(Rn)-1

0,则转移;PC←(PC)+2+relDJNZdirect,rel;若direct

(direct)-1

0,则转移;PC←(PC)+2+rel这两条指令把源操作数减1,结果回送到源操作数中去,如果结果不为0则转移。5.调用及返回指令(1)绝对调用指令ACALLaddr11;PC

PC+2;SP

(SP)+1,(SP)

(PC)7~0;SP

(SP)+1,(SP)

(PC)15~8;PC10~0

addr11执行该指令时,所调用的子程序的首地址必须与ACALL指令后面的第一个字母在同一个2KB区域内,指令执行后不影响任何标志。(2)长调用指令LCALLaddr16;PC

PC+3;SP

(SP)+1,(SP)

(PC)7~0;SP

(SP)+1,(SP)

(PC)15~8;PC10~0

addr16LCALL指令无条件调用位于16位地址addr16的子程序。LCALL指令可以调用64KB范围内任何地方的子程序。指令执行后不影响任何标志。(3)子程序返回指令RET;(PC)15~8

(SP),SP

(SP)-1

;(PC)7~0

(SP),SP

(SP)-1RET指令是把栈顶相邻两个单元的内容弹出送到PC,SP的内容减2,程序返回PC值所指的指令处执行。RET指令通常安排在子程序的末尾,使程序能从子程序返回到主程序。(4)中断返回指令(5)空操作指令RETI;(PC)15~8

(SP),SP

(SP)-1

;(PC)7~0

(SP),SP

(SP)-1NOP;PC

PC+1空操作也是CPU控制指令,它没有使程序转移的功能。只消耗一个机器周期的时间。常用于程序的等待或时间的延迟。RETI指令通常安排在中断服务程序的最后。二、位操作指令位操作指令的操作对象是内部RAM的位寻址区,即字节地址为20H~2FH单元中连续的128位(位地址为00H~7FH),以及特殊功能寄存器中可以进行位寻址的各位。位操作指令包括控制转移、布尔变量的传送、逻辑运算等指令,所用到的助记符有MOV、CLR、CPL、SETB、ANL、ORL、JC、JNC、JB、JNB、JBC共11种。在布尔处理机中,进位标志CY的作用相当于CPU中的累加器A,通过CY完成位的传送和逻辑运算。指令中位地址的表达方式有以下几种(以允许中断控制寄存器IE中的位0为例):◆直接地址方式:如0A8H。◆点操作符方式:如IE.0。◆位名称方式:如EX0。◆用户定义名方式:如用伪指令BIT定义,WBZD0BITEX0

。定义后,允许指令中使用WBZD0代替EX0

1.位数据传送指令MOVC,bit;CY

(bit)

MOVbit,C;bit

(CY)位数据传送指令的功能是:把源操作数指出的布尔变量送到目的操作数指定的位地址单元,其中一个操作数必须为进位标志CY,另一个操作数可以是任何可直接寻址位。2.位变量修改指令CLRC;CY

0CLRbit;bit

0CPLC;CY

(CY)CPLbit;bit

(bit)SETBC;CY

1SETBbit;bit

1这组指令对操作数所指出的位进行清“0”、取反、置“1”的操作,不影响其他标志。3.位变量逻辑与指令ANLC,bit;CY

(CY)

(bit)ANLC,/bit;CY

(CY)

(/bit)4.位变量逻辑或指令ORLC,bit;CY

(CY)

(bit)ORLC,/bit;CY

(CY)

(/bit)5.位变量条件转移指令JCrel;若(CY)=1,则转移PC←(PC)+2+relJNCrel;若(CY)=0,则转移PC←(PC)+2+relJBbit,rel;若(bit)=1,则转移PC←(PC)+3+relJNBbit,rel;若(bit)=0,则转移PC←(PC)+3+relJBCbit,rel;若(bit)=1,则转移PC←(PC)+3+rel,bit←0前4条指令在执行中不改变条件位的布尔值,最后一条指令,在转移时将bit清“0”。实现数据从小到大的排序在单片机编程中典型的算法是冒泡法。其基本思路是从数组的第1个数开始,相邻两单元的数相比较,即第1个数和第2个数相比较。如果第2个单元的数大,则两者交换,否则不动;再进行第2单元数和第3单元数比较。这样依次比较下去,重复上述过程N-1次后,才能将N个数中最大的值沉降到数据区的最后一个单元中;然后又从头开始第二轮的比较,经过N-2次的比较后,才能把第2个最大值沉降到数据区的倒数第2个单元。循环N-1轮后,N个数据便会由小到大排列在原数据区中。设R7存放外循环计数值,R6存放内循环计数值,A存放被比较数,R0存放被比较数地址,R1存放比较数地址。则程序流程图如右图所示。1.程序设计2.将编写完的程序输入WAVE软件并编译。冒泡法.ASM3.将内存单元50H~59H内不按顺序任意赋值。4.单步运行并观察内存单元50H~59H中数值的变化。交换几组不同的赋值再运行。单击此处返回目录5.设置断点在“CJNEA,30H,NEXT”处后全速运行。每次在断点停下时,仔细分析数据变化的规律,然后单步运行,分析CJNE指令的跳转规律(注意观察A,30H和CY位的值及跳转方向)。然后继续运行,直至程序结束。任务4逻辑运算类指令的应用1.理解MCS-51单片机逻辑运算类指令的功能。2.掌握逻辑运算类指令的用法。除算术运算外,单片机还具有强大的逻辑运算能力。在数字电路中学过的“与门”“或门”“非门”等逻辑同样可以用单片机来实现。本任务就来利用单片机的逻辑运算指令实现下图所示的逻辑功能。逻辑运算指令是指用于逻辑运算的指令。主要包括:CLR、CPL、ANL、ORL、XRL等常用逻辑指令以及RL、RLC、RR、RRC等循环移位指令。一、对累加器A的逻辑运算指令1.清零指令CLRA;A←0清零指令的效果同MOVA,#00H是一样的,只不过它是单周期指令,而MOVA,#00H是双周期指令。2.取反指令CPLA;A←取反指令是将累加器A逐位取反。相当于数字电路的“非”逻辑。[例]A=12H,执行指令CPLA;解:把12H化为二进制是00010010,逻辑取反后为11101101,即执行指令后结果为A=EDH。3.循环移位指令RLA;A←(A)循环左移RRA;A←(A)循环右移RLCA;A←(A)+C循环左移RRCA;A←(A)+C循环右移RL、RR指令执行后不影响PSW中各位。RLC、RRC指令执行后影响PSW中的进位位CY和奇偶标志位P。循环移位指令的执行示意图:[例]将30H单元中存放的数据除2。解:CPLCMOVA,30H

温馨提示

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

评论

0/150

提交评论