《单片机原理与接口技术》第3章MCS51单片机的指令系统课件.ppt
《《单片机原理与接口技术》第3章MCS51单片机的指令系统课件.ppt》由会员分享,可在线阅读,更多相关《《单片机原理与接口技术》第3章MCS51单片机的指令系统课件.ppt(52页珍藏版)》请在三一办公上搜索。
1、高等职业教育计算机类课程规划教材,单片机原理与接口技术,大连理工大学出版社,第3章 MCS-51 单片机的指令系统,3.1 指令格式及分类3.2 寻址方式3.3 数据传送指令3.4 算术运算指令3.5 逻辑操作指令3.6 控制转移指令3.7 位处理指令,3.1.1 指令格式 MCS-51系列单片机指令有两种标识方式:机器语言方式和汇编语言方式。机器语言方式由二进制代码组成(通常用十六进制表示),被称为机器指令。用机器指令编写的程序称为机器语言源程序,它是机器所能理解和执行的,但人们记忆和读写都很困难。汇编语言方式由方便人们记忆的“助记符”和数字符号组成,被称为符号指令。用符号指令编写的程序称为
2、汇编语言源程序,它必须通过汇编程序汇编成机器语言程序后,机器才能理解和执行。汇编过程也可以手工完成,即手工汇编。,3.1 指令格式及分类,1.汇编语言指令格式 汇编语言指令的一般格式如下:标号:操作码第一操作数,第二操作数,第三操作数;注释 说明:(1)带方括号的部分为可选项。(2)标号是用符号表示的一个地址常量。它表示该指令在程序存储器中的起始地址。标号的命名规则是:必须以字母开头,长度不超过6个字符,并以“:”结束。(3)操作码表示指令的操作功能。每条指令都有操作码。(4)操作数表示的是参与操作的数据来源和操作之后结果数据的存放位置,可以是常数、地址或寄存器符号。,指令的操作数可能有1个、
3、2个或3个,有些指令可能没有操作数。操作数与操作数之间用“,”分隔,操作码与操作数之间用空格分隔。(5)注释字段是编程人员对该指令或该段程序的功能说明,是为了方便阅读程序的一种标注。注释以“;”开始,当汇编语言源程序被汇编成机器语言程序时,该项被舍弃。2.机器语言指令格式 机器语言指令是一种二进制代码,它包括两部分:操作码和操作数。MCS-51指令系统中有单字节、双字节和三字节共3种指令。机器指令格式如下:(1)单字节指令,在单字节指令中,操作码和操作数共占一个字节,其中操作数通常为以隐含形式指定的常用寄存器。其指令格式如下:例如INC DPTR指令,其功能为DPTR(DPTR)+1。指令机器
4、码为:MCS-51系列单片机中,单字节的机器指令共有49条。(2)双字节指令 双字节指令的第一个字节为操作码,第二个字节为操作数或操作数的地址。这类指令的指令格式为:,操作码,nn,1010 0011,操作码,操作数,nn,nn+1,例如MOV A,#00H指令,其功能为A00H。指令机器码为:MCS-51系列单片机中,双字节的机器指令共有46条。(3)三字节指令 三字节指令的第一个字节为操作码,第二个字节和第三个字节都是操作数或操作数的地址。这类指令的指令格式为:例如MOV2FH,#00H指令,其功能为2FH00H。,0111 0100,0000 0000,操作码,操作数,操作码,第一操作数
5、,nn,nn+1,第二操作数,nn+2,指令机器码为:MCS-51系列单片机中,三字节的机器指令共有16条。3.1.2 指令分类 MCS-51 系列单片机指令系统共有111条不同的指令。这些指令按每条指令的执行时间分类,有64条单周期指令,45条双周期指令和2条4周期指令;如果按字节数分类则有单字节的指令49条,双字节的指令46条,三字节的指令16条。这些指令按指令操作功能划分,有以下5类:数据传送指令(28条)算术运算指令(24条),0111 0101,0010 1111,操作码,第一操作数,0000 0000,第二操作数,逻辑运算及移位指令(25条)控制转移指令(22条,含以位值为条件的转
6、移指令5条)位操作指令(17条,含以位值为条件的转移指令5条)3.1.3 指令系统符号约定 指令的一个重要组成部分是操作数,为了表示指令中同一种类型的操作数,MCS-51单片机指令系统采用了如下符号约定。1.Rn:n=07,表示当前工作寄存器区的8个工作寄存器R0R7。2.Ri:i=0,1。表示当前工作寄存器区的2个工作寄存器R0、R1。3.direct:表示8位内部数据存储单元的地址。4.#data:表示8位立即数。“#”表示后面的data为立即数。5.#data16:表示16位立即数。“#”意义同上。6.addr11:表示11位目的地址。,7.addr16:表示16位目的地址。8.rel:
7、表示带符号的8位偏移量,被用在SJMP和所有条件转移指令中。9.bit:表示8位内部数据存储空间或特殊功能寄存器区中可按位寻址区的8位位地址。10.bit:表示在位操作指令中,对该位(bit)先取反,再参与运算,但不改变位(bit)的原值。11.():表示某一寄存器、存储单元或表达式的内容。12.():表示某一寄存器、存储单元或表达式的内容的内容。13.:表示其后的寄存器或表达式的值为操作数的地址。(1)Ri:表示寄存器Ri(i=0或1)中存放的是操作数的地址。(2)DPTR:表示DPTR中存放的是操作数的地址,该地址位于外部数据存储空间,其取值范围为0000H0FFFFH。,14.:表示将箭
8、头右边的值赋给箭头左边的寄存器或存储单元。15.:表示箭头两端的数据进行交换。16.(S):表示源操作数。17.(D):表示目的操作数。18.rrr:在指令编码中,rrr三位值由工作寄存器Rn确定,R0R7对应的rrr值分别为000111。19.:表示本指令的起始地址。,3.2 寻址方式,3.2.1 寄存器寻址方式 寄存器寻址是指,在指令中直接以寄存器名表示操作数的地址。即寄存器的内容作为操作数。,可以采用寄存器寻址的寄存器有 R0R7、累加器A、DPTR以及位累加器Cy。例如指令:MOV A,R2 源操作数和目的操作数都属于寄存器寻址。3.2.2 直接寻址方式 直接寻址方式是指,在指令中以地
9、址或符号形式直接给出操作数地址。用这种寻址方式可以访问内部数据存储器三种地址空间:1.内部数据存储器的128个字节单元。例如指令:MOV A,50H;指令中源操作数的寻址方式为直接寻址 2.位地址空间。例如指令:MOV C,00H;指令中源操作数的寻址方式为直接寻址 3.特殊功能寄存器地址空间。例如指令:MOV Acc,P1;源操作数和目的操作数采用的都是直接寻址,3.2.3 立即寻址方式 立即寻址方式是指,指令操作数部分给出的就是参与运算的操作数本身,它可以是 8位二进制数或16位二进制数。即操作数是以指令字节的形式存放于程序存储器中的。在MCS-51系统中是用在数值前加“#”形式表示的,如
10、果立即数的最高位为 AF英文字符时,该字符前要加“0”,以便使之区别于标号。例如指令:MOV A,#0A0H 或指令:MOV DPTR,#2000H 两指令中的源操作数的寻址方式都是立即寻址。3.2.4 寄存器间接寻址方式 寄存器间接寻址是指,指令操作数部分所指定的寄存器中存放的是操作数的地址。,在下面几种情况下,可以使用该寻址方式:(1)访问内部数据存储区的00H7FH单元 使用当前工作寄存器区的R0、R1作地址指针来间接寻址。(2)堆栈操作指令PUSH和POP 使用堆栈指针SP进行间接寻址。(3)访问外部数据存储区的00H0FFH单元 使用当前工作寄存器区的R0、R1作地址指针来间接寻址。
11、(4)访问整个外部数据存储区的0000H0FFFFH单元 使用数据指针DPTR进行间接寻址。例如指令:MOV R1,#30H MOV A,R1;源操作数为间接寻址,访问内部RAM30H单元,又例如指令:MOV R1,#30H MOVX A,R1;源操作数为间接寻址,访问外部RAM30H单元3.2.5 变址寻址方式 变址寻址是指以程序计数器 PC或数据指针DPTR作为基地址寄存器,以累加器A作为变址寄存器,把两者的内容相加形成16位的操作数的地址。这种寻址方式专用于访问程序存储器中的常数表,不能访问数据存储器。例如指令:MOV A,#7FH MOV DPTR,#2000H MOVC A,A+DP
12、TR;源操作数寻址方式为变址寻址 说明:,(1)变址寻址只能用在MOVC类指令中,该类指令用来从程序存储空间中读取数据。(2)该程序段的功能是把程序存储器207FH单元的内容送入累加器A。3.2.6 相对寻址方式 相对寻址以程序计数器 PC的当前值作为基地址,与指令中给定的相对偏移量rel进行相加,把得到的和作为程序的转移地址。这种寻址方式用于相对转移指令中。所谓相对转移,是指程序转移目标地址由相对于该指令当前地址的偏移量来决定。一般将相对转移指令所在的地址称为源地址,转移后的地址称为目标地址,则有:目标地址=源地址+转移指令字节数+偏移量 在相对转移指令中,偏移量通常以目标地址的标号形式出现
13、。,例如指令:JZ LOOP;操作数为相对寻址 此时,计算偏移量的公式为:偏移量=目标地址-(源地址+2)如果偏移量为负数,那么这条指令执行后程序将转到该指令的前面(低地址方向);如果偏移量为正数,那么将转到该指令的后面(高地址方向)。在MCS-51指令系统中,偏移量的取值范围是-128+127。3.2.7 寻址方式小结 MCS-51指令系统的不同寻址方式对应不同的存储空间,也可以灵活使用不同的寻址方式访问同一个存储空间,使用时应多加注意。表3-1列出了不同寻址方式的作用空间。(见教材P47页),数据传送指令的功能是:把源操作数提供的数据传送给目的操作数所指定的单元,源操作数内容不变。它的另外
14、一个功能是,将源操作数和目的操作数所指定的两个单元内容彼此进行交换。3.3.1 内部RAM和SFR间的一般传送指令 MCS-51系列单片机内部RAM和特殊功能寄存器SFR各存储单元之间的数据传送是通过MOV指令来实现的。MOV指令在内部RAM和特殊功能寄存器 SFR之间(包含立即数)的数据传送路径如图3-1所示。其中,#data表示立即数;,3.3 数据传送指令,Ri中Ri的值为内部数据存储单元的地址;direct 指向内部数据存储单元或特殊功能寄存器;Rn表示当前工作寄存器区的8个工作寄存器R0R7;Acc代表累加器A。1.以累加器A为目的操作数的数据传送指令,见表3-2.(见教材P48页)
15、2.以直接地址direct为目的操作数的数据传送指令,见表3-3.(同上)3.以寄存器Rn为目的操作数的数据传送指令,见表3-4。(同上)4.以Ri为目的操作数的数据传送指令,见表3-5。(见教材P49页)5.16位数据传送指令,见表3-6。(同上),图3-1 MOV指令的操作功能,说明:(1)上述指令中的 rrr取值为000111,分别对应选定工作寄存器区的8个工作寄存器。(2)上述指令中的i取值为0或1。分别对应工作寄存器R0和R1。(3)直接地址到直接地址的数据传送允许把一个端口引脚的状态值读入到内部数据存储单元,或者把内部数据存储单元的内容输出到端口锁存器中,不需要通过累加器或中间寄存
16、器。例如:MOV 20H,90H;20H(P1)该指令的功能为把P1口引脚状态读入到内部RAM20H单元中。对于特殊功能寄存器来说,它的直接地址可以用其名称来代替。因此,上面指令也可以写成:MOV 20H,P1;20H(P1),(4)某些指令的功能是相同的,但指令机器码可能不同。例如:MOV A,#01H;A01H,指令为2字节,机器码为:74H,01H MOV Acc,01H;A01H,指令为3字节,机器码为:75H,0E0H,01H 在第二条指令中的Acc表示累加器A的直接地址0E0H。(5)上述数据传送指令中,以累加器 A为目的操作数的数据传送指令会依据累加器A中“1”的个数的奇偶状态,
17、对程序状态字寄存器 PSW的P标志位重新赋值,其余的都不影响标志位。3.3.2 数据交换指令 MCS-51系列单片机指令系统中交换指令共4条,其中字节交换指令3条,半字节交换指令1条。字节交换指令的功能是将累加器A与内部RAM中某一个单元的内容相互交换。,半字节交换指令的功能是将累加器A的低4位与Ri所指出的内部存储单元的低4位相互交换,其指令格式见表3-7。(见教材P50页)3.3.3 累加器A与外部RAM(或外部接口)数据传送指令 MCS-51 系列单片机指令系统中,CPU与外部数据存储器的数据传送指令操作码为MOVX,其中X为external(外部)的第二个字母。这组指令的功能是在外部数
18、据存储器或扩展I/O口与累加器A之间进行数据传送。其指令格式见表3-8。(见教材P51页)说明:(1)在以上4条指令中DPTR的取值范围是:0000H0FFFFH;Ri的取值范围是xx00HxxFFH。(2)由于MOVX类指令是专访外部数据存储器和外部接口的指令,因此它的操作数地址(DPTR或Ri的值),即外部数据存储器16位地址是由P0口和P2口向外部地址总线发出的。,(3)当执行指令 MOVX A,DPTR和 MOVXDPTR,A时,寄存器 DPH(DPTR的高8位)的内容自动写入 P2口,寄存器DPL(DPTR的低8位)的内容自动写入P0口并锁存。(4)当执行指令 MOVX A,Ri和M
19、OVXRi,A时,寄存器Ri的内容为操作数地址的低八位,将自动写入P0口并锁存,操作数地址的高八位必须事先通过MOV P2,#data指令写入P2口。3.3.4 累加器A与程序存储器传送指令 MCS-51 系列单片机指令系统提供了两条累加器A与程序存储器的数据传送指令,这两条指令又称查表指令,操作码采用MOVC形式,指令的功能是将程序存储器中的数据读入累加器A中。其指令格式见表3-9。(见教材P51页)说明:,(1)在上面两条指令中,寄存器DPTR的值、DPTR与累加器A的值的和以及累加器A与PC值的和为程序存储器单元的16位地址。(2)指令的执行结果是将该地址中的操作数取出来送入累加器A。(
20、3)前面已经提到,该指令又叫查表指令。所谓的查表是指,在程序存储空间中有一个常数表,在查表前将表头地址送入DPTR寄存器,累加器A中存放的是从操作数地址到表头地址的偏移量。则指令MOVC A,A+DPTR的执行过程如图3-2所示。我们假设从 1200H单元开始存有一个常数表,累加器 A中的内容为34H,DPTR的内容为1200H,程序存储单元1234H单元的内容为 0AAH,则指令的执行结果是累加器A中的值变成0AAH。(4)第二条指令的基址寄存器为程序计数器PC。,CPU在读取指令时,PC已执行了加1操作,指向下一条指令的第一个字节,所以作基址寄存器时值已经是原PC加1。,图3-2 MOVC
21、 A,A+DPTR指令的执行功能,3.3.5 堆栈操作指令 MCS-51系列单片机内部RAM中设定的一个遵循“先进后出,后进先出”原则的区域被称为堆栈,在SFR中有一个堆栈指针(8位寄存器),它指向堆栈的栈顶。堆栈技术在 CPU响应中断、调用子程序、中断嵌套或子程序嵌套时用于保存断点和现场数据。MCS-51系列单片机的堆栈是向上增长的,栈底固定,栈顶浮动。有入栈(PUSH指令)和出栈(POP指令)两种操作。入栈操作的过程是:先将堆栈指针自动加1,然后数据压入堆栈;出栈操作与此相反,先从堆栈中将数据弹出,送给direct单元,然后指针自动减1。无论是入栈操作还是出栈操作,其操作对象只能是用dir
22、ect形式表示的内部数据存储空间地址(00H7FH)或某个特殊功能寄存器。MCS-51系列单片机堆栈操作指令见表3-10。(见教材P53页),3.4.1 加法指令 1.不带进位加法指令 这组指令完成两个8位二进制数的相加运算,结果存放在累加器A中。它们的操作数可以是有符号数也可以是无符号数。无符号的操作数以真值的绝对值形式给出,有符号的操作数以真值的补码形式给出。其指令格式见表3-11。(见教材P54页)说明:(1)在运算过程中,两个操作数是无符号数还是有符号数,是由程序员事先约定的,计算机总是按照二进制补码的规则完成相应的运算。,3.4 算术运算指令,(2)Cy的值反映的是将两操作数作为无符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理与接口技术 单片机 原理 接口 技术 MCS51 指令系统 课件

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