单片机入门 必读 第二章.ppt
《单片机入门 必读 第二章.ppt》由会员分享,可在线阅读,更多相关《单片机入门 必读 第二章.ppt(120页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章:MCS-51单片机指令系统2.1 概述2.2 寻址方式 2.3 数据传送指令2.4 算逻运算和移位指令2.5 控制转移和位操作指令2.1:MCS-51指令系统的概述 MCS-51MCS-51共有共有111111条指令,指令的长度和执行时条指令,指令的长度和执行时间因不同的指令而各不相同。间因不同的指令而各不相同。2.1.1 2.1.1 指令格式指令格式2.1.22.1.2 指令的三种表示形式指令的三种表示形式2.1.3 2.1.3 指令的字节数指令的字节数2.1.42.1.4 指令的分类指令的分类继续2.1.1 指令格式:指令格式:既指令的结构形式。指令格式:既指令的结构形式。OPOP
2、DATADATA 或或 ADDRESSADDRESS操作码操作码操作数或操作数地址操作数或操作数地址由操作码和操作数(或操作数地址)构成指令的结构。举例:MOV A,#0FFH ADD A,R0返回指令的表示形式是识别指令的标志。指令的表示形式是识别指令的标志。1 1,二进制的表示形式:,二进制的表示形式:(以(以“累加器的内容累加器的内容+08H+08H”为例)为例)00100100B00100100B 操作码操作码 OP OP(加法)(加法)00001000B00001000B 操作数操作数DATADATA(08H08H)特点:特点:能被能被CPUCPU直接识别、运行的形式。也称机器码、汇
3、编语直接识别、运行的形式。也称机器码、汇编语 言的目标代码。言的目标代码。缺点:缺点:不便于阅读、记忆和调试修改。不便于阅读、记忆和调试修改。2.1.2 指令的三种表示形式:2 2,十六进制表示方式:,十六进制表示方式:它是对二进制形式的一种简化。它是对二进制形式的一种简化。00100100B00100100B 24H24H 00001000B00001000B 08H08H 在实验室等少数环境下,可以将这种形式作为输入程序在实验室等少数环境下,可以将这种形式作为输入程序的一种辅助手段。但是,这种形式的指令格式必须由对应的一种辅助手段。但是,这种形式的指令格式必须由对应的监控程序把它们翻译成二
4、进制的的监控程序把它们翻译成二进制的“机器码机器码”后存入程序后存入程序存储器并运行。存储器并运行。二进制表示的形式 十六进制表示的形式3 3,指令的,指令的“助记符助记符”方式(也称方式(也称“汇编格式汇编格式”):):00100100B00100100B 24H24H 00001000B00001000B 08H 08H ADDADD A A,#08H#08H 1 1,这是一种由,这是一种由英文单词英文单词或或字母字母、数字数字来表征指令功能的来表征指令功能的 形式。是一种便于阅读、书写和交流的表示形式。形式。是一种便于阅读、书写和交流的表示形式。2 2,这种,这种“汇编汇编”格式的指令必
5、须把它格式的指令必须把它“翻译翻译”为二进制为二进制形式形式 “机器码机器码”后才能为后才能为CPUCPU所识别和执行。所识别和执行。3 3,三种不同的表示方法适用于不同的场合。,三种不同的表示方法适用于不同的场合。本章内容都以汇编的形式介绍指令系统。本章内容都以汇编的形式介绍指令系统。二进制表示形式 十六进制表示 汇编格式返回2.1.3 指令的字节数 在在MCS-51MCS-51单片机的指令系统中,因指令操作码和操作数单片机的指令系统中,因指令操作码和操作数的不同,指令(在存储器中)长度也各不相同。的不同,指令(在存储器中)长度也各不相同。分为单字节、双字节和三字节。分为单字节、双字节和三字
6、节。单字节指令(单字节指令(4949条)条):分分无操作数无操作数、有操作数有操作数两种。两种。无操作数:无操作数:如如 INCINC DPTRDPTR 10100011B10100011B INC INC A A 00000100B 00000100B 【特点特点】:操作数隐含在操作码中。:操作数隐含在操作码中。含有含有操作数寄存器名称操作数寄存器名称的单字节指令:的单字节指令:如:如:MOVMOV A A,R0R0 1110111101000000B B MOVMOV A A,R1R1 1110111101001001B B 【特点特点】:寄存器名以三位数代码的形式在指令的后三位。:寄存器
7、名以三位数代码的形式在指令的后三位。双字节指令(双字节指令(4646条):条):指令的操作码和操作数各占一个字节。指令的操作码和操作数各占一个字节。如:如:MOVMOV A,#A,#datadata 01110100B 01110100B datadata 很明显:很明显:8 8位的操作数本身占据一个字节。位的操作数本身占据一个字节。程序存储器程序存储器0111010001110100datadatann+1movmov a,#dataa,#data双字节指令在程序存储器的存放示意图三字节指令(三字节指令(1616条):条):指令中的操作数为双字节。如:指令中的操作数为双字节。如:MOVMOV
8、 DPTR,#DPTR,#data16data16 1001000B,data15-8,data7-01001000B,data15-8,data7-0 或者:指令中分别包含或者:指令中分别包含1 1个字节的操作数和个字节的操作数和1 1个字节的操作个字节的操作数地址。如:数地址。如:MOVMOV direct,#datadirect,#data 举例:举例:MOV 20H,#0FFHMOV 20H,#0FFH 1001000010010000data15-8data15-8data8-0data8-0MOV dptr,#data16OP (75H)OP (75H)direct(20H)dir
9、ect(20H)data (FFH)data (FFH)MOV direct,#data三字节指令在存储器中存放的方式示意图指令的字节数与指令的运行时间指令的字节多是否意味着指令周期就长?指令的字节多是否意味着指令周期就长?指指 令令字节数字节数周期数周期数指令说明指令说明 MOV AMOV A,R0R01 11 1R0R0内容送累加器内容送累加器A AMOVMOV A A,#0FFH#0FFH2 21 1立即数立即数FFHFFH送送A AMOVMOV 20H20H,#30H#30H3 32 2立即数立即数30H30H送内存送内存20h20h单元单元MULMUL ABAB1 14 4乘法指令乘
10、法指令INCINC DPTRDPTR1 11 11616位寄存器位寄存器DPTRDPTR加一加一从表中可见,指令的字节数与指令周期不是对等的关系返回2.1.4 指令的分类 MCS-51MCS-51单片机的指令如果按功能划分可以分为五类:单片机的指令如果按功能划分可以分为五类:1,1,数据传送类指令:数据传送类指令:完成数据在单片机内部之间的传送。完成数据在单片机内部之间的传送。分为分为8 8位数和位数和1616位两种。除了奇偶位外,指令的执行对位两种。除了奇偶位外,指令的执行对 PSWPSW无影响。无影响。2,2,算术运算指令:算术运算指令:用于操作数之间的加、减、乘除运算。用于操作数之间的加
11、、减、乘除运算。【特点特点】:多数情况下:操作数之一在累加器:多数情况下:操作数之一在累加器A A中,结果中,结果也保留在也保留在A A中,运算结果要影响中,运算结果要影响PSWPSW(进位标志、奇偶和(进位标志、奇偶和溢出标志等)。溢出标志等)。3,3,逻辑操作逻辑操作和和循环移位指令:循环移位指令:操作数之间的逻辑加、逻辑操作数之间的逻辑加、逻辑与、取反和异或等操作。多数情况下一个操作数在与、取反和异或等操作。多数情况下一个操作数在A A中,中,结果也存于结果也存于A A。移位指令分为左移、右移和带进位和不带。移位指令分为左移、右移和带进位和不带进位几种情况。与算术类指令相比逻辑类指令基本
12、不影响进位几种情况。与算术类指令相比逻辑类指令基本不影响PSWPSW的内容。的内容。4,4,控制转移类指令:控制转移类指令:条件转移、无条件转移,调用和返回。条件转移、无条件转移,调用和返回。【特点特点】:通过修改程序指针:通过修改程序指针PCPC的内容,使的内容,使CPUCPU转到另一转到另一处执行,从而改变程序的流向。处执行,从而改变程序的流向。5 5,位操作指令:,位操作指令:位传送、位置位、位运算和位控制转移等位传送、位置位、位运算和位控制转移等操作。操作。【特点特点】:按位操作而不是按字节的操作。位控转移的判:按位操作而不是按字节的操作。位控转移的判断不是检测某一个字节而是对某一个位
13、进行检测并决定是断不是检测某一个字节而是对某一个位进行检测并决定是否进行程序转移。否进行程序转移。这类指令基本不影响这类指令基本不影响PSWPSW的内容。的内容。返回2.2 寻址方式在指令的操作数位置上,用于在指令的操作数位置上,用于表征、寻找操作数的方式表征、寻找操作数的方式定义定义为为“寻址方式寻址方式”。正确的理解、掌握寻址方式,是学习、使用指令的关键正确的理解、掌握寻址方式,是学习、使用指令的关键。在在MCS-51MCS-51单片机中,共使用了七种寻址方式。单片机中,共使用了七种寻址方式。它们分别是:它们分别是:1 1,寄存器寻址寄存器寻址 5 5,变址寻址变址寻址;2 2,直接寻址直
14、接寻址 6 6,相对寻址相对寻址;3 3,立即数立即数寻址寻址 7 7,位寻址位寻址。4 4,寄存器间接寻址寄存器间接寻址 继续2.2.1寄存器寻址当所需要的当所需要的操作数操作数在内部某一个寄存器在内部某一个寄存器RnRn中时,将此寄存器中时,将此寄存器名名RnRn直接写在指令的操作数的位置上。如:直接写在指令的操作数的位置上。如:MOVMOV A,A,R7R7 ;将寄存器;将寄存器R7R7中的内容送累加器中的内容送累加器A A中。中。MOV MOV 20H,20H,R0R0 ;将寄存器;将寄存器R0R0中的数据送内存中的数据送内存20H20H单元单元 INCINC R1 R1 ;将寄存器;
15、将寄存器R1R1中的内容加一中的内容加一 ADD A,ADD A,R3 R3 ;A A的内容与寄存器的内容与寄存器R3R3的内容相加送的内容相加送A A 寄存器寻址方式的指令大多是单字节指令。指令本身并不带寄存器寻址方式的指令大多是单字节指令。指令本身并不带有操数,而是含有存放操作数的有操数,而是含有存放操作数的寄存器的寄存器的3 3位代码。位代码。以以MOV MOV A,RnA,Rn为例,使用为例,使用R7R7寄存器,所以寄存器,所以rrrrrr=111,=111,既指令的机器码为:既指令的机器码为:0EFH0EFH1 1 1 0 1 r r r操作码寄存器代码返回E8HEFHMOV A,R
16、nMOV A,Rn2.2.2 直接寻址指令本身含有操作数的指令本身含有操作数的8 8位或位或1616位地址。既指令位地址。既指令直接直接给给出了操作数的地址。如:出了操作数的地址。如:MOVMOV A,A,30H30H ;将将RAM30HRAM30H单元内容送累加器单元内容送累加器 这里这里30H30H是操作数在是操作数在RAMRAM中的地址。中的地址。很明显,直接寻址的指令长度是两个或三个字节。很明显,直接寻址的指令长度是两个或三个字节。程序程序ROMROMOPOP30H30H数据数据RAMRAM操作数操作数x xnn+130H累加器A直接寻址示意图使用直接寻址应注意的三个问题:1,1,指令
17、助记符中指令助记符中directdirect是用是用1616进制数表示的操作数地址。进制数表示的操作数地址。当地址恰好在当地址恰好在SFRSFR区域时区域时,指令也可以用寄存器名来表示。指令也可以用寄存器名来表示。如:如:MOVMOV A,80HA,80H 可以写成可以写成 MOVMOV A,P0A,P0 后者用后者用SFRSFR中寄存器的名字取代它的物理地址中寄存器的名字取代它的物理地址80H80H。很明显,后者更容易阅读和交流,很明显,后者更容易阅读和交流,所以我们提倡使用所以我们提倡使用SFRSFR中寄存器名称来代替直接地址中寄存器名称来代替直接地址。如:如:MOVMOV A,SBUFA
18、,SBUF ;串口数据缓冲器数据送;串口数据缓冲器数据送A A MOV MOV IE,#00HIE,#00H ;初始化中断允许寄存器;初始化中断允许寄存器 MOV TH1,#0FEHMOV TH1,#0FEH ;为定时器;为定时器1 1赋初值赋初值 尽管使用尽管使用SFRSFR的寄存器名称来取代直接地址,可以带的寄存器名称来取代直接地址,可以带来程序的可读性,但是在汇编时,仍要将寄存器名字转换来程序的可读性,但是在汇编时,仍要将寄存器名字转换为直接地址。为直接地址。2,2,当直接地址时在工作寄存器区中时,可以使用两种寻址当直接地址时在工作寄存器区中时,可以使用两种寻址方式来访问。方式来访问。如
19、:如:MOVMOV A,00HA,00H ;将;将RAMRAM中中00H00H单元数据送累加器单元数据送累加器A A MOVMOV A,R0A,R0 ;将工作寄存器;将工作寄存器R0R0的内容送累加器的内容送累加器A A 这里使用了不同的寻址方式,其指令的结构也不相同。这里使用了不同的寻址方式,其指令的结构也不相同。前者是:前者是:11100101(0E5H)11100101(0E5H)、0000000000000000(00H00H)双字节。双字节。后者的机器码是:后者的机器码是:11101000(0E8H)11101000(0E8H)单字节单字节;在物理结构上,在物理结构上,R0R0与与R
20、AMRAM的的00H00H单元恰好是同一单元,单元恰好是同一单元,所以不同的指令而执行结果是一样的。所以不同的指令而执行结果是一样的。类似的还有累加器类似的还有累加器A A:INCINC A A 寄存器寻址方式(单字节);寄存器寻址方式(单字节);INCINC ACCACC 直接寻址方式(双字节);直接寻址方式(双字节);INCINC 0E0H0E0H 直接寻址方式(双字节)。直接寻址方式(双字节)。3,3,在指令系统中:在指令系统中:字节地址字节地址与与位地址位地址是完全不同的概念。是完全不同的概念。前者用前者用directdirect表示,而后者用表示,而后者用bit bit 表示,但在指
21、令中都是用表示,但在指令中都是用1616进制表示的数。进制表示的数。如:如:MOV A,20HMOV A,20H ;将;将RAMRAM的的20H20H单元内容送单元内容送A A MOVMOV C,20HC,20H ;将位寻址区中的位地址为;将位寻址区中的位地址为20H20H位内容送位内容送 PSWPSW 中的中的CyCy中。中。片内 RAM(20H-2FH)中的位寻址区结构图7F7F7E7E7D7D7C7C7B7B7A7A79797878777776767575747473737272717170706F6F6E6E6D6D6C6C6B6B6A6A69696868676766666565646
22、463636262616160605F5F5E5E5D5D5C5C5B5B5A5A59595858575756565555545453535252515150504F4F4E4E4D4D4C4C4B4B4A4A49494848474746464545444443434242414140403F3F3E3E3D3D3C3C3B3B3A3A39393838373726262525242423232222212120202F2F2E2E2D2D2C2C2B2B2A2A29292828272726262525242423232222212120201F1F1E1E1D1D1C1C1B1B1A1A191
23、91818171716161515141413131212111110100F0F0E0E0D0D0C0C0B0B0A0A09090808070706060505040403030202010100002FH20H字节地址返回24H位地址返回前一次2.2.3立即寻址指令本身直接含有所需要的指令本身直接含有所需要的8 8位或位或1616位的操作数。位的操作数。将此数称为将此数称为“立即数立即数”(使用(使用#标明)。如:标明)。如:MOVMOV A,#30HA,#30H ;将(;将(8 8位)立即数送累加器位)立即数送累加器A A MOVMOV DPTR,#2000HDPTR,#2000H ;1
24、616位立即数送位立即数送DPTRDPTR积存器积存器 【注意注意】:MOVMOV A,#30HA,#30H MOVMOV A,30HA,30H 两者的区别。两者的区别。立即数寻址的指令长度为立即数寻址的指令长度为2 2或或3 3个字节。个字节。74H74H30H30Hnn+1ROM累加器AMOV A,#30H 指令执行流程90H90H20H20H00H00HROMDPTRMOV DPTR,#2000H指令的存储和执行返回2.2.4 寄存器间接寻址指令中含有指令中含有保存操作数地址的保存操作数地址的寄存器寄存器RiRi。MOVMOV A,RiA,Ri (i=0 (i=0、1)1)CPUCPU首
25、先根据指令中寄存器名首先根据指令中寄存器名RiRi找到操作数地址,然后再找到操作数地址,然后再从该地址中找到操作数从该地址中找到操作数 x x。如:如:MOVMOV R0,#30HR0,#30H ;立即数送;立即数送R0R0寄存器寄存器 MOVMOV A,R0A,R0 ;从;从RAMRAM的的H H单元取数送累加器单元取数送累加器A A【注意注意】MOV A,R0MOV A,R0 和和 MOV A,R0MOV A,R0 指令的区别。指令的区别。ROMROM111001111100110 0RAMRAMx x30H30H30HR000H累加器A123使用寄存器间址指令时应注意的三个问题:1,1,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机入门 必读 第二章 单片机 入门 第二
限制150内