第3章MCS-51单片机的指令系统课件.ppt
《第3章MCS-51单片机的指令系统课件.ppt》由会员分享,可在线阅读,更多相关《第3章MCS-51单片机的指令系统课件.ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第3章 MSC-51单片机的指令系统1总体要求:总体要求: 熟练掌握MCS-51单片机汇编语言的指令格式 熟练掌握MCS-51单片机指令的寻址方式 了解机器语言指令格式 掌握MCS-51指令系统的分类、符号约定和常用指令 能够独立完成本章作业学习重点:学习重点: MCS-51单片机的指令格式和寻址方式 MCS-51指令系统中各条指令的助记符格式、 功能等特性第第3 3章章 MCS-51MCS-51单片机的指令系统单片机的指令系统 第3章 MSC-51单片机的指令系统3.1 3.1 指令格式和寻址方式指令格式和寻址方式3.2 3.2 指令系统指令系统2 第3章 MSC-51单片机的指令系统33
2、.1 3.1 指令格式和寻址方式指令格式和寻址方式3.1.1 3.1.1 指令格式指令格式 MCS-51单片机的指令和一般的微型计算机一样,具有两级形式:汇编语言级和机器语言级。对用户而言,主要使用汇编语言来编写程序,然后由汇编程序(机器汇编)或手工汇编将汇编语言源程序翻译成二进制代码组成的机器语言程序。汇编语言的特点是对每一条指令都给出了助记符。由于助记符具有用英文单词的缩写来描述指令的特征,因此它不但便于记忆,也便于理解和分类。 第3章 MSC-51单片机的指令系统4 1. 汇编语言指令格式 MCS-51单片机汇编语言指令格式为: 标号: 操作码 操作数 ;注释 各字段之间用规定的符号隔开
3、。方括号的部分为可选项。 例如:LOOP: MOV A,54H ;A54H 各字段的意义如下: 标号:标号:标号给出了该指令位置的符号地址,即该指令机器代码存储单元的地址。它是以英文字母开始的由18个字母或数字组成的字符串,并以“:”结束。 操作码:操作码:操作码部分给出了指令所实现的操作功能。操作码用助记符的形式给出。 第3章 MSC-51单片机的指令系统5 操作数:操作数:操作数部分给出了指令中参与操作的对象。操作数一般分为目的操作数(上例中累加器A)和源操作数(上例中的54H),两者之间用“,”分隔。任何指令的操作都是实现“从源操作数到目的操作数”,因此,目的操作数和源操作数的书写顺序不
4、能颠倒。需要指出的是:也有些指令根据其功能只指明了一个操作数或不需要指明操作数。 注释:注释:注释部分是用户为方便阅读而加的注释。注释以“;”为开始。注释部分对汇编语言来讲可有可无,它不参与计算机的操作,不影响指令的执行。 例如: MOV A,00H ;将累加器清0 第3章 MSC-51单片机的指令系统6 . 机器语言指令格式 机器语言指令是一种二进制码,包括操作码和操作数。操作码规定了该指令操作的性质,操作数则表明了操作的对象。MCS-51的指令系统有单字节、双字节和三字节这三种形式的指令,分别占有13个存储单元。 (1) 单字节指令:如 RETI对应的机器语言指令格式为: (2) 双字节指
5、令: 如 MOV A,54H对应的机器语言指令格式为: 00110010B (32H) 操作码 01110100B (74H)操作码01010100B (54H)操作数 第3章 MSC-51单片机的指令系统7 (3) 三字节指令:如MOV 30H,54H对应的机器语言指令格式为:01110101 B (75H)操作码00110000 B (30H)目的操作数01010100B (54H)源操作数 单字节指令的操作码本身就隐含了操作数的信息;一般情况下,双字节指令的首字节为操作码,第二字节为操作数或操作数的地址;三字节指令的首字节为操作码,后面两个字节为操作数或操作数的地址。指令字节越多,所占内
6、存单元越多,但执行时间的长短只取决于执行该指令需要多少个机器周期。 第3章 MSC-51单片机的指令系统83.1.2 3.1.2 寻址方式寻址方式 在指令系统中,操作数是一个重要的组成部分,它指定了参加运算的数或数所在的地址单元。如何找到操作数地址的方式就称为寻址方式。寻址方式就是在规定的地址范围内如何灵活地、方便地找到所需要的操作数地址。 MCS-51单片机指令操作数或操作数地址主要有以下7种寻址方式。 第3章 MSC-51单片机的指令系统9 1. 立即寻址 立即寻址就是在指令中的操作数(8位或16位),这个操作数称为立即数。用符号“”表示立即数,以区别直接地址。 例如:MOV A,3AH
7、;A3AH 功能:把3AH这个数送入累加器A中。 例如:MOV DPTR,0123H ;DPTR0123H 功能:将数据指针DPTR传送16位的立即数,立即数的高8位送入DPH中,低8位送入DPL中。此为三字节的指令,指令代码为90H、01H、23H。立即寻址示意图如图3-1所示。 第3章 MSC-51单片机的指令系统10 (a)MOV A,#3AH (b)MOV DPTR,#0123H 图3-1 立即寻址示意图 第3章 MSC-51单片机的指令系统112. 直接寻址 直接寻址就是在指令中直接给出了操作数的地址。提供了访问内部数据存储器3种地址空间的方法:可以访问内部RAM128个字节单元、2
8、21个位地址空间以及特殊功能寄存器SFR,且SFR和位地址空间只能用直接寻址的方式来访问。 例如:MOV A,70H;A(70H) 功能:把片内RAM 70H单元的内容送入累加器A中,图3-2示。 第3章 MSC-51单片机的指令系统12图3-2 直接寻址示意图 第3章 MSC-51单片机的指令系统3. 寄存器寻址 寄存器寻址是在指令中指定某一寄存器的内容为操作数。对累加器A、通用寄存器B、数据指针寄存器DPTR和进位位CY,其寻址时具体的寄存器已隐含在其操作码中,而对选定的8个工作寄存器R0R7则用操作码的低三位指明所用的寄存器。用户可用PSW中的RS1、RS0来选择寄存器组 。 例如:MO
9、V A,R5;AR5 功能:把R5中的内容(设R561H)送入累加器A中。该指令执行过程如图3-3所示。13 第3章 MSC-51单片机的指令系统14图3-3 寄存器寻址示意图 第3章 MSC-51单片机的指令系统15 4. 寄存器间接寻址 寄存器间接寻址是把指令中指定的寄存器的内容作为操作数的地址,把该地址单元的内容作为操作数。这种寻址方式用于访问内部RAM和外部RAM。可用来间接寻址的寄存器有R0、R1、堆栈指针SP以及16位的数据指针DPTR,使用时前面加符号表示间接寻址。 例如:MOV A,R1 ;A(R1) 其指令代码形式为11100111,十六进制为E7H,注意最低位为1,表示现在
10、使用的寄存器为 R1。现假设工作寄存器为第0组,R1中存放的是75H。则执行该指令过程如图3-4所示。 第3章 MSC-51单片机的指令系统16图3-4 寄存器间接寻址示意图 第3章 MSC-51单片机的指令系统 5. 变址寻址变址寻址是以某个寄存器的内容为基地址,然后在这个基地址的基础上加上地址偏移量形成真正的操作数地址MCS-51单片机可由DPTR或PC作为基址寄存器,由累加器A作为偏移量寄存器。这种寻址方式常用于查表操作。 例如:MOVC A,A+DPTR ;A(A+DPTR) 功能:把DPTR中的内容和A中的内容相加作为16位的程序存储器地址,再把该地址对应单元的内容送入累加器A中。执
11、行该指令过程如图3-5所示。17 第3章 MSC-51单片机的指令系统18图3-5 变址寻址示意图 第3章 MSC-51单片机的指令系统196. 相对寻址相对寻址用于转移指令的操作,将程序计数器PC中的当前值(相对转移指令后的字节地址)与指令第二字节给出的偏移量相加,将其结果作为转移指令的目标地址。指令第二字节给出的偏移量有正负号,在指令中以补码形式给出,转移的范围在-128+127之间。 例如;JZ 30H ;A0条件成立转移 功能:若A0,不跳转继续执行下一条指令;若A0,则以PC中的当前值为基地址,加上偏移量30H后所得到的结果为该转移指令的目的地址,从而实现程序的转移。 第3章 MSC
12、-51单片机的指令系统 设该指令存放于0100H、0101H单元,取出指令后,PC当前值为0102H;对A进行判断,若A0,则PC内容与偏移量30H相加,得到转移目的地址0132H。故执行完该指令后,PC中的值为0132H,程序从0132H处开始执行。执行过程如图3-6所示。20 第3章 MSC-51单片机的指令系统21图3-6 相对寻址示意图 第3章 MSC-51单片机的指令系统22 在实际工作中,有时要根据已知源地址和目的地址计算偏移量rel。现以两字节相对转移指令为例讨论偏移量rel的计算。 正向跳转:rel目的地址-源地址-2地址差-2 目的地址小于源地址,rel用负数的补码表示。 反
13、向跳转:rel(目的地址-源地址-2)补 (目的地址-(源地址+2) 第3章 MSC-51单片机的指令系统 7. 位寻址位寻址是指对片内RAM的位寻址区和某些有位地址的特殊功能寄存器进行位操作时的寻址方式。位地址与直接寻址中的字节地址形式完全一样,主要由操作码来区分。 例如:MOV C,07H 功能:把内部RAM 20H单元的D7位(位地址为07H)的内容传到位累加器C(即CY)中,其操作过程如图3-7所示。 23 第3章 MSC-51单片机的指令系统24图3-7 位寻址示意图 第3章 MSC-51单片机的指令系统253.2 3.2 指令系统指令系统 MCS-51单片机共有111条指令,按字节
14、数分类,单字节指令49条,双字节指令45条,三字节指令17条;按执行时间分类,单机器周期指令64条,双机器周期指令45条,只有乘法和除法指令占用四个机器周期。若系统时钟为12MHz,大多数指令执行时间仅需1s;按功能分类可划分为五类: (1) 数据传送类指令28条; (2) 算术运算类指令24条; (3) 逻辑操作类指令25条; (4) 控制转移类指令17条; (5) 位操作类指令17条。 第3章 MSC-51单片机的指令系统26在汇编语言指令中,约定采用以下符号: Rn(n=17)指定当前选中的工作寄存器组中名为R0R7的工作寄存器,被选中的工作寄存器组由PSW中RS0、RS1确定。 Ri(
15、i=0、1)指定当前选中的工作寄存器组中可作为地址指针的两个工作寄存器R0、R1。 data 代表8位立即数,包含在指令中的8位常数。 data16 代表16位立即数,即包含在指令中的16位常数。 direct 代表8位片内RAM单元的直接地址。 addr11 代表11位目的地址。用于ACALL 和AJMP指令中,目的地址必须在下一条指令第一个字节同一2K字节程序存储器地址空间内。 第3章 MSC-51单片机的指令系统27 addr16 代表16位目的地址。用于LCALL和LJMP指令中,目的地址在64K程序存储器地址空间内。 rel 指定补码形式的8位地址偏移量。用于相对转移指令中,偏移量以
16、下一条指令第一字节地址为基址,地址偏移量范围为-128+127。 bit 代表片内RAM或SFR可直接寻址的位地址。 间接寻址方式中,表示间址寄存器的符号。 / 位操作指令中,表示先对该位求反再参与操作,但不影响该位原值。 () 表示由所指地址单元中的内容。 指令操作流程,将箭头右边的内容送到箭头左边的单元中。 $ 指本条指令的起始地址 第3章 MSC-51单片机的指令系统283.2.1 3.2.1 数据传送类指令数据传送类指令 传送类指令主要用于数据传送、保存以及交换等场合。 数据传送指令除通过累加器进行数据传送之外,还可以是数据存储器之间或工作寄存器与数据存储器之间进行数据传送。它一般是把
17、源操数传送到目的操作数,指令执行后源操作数不变,目的操作数修改为源操作数。此类指令一般不影响标志位,只有堆栈操作可以直接修改程序状态字PSW。另外,对目的操作数为累加器A的指令将影响奇偶标志P位。 数据传送类指令用到的助记符有MOV、MOVC、MOVX、XCH、XCHD、SWAP、PUSH、POP共8种。源操作数可以采用寄存器、寄存器间接、直接、立即、变址5种寻址方式,目的操作数采用前三种寻址方式。 第3章 MSC-51单片机的指令系统291. 对内部RAM和SFR的一般数据传送指令(15条) (1) 以累加器A为目的操作数的指令(4条) 功能:把源操作数指定的内容送入累加器A中。使用寄存器寻
18、址、直接寻址、寄存器间接寻址和立即寻址4种寻址方式。 MOV A,Rn ;ARn MOV A,direct ; A(direct) MOV A,Ri ; A(Ri) MOV A,data ; Adata 第3章 MSC-51单片机的指令系统30 (2) 以寄存器Rn为目的操作数的指令(3条) 功能:把源操作数指定的内容送到所选定的工作寄存器Rn中。使用寄存器寻址、直接寻址和立即寻址3种寻址方式。 MOV Rn ,A ; RnA MOV Rn ,direct ; Rn(direct ) MOV Rn ,data ; Rndata 第3章 MSC-51单片机的指令系统 (3) 以直接地址为目的操作
19、数的指令(5条) 功能:把源操作数指定的内容送到由直接地址direct所指定的片内RAM中。使用寄存器、直接、寄存器间接和立即4种寻址方式。 MOV direct,A ;(direct) A MOV direct,Rn ;(direct )Rn MOV direct1,direct2 ;(direct1)(direct2) MOV direct, Ri ; (direct) (Ri) MOV direct,data ; (direct) data 第3章 MSC-51单片机的指令系统32 (4) 以间接地址为目的操作数的指令(3条) 功能:把源操作数指定的内容送到以Ri中的内容为地址的片内RA
20、M中。使用寄存器、直接和立即3种寻址方式。 MOV Ri,A ;(Ri)A MOV Ri,direct ;(Ri)(direct) MOV Ri,# data ;(Ri)data 第3章 MSC-51单片机的指令系统33例3.1 利用直接寻址把立即数32H送到内部RAM的20H单元。 MOV 20H,32H 例3.2 利用寄存器间接寻址把立即数32H送入内部RAM的20H单元。 MOV R0,20H MOV R0,32H 例3.3 利用直接寻址把P1口的内容传送到P3口。 MOV P3,P1 例3.4 利用寄存器间接寻址把累加器A的内容传送到外部数据存储器4000H单元。 MOV DPTR,4
21、000H MOVX DPTR,A 第3章 MSC-51单片机的指令系统342. 累加器与程序存储器的传送指令(2条) 功能:对存放于程序存储器中的表格数据进行查找传送。使用变址寻址方式。MOVC A,A+DPTR ;A(A+DPTR)MOVC A,A+PC ;A(A+PC) 3. 累加器与片外RAM传送指令(4条)功能:累加器A与片外RAM间的相互传送。片外扩展的I/O口与片外RAM是统一编址的,故以下4条指令也可以作为输入/输出指令。其使用寄存器间接寻址方式。MOVX A, DPTR ;A(DPTR) 或读I/O线MOVX DPTR,A ;(DPTR)A 或写I/O线MOVX A,Ri ;
22、A (Ri) 或读I/O线MOVX Ri,A ;(Ri) A 或写I/O线 第3章 MSC-51单片机的指令系统354. 堆栈操作类指令(2条) 功能:把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元。 PUSH direct ; SPSP+1 (SP)(direct) POP direct ; SPSP-1 (direct)(SP) 前一条指令称为入栈指令,后一条指令称为出栈指令,51机复位后,(SP)=07H,为防止与工作寄存器组发生冲突,一般需重新设定SP的初始值。由于压入堆栈的第一个数必须存放在SP+1所指存储单元,故实际的栈底为SP+1所指
23、存储单元。 第3章 MSC-51单片机的指令系统36 例3.5 设(10H)01H,(20H)1AH。将内部RAM 10H与20H单元的内容交换。 MOVSP,30H PUSH10H ;10H单元内容进栈 PUSH20H ;20H单元内容进栈 POP10H ;将栈顶元素弹出,送往10H单元 POP20H ;下一个元素出栈,送20H 单元 执行结果:(10H)1AH,(20H)01H 第3章 MSC-51单片机的指令系统 例3.6 根据累加器A中的数(09)查平方表的子程序。 COUNT:PUSHDPH;保护DPTR内容 PUSHDPL MOVDPTR,TABLE ;赋表首址 MOVCA,A+D
24、PTR ;查表并传送给A POPDPL;恢复DPTR原值 POPDPH RET;返回主程序控制 TABLE:DB 00,01,04,09,16,25 DB 36,49,64,81 第3章 MSC-51单片机的指令系统38 5. 交换指令(4条) 功能:把累加器A中的内容与源操作数所指出的数据相互交换。使用寄存器、直接和寄存器间接3种寻址方式。 XCHA,Rn ;ARn XCHA,direct ;A(direct ) XCHA,Ri ;A(Ri) XCHDA,Ri ;A30(Ri)30 6. 16位数据传送类指令(1条) MOV DPTR,data16 功能:把16位常数送入数据指针寄存器。使用
25、立即寻址方式。译成机器码时,高位字节在前,低位字节在后。 第3章 MSC-51单片机的指令系统393.2.2 3.2.2 算术运算类指令算术运算类指令算术运算类指令主要完成加、减、乘、除四则运算,以及加1、减1和BCD码的运算、调整等。除加1、减1运算外,这类指令大多数都要影响到程序状态字寄存器PSW。虽然算术逻辑单元ALU仅能对8位无符号整数进行运算,但利用进位标志CY,可进行多字节无符号整数的运算;利用溢出标志,还可方便地对带符号数进行补码运算。算术运算类指令用到的助记符有:ADD、ADDC、SUBB、INC、DEC、DA、MUL和DIV八种。 第3章 MSC-51单片机的指令系统40 1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 MCS-51单片机的指令系统课件 MCS 51 单片机 指令系统 课件
限制150内