单片机-江汉大学教案.ppt
《单片机-江汉大学教案.ppt》由会员分享,可在线阅读,更多相关《单片机-江汉大学教案.ppt(152页珍藏版)》请在三一办公上搜索。
1、2 MCS-51指令系统及汇编语言程序设计,指令格式寻址方式指令系统程序设计,概述,由构成计算机的电子器件的特性所决定,计算机只能识别二进制代码。这种以二进制代码来描述指令功能的语言,称之为机器语言,用机器语言组成的程序,称为目标程序。计算机就是按照机器语言的指令来完成各种功能操作的,它具有程序简捷、占用存储空间小、执行速度快、控制功能强等特点。一个单片机所需执行指令的集合即为单片机的指令系统。,使用易于阅读和辨认的指令符号来代替机器码,称为助记符,用助记符的形式表示的单片机指令就是汇编语言,为便于记忆和阅读,助记符号通常都使用易于理解的英文单词和拼音字母来表示。单片机使用的机器语言、汇编语言
2、及高级语言,但不管使用是何种语言,最终还是要“翻译”成为机器码,单片机才能执行之。每种单片机都有自己独特的指令系统,那么指令系统是开发和生产厂商定义的,如要使用其单片机,用户就必须理解和遵循这些指令标准,要掌握某种(类)单片机,指令系统的学习是必须的。,MCS-51单片机汇编语言指令的格式,标号:操作码 目的操作数,源操作数;注释例如:LOOP:ADD A,10H;(A)(A)+10H(1)方括号 表示该项是可选项,可有可无。(2)标号是用户设定的符号,它实际代表该指令所在的地址。标号必须以字母开头,其后跟18个字母或数字,并以“:”结尾。(3)操作码是用英文缩写的指令功能助记符。它确定了本条
3、指令完成的操作功能。任何一条指令都必须有该助记符项,不得省略。(4)目的操作数提供操作的对象,并指出一个目标地址,表示操作结果存放单元的地址,它与操作码之间必须以一个或几个空格分隔。(5)源操作数指出的是一个源地址(或立即数),表示操作的对象或操作数来自何处。它与目的操作数之间要用“,”号隔开。(6)注释部分是在编写程序时,为了增加程序的可读性,用户写的对该条指令或该段程序功能的说明。它以分号“;”开头,可以用中文、英文或某些符号来表示,它不存入单片机,只出现在源程序中。,无标号:MOV A,B无目的操作数:PUSH A无源操作数:CLR A既无目的操作数也无源操作数:RET,标号的作用:如软
4、件延时程序:MOV R1,0AH;给R1赋循环初值DELAY:DJNZ R1,DELAY;(R1)(R1)-1,若(R1)0则循环,一些特殊符号的意义,在介绍指令系统前,先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。Rn当前选中的寄存器区的8个工作寄存器R0R7(n=07)。Ri(i=0,1)当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1direct内部数据存储单元的8位地址。包含0127(255)内部存储单元地址和特殊功能寄存地址。#data指令中的8位常数。#data16指令中的16位常数。addr16用于LCALL和LJMP指令中的16位目的地址,目的地址的空间
5、为64KB程序存储器地址。addr11用于ACALL和AJMP指令中的11位目的地址,目的地址必须放在与下条指令第一个字节同一个2KB程序存储器空间之中。rel8位带符号的偏移字节,用于所有的条件转移和SJMP等指令中,偏移字节对于下条指令的第一个字节开始的-128+127范围内。,间接寄存器寻址或基址寄存器的前缀。/为操作的前缀,声明对该位操作数取反。DPTR 数据指针。bit 内部RAM和特殊功能寄存器的直接寻址位。A 累加器。B 寄存器B。用于乘法和除法指令中。C 进位标志位。(x)某地址单元中的内容。(x)由X寻址单元中的内容。,微型计算机的基本工作原理,微型计算机解题过程举例:计算a
6、+b-c=?,计算a+b-c=?,微型计算机的工作过程,微型计算机的工作过程就是执行程序的过程,而程序由指令序列组成,因此,执行程序的过程,就是执行指令序列的过程,即逐条地从存储器中取出指令并完成指令所指定的操作。由于执行每一条指令,都包括取指、译码和执行三个基本步骤,所以,微型计算机的工作过程,也就是不断地取指令、译码和执行的过程,直到遇到停机指令时才结束机器的运行。,微型计算机工作流程,1.取指令2.取源操作数 3.取目的操作数 4.执行指令,汇编语言程序 对应的机器指令 对应的操作MOV A,#1 10110000 将立即数1传送到寄存器A中 00000001ADD A,#2 00000
7、100 计算两个数的和,结果存放到A中 00000010MOV 08H,A 10100010将A中的数传送到地址单元08H 00001000 00000000HLT 11110100 停机,举例:计算1+2=?,MCS-51的寻址方式,寻址的“地址”即为操作数所在单元的地址,绝大部分指令执行时都需要用到操作数,那么到哪里去取得操作数呢?最易想到的就是告诉CPU操作数所在的地址单元,从那里可取得相应的操作数,这便是“寻址”之意。MCS-51的寻址方式有7种寻址方式:1.立即寻址2.直接寻址3.寄存器寻址4.寄存器间接寻址5.基址寄存器加变址寄存器间接寻址6.相对寻址7.位寻址,1.立即寻址,立即
8、寻址就是把操作数直接在指令中给出,即操作数包含在指令中,指令操作码的后面紧跟着操作数,一般把指令中的操作数称为立即数,因此而得名。立即数可以是8位或16位,用十六进制数表示。为了与直接寻址方式相区别,在立即数前加上“#”符号例如:MOVA,#0EH;(A)0EH这条指令的意义是将0EH这个操作数送到累加器A中。,2.直接寻址,指令中直接给出操作数所在的存储器地址,以供寻址取数或存数的寻址方式称为直接寻址。例如:MOVA,68H;(A)(68H)这条指令的意义是把内部RAM中的68H单元中的数据内容传送到累加器A中。值得注意的是直接寻址方式只能使用8位二进制地址,因此这种寻址方式仅限于内部RAM
9、进行寻址。低128位单元在指令中直接以单元地址的形式给出。对于特殊功能寄存器SFR只能用直接寻址方式访问,而无其它方法。,3.寄存器寻址,寄存器寻址对选定的8个工作寄存器R0R7以及A、B和DPTR进行操作,也就是操作数在寄存器中,因此指定了寄存器就得到了操作数,寄存器寻址的指令中以寄存器的符号来表示寄存器。例如:MOVA,R0;(A)(R0)这条指令的意义是把所用的工作寄存器组中的R0的内容送到累加器A中。值得一提的是工作状态寄存器的选择是通过程序状态寄存器来控制的,在这条指令前,应通过PSW设定当前工作寄存器组。,4.寄存器间接寻址,寄存器中存放的是操作数的地址,也即操作数是通过寄存器指向
10、的地址单元得到的,这便是寄存器间接寻址名称的由来。例如指令:MOVA,R0;(A)(R0)这条指令的意义是R0寄存器指向地址单元中的内容送到累加器A中。假如R0=#56H,那么是将56H单元中的数据送到累加器A中。这里要强调的是:寄存器的内容不是操作数本身,而是操作数的地址。寄存器间接寻址使用所选定寄存器区中的R0和R1作为地址指针,来寻址片内数据存储器RAM(00FFH)的256个单元,但它不能访问特殊功能寄存器SFR。寄存器间接寻址也适用于访问外部数据存储器,此时,用R0、R1或DPTR作为地址指针。寄存器间接寻址用符号“”指明。,例如:MOV R1,#80H;(R1)80H MOV A,
11、R1;(A)(80H),5.基址加变址寄存器间接寻址,基址加变址寄存器间接寻址是以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器,将两寄存器的内容相加形成操作数的16位的实际地址。例如:MOVA,A+DPTR MOVXA,A+PC JMPA+DPTR在这三条指令中,A作为偏移量寄存器,DPTR或PC作为变址寄存器,A作为无符号数与DPTR或PC的内容相加,得到访问的实际地址。其中前两条是程序存储器读指令,后一条是无条件转移指令。,6.相对寻址,相对寻址是以当前程序计数器PC值加上指令规定的偏移量rel,而构成实际操作数地址的寻址方法。它用于访问程序存储器,常出现在相对转移指令中。转移的
12、目的地址可参见如下表达式:目的地址=转移指令地址+转移指令字节数+偏移量rel值得注意的是,偏移量是有正负号之分的,偏移量的取值范围是当前PC值的-128+127之间。,若PC=2050H,JZ为双字节指令,则:JZ 08H程序转移的目标地址为:PC+2+rel=2050H+2+08H补=205AHJZ F4H程序转移的目标地址为:PC+2+rel=2050H+2+F4H补=2046H,7.位寻址,在MCS-51单片机中,RAM中的20H2FH字节单元对应的位地址为00H7FH,特殊功能寄存器中的某些位也可进行为寻址,这些单元既可以采用字节方式访问它们,也可采用位寻址的方式访问它们。例如:SE
13、TB PSW.3;(PSW.3)1,综上所述,在MCS-51系列单片机的存储空间中,指令究竟对哪个存储器空间进行操作是由指令操作码和寻址方式确定的。7种寻址方式如表所示。,MCS-51的指令系统,MCS-51共有111条指令,可分为5类:1.数据传送类指令2.算数运算类指令3.逻辑运算及移位类指令4.控制转移类指令5.布尔变量操作类指令,1.数据传送指令,在MCS-51单片机的数据传送指令总共有28条,分为:内部数据传送指令外部数据传送指令程序存储器向累加器A传送数据指令数据交换指令堆栈操作指令,内部数据传送指令,这类指令的源操作数和目的操作数地址都在单片机的内部,可以是片内RAM的地址,也可
14、以是特殊功能寄存器SFR的地址。其指令通式为:MOV,其中,为源操作数,为目的操作数。该指令的功能是把源操作数送到目的操作数单元,源操作数单元中的源操作数不变。按照寻址方式,内部数据传送指令又可以分为立即寻址型、直接寻址型、寄存器寻址型和寄存器间接寻址型等四类。,立即寻址型传送指令,这类指令的特点是源操作数字节是立即数总共有5条指令:MOV A,#data;(A)data MOV Rn,#data;(Rn)data MOV Ri,#data;(Ri)data MOV direct,#data;(direct)data MOV DPTR,#data16;(DPTR)data16这组指令表明,8位
15、立即数可以直接传送到内部数据区RAM的各个位置,并且可把16位立即数直接装入数据指针DPTR。,直接寻址型传送指令,直接传送型指令的特点是指令码中至少含有一个源操作数和目的操作数的直接地址。这类指令共有如下5条:MOV A,direct;A(direct)MOV Rn,direct;Rn(direct)MOV Ri,direct;(Ri)(direct)MOV direct2,direct1;direct2(direct1),这组指令将直接地址所规定的内部RAM单元(片内RAM的00H7FH,SFR的80HFFH单元)内容传送到累加器A,寄存器Rn,并能实现内部数据寄存器RAM之间、特殊功能寄
16、存器SFR之间或SFR与内部RAM之间的直接数据传递。直接传递不需要通过累加器A或者工作寄存器来间接传送,从而提高了数据传送的效率例如:MOV P2,P1;(P2)(P1)该指令的功能是不通过其它寄存器,直接把P1口(口地址90H)的内容传送到P2口(口地址A0H)输出,提高了效率。,寄存器寻址数据传送指令,这类指令总共有如下5条:MOV A,Rn;A Rn MOV Rn,A;Rn A MOV direct,Rn;direct Rn MOV direct,A;direct A 这组指令的功能是把累加器A的内容传送到内部数据区RAM的各个单元,或者把指定工作寄存器R0R7中的内容传送到累加器A或
17、direct所指定的片内RAM的00H7FH单元或特殊功能寄存器SFR中去。但不能用这类指令在内部工作寄存器之间直接传送。例如:不存在MOV R1,R2 这样的指令。,寄存器间接寻址型数据传送指令,这一类指令可以分为如下三条:MOV A,Rn;A(Ri)MOV direct,Ri;(Ri)-direct这三条指令的共同点是Ri存放的不是操作数本身,而是操作数所在存储单元的地址。第一条指令的功能是把中的内容为地址的操作数传送到累加器A中;第二条指令的功能是把累加器A中的操作数传送到以Ri中内容为地址的存储单元;第三条指令的作用是把以Ri中的内容地址的源操作数传送到direct存储单元。,内部RA
18、M间数据传递关系,外部数据传送指令,MCS-51单片机CPU对片外扩展的数据存储器RAM或I/O口进行数据传送,必须采用寄存器间接寻址的方法,通过累加器A来完成。一般数据的传送是通过P0口和P2口完成的,即片外RAM地址总线低8位由P0口送出,高8位由P2口送出,数据总线(8位)也由P0口传送(双向),但与低8位地址总线是分时传送的。,这类数据传送指令共有以下4条单字节指令,指令操作码助记符标志为MOVX。MOVX A,DPTR;(A)(DPTR)MOVX A,Ri;(A)(Ri)MOVX DPTR,A;(DPTR)(A)MOVX Ri,A;(Ri)(A),例如:设外部RAM(0203H)=F
19、FH,分析以下指令执行后的结果。MOV DPTR,0203H;(DPTR)0203H MOVX A,DPTR;(A)(DPTR)MOV 30H,A;(30H)(A)MOV A,0FH;(A)0FHMOVX DPTR,A;(DPTR)(A)执行结果为:(DPTR)=0203H,(30H)=FFH,(0203H)=(A)=0FH。,程序存储器向累加器A传送数据指令,程序存储器向累加器A传送数据指令,又称查表指令。它采用变址寻址方式,把程序存储器(ROM或EPROM)中存放的表格数据读出,传送到累加器A。它共有如下两条单字节指令,指令操作码助记符为MOVC。MOVC A,A+DPTR;(A)(A)+
20、(DPTR)MOVC A,A+PC;(PC)(PC)+1,(A)(A)+(PC),例:在外部ROM/EPROM中,从2000H单元开始依次存放09的平方值:0、1、4、9、81,要求依据累加器A中的值(09)来查找所对应的平方值,分析下述程序的结果。MOV DPTR,2000H;(DPTR)2000H MOV A,09H;(A)09H MOVC A,A+DPTR;(A)(A)+(DPTR)执行结果:(DPTR)=2000H,(A)=51H(81的十六进制数)。,例:仍以外部ROM/EPROM 2000H单元开始存放09的平方值,以PC作为基址寄存器进行查表。解:设MOVC指令所在地址(PC)=
21、1FF0H,则偏移量=2000H-(1FF0H+1)=0FH,相应的程序如下:MOV A,09H;(A)09HADD A,0FH;地址调整MOVC A,A+PC;(A)(A)+(PC)+1)执行结果为:(PC)=1FF1H,(A)=51H。,数据交换指令,数据传送类指令一般都用来将操作数自源地址传送到目的地址,指令执行后,源地址的操作数不变,目的地址的操作数则修改为源地址的操作数。而数据交换指令其数据作双向传送,涉及传送的双方互为源地址、目的地址,指令执行后各方的操作数都修改为另一方的操作数。因此,两操作数均未冲掉、丢失。,数据交换类指令共有如下5条指令:XCH A,direct;(A)(di
22、rect)XCH A,Ri;(A)(Ri)XCH A,Rn;(A)(Rn)XCHD A,Ri;(A30)(Ri)30)SWAP A;(A74)(A30),例:设(R0)=30H,(30H)=4AH,(A)=28H,则:执行 XCH A,R0 结果为:(A)=4AH,(30H)=28H 执行 XCHD A,R0 结果为:(A)=2AH,(30H)=48H 执行 SWAP A 结果为:(A)=82H,堆栈操作类指令,堆栈操作有进栈和出栈操作,即压入和弹出数据,常用于保存或恢复现场。该类指令共有如下两条指令:(SP)(SP)+1(SP)(direct)(direct)(SP)(SP)(SP)-1,P
23、USH direct,POP direct,例:若在外部ROM/EPROM中2000H单元开始依次存放09的平方值,数据指针(DPTR)=3A00H,用查表指令取出2003H单元的数据后,要求保持DPTR中的内容不变。完成以上功能的程序如下:MOV A,03H;(A)03HPUSH DPH;保护DPTR高8位入栈PUSH DPL;保护DPTR低8位入栈MOV DPTR,2000H;(DPTR)2000HMOVC A,A+DPTR;(A)(2000H+03H)POP DPL;弹出DPTR低8位POP DPH;弹出DPTR高8位,(先进后出),数据传送指令 总结,以累加器A为目的操作数的数据传送指
24、令1)MOV A,#data;dataA2)MOV A,Rn;(Rn)A3)MOV A,Ri;(Ri)A4)MOV A,direct;(direct)A 以寄存器Rn为目的操作数的数据传送指令1)MOV Rn,#data;dataRn2)MOV Rn,direct;(direct)Rn3)MOV Rn,A;(A)Rn,以Ri间址单元为目的操作数的数据传送指令1)MOV Ri,#data;data(Ri),2)MOV Ri,direct;(direct)(Ri)3)MOV Ri,A;(A)(Ri)以直接地址direct为目的操作数的数据传送指令1)MOV direct,#data;datadir
25、ect,2)MOV direct2,direct1;(direct1)direct23)MOV direct,Rn;(Rn)direct4)MOV direct,Ri;(Ri)direct5)MOV direct,A;(A)direct,16位立即数传送指令MOV DPTR,#data16;data16DPTR 外RAM数据传送指令 MOVX DPTR,A;(A)(DPTR)MOVX A,DPTR;(DPTR)A MOVX Ri,A;(A)(Ri)MOVX A,Ri;(Ri)A ROM数据传送指令 MOVC A,A+DPTR;(A)+(DPTR)A MOVC A,A+PC;(A)+(PC)A,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 大学 教案

链接地址:https://www.31ppt.com/p-5937805.html