单片机学习第三章指令系统.PPT
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《单片机学习第三章指令系统.PPT》由会员分享,可在线阅读,更多相关《单片机学习第三章指令系统.PPT(100页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机学习第三章指令系统 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望高级语言高级语言:3.1 3.1 指令的格式及寻址方式指令的格式及寻址方式 一、汇编语言程序设计的意义一、汇编语言程序设计的意义什么是程序?什么是程序?完成某项特定任务的指令的集合。完成某项特定任务的指令的集合。计算机按程序一条一条地依次执行指令,从而完成指定任务。计算机按程序一条一条地依次执行指令,从而完成指定任务。要让计算机完成各项任务,就应设计各种程序。要让计算机完成各项任务,就应设计各
2、种程序。汇编语言汇编语言:机器语言机器语言:程序设计语言:程序设计语言:用二进制代码表示指令和数据。用二进制代码表示指令和数据。用助记符表示指令操作功能,用标号表示操作对象。用助记符表示指令操作功能,用标号表示操作对象。独立于机器独立于机器,面向过程面向过程,接近自然语言和数学表达式接近自然语言和数学表达式.汇编语言程序的每一条语句都与计算机的某一条指令对应,所汇编语言程序的每一条语句都与计算机的某一条指令对应,所以必需熟悉指令系统。以必需熟悉指令系统。指令指令=操作码操作码+操作数操作数操作码操作码表示了该指令所能执行的操作功能。表示了该指令所能执行的操作功能。操作数操作数表示参加操作的数的
3、本身或操作数所在的地址。表示参加操作的数的本身或操作数所在的地址。二、二、MCS-51指令格式:指令格式:标号:标号:操作码助记符操作码助记符 操作数操作数;注释;注释标号是程序员根据编程需要给指令设定的符号地址,可标号是程序员根据编程需要给指令设定的符号地址,可有可无;标号由有可无;标号由18个字符组成,第一个字符必须是英文字,个字符组成,第一个字符必须是英文字,不能是数字或其它符号;标号后必须用冒号。不能是数字或其它符号;标号后必须用冒号。操操作作码码表表示示指指令令的的操操作作种种类类,如如MOV表表示示数数据据传传送送操操作,作,ADD表示加法操作等。表示加法操作等。操操作作数数或或操
4、操作作数数地地址址表表示示参参加加运运算算的的数数据据或或数数据据的的有有效效地地址址。操操作作数数一一般般有有以以下下几几种种形形式式:没没有有操操作作数数项项,操操作作数数隐隐含含在在操操作作码码中中,如如RET指指令令;只只有有一一个个操操作作数数,如如CPLA指指令令;有有两两个个操操作作数数,如如MOVA,#00H指指令令,操操作作数数 之之 间间 以以 逗逗 号号 相相 隔隔;有有 三三 个个 操操 作作 数数,如如 CJNE A,#00H,NEXT指令,操作数之间也以逗号相隔。指令,操作数之间也以逗号相隔。注释是对指令的解释说明,用以提高程序的可读性;注释是对指令的解释说明,用以
5、提高程序的可读性;注释前必须加分号。注释前必须加分号。MCS-51MCS-51系列单片机的指令系统简介系列单片机的指令系统简介111111条条指令,共分指令,共分五大类五大类:数据传送类;(数据传送类;(29条)条)算术运算类;(算术运算类;(24条)条)逻辑运算类;(逻辑运算类;(24条)条)控制转移类;(控制转移类;(17条)条)位操作类。(位操作类。(17条)条)指令中操作数的描述符号指令中操作数的描述符号:Rn工作寄存器工作寄存器R0R7Ri间接寻址寄存器间接寻址寄存器R0、R1Direct直接地址,包括内部直接地址,包括内部128BRAM单元地址、单元地址、26个个SFR地址。地址。
6、#data8位常数位常数#data1616位常数位常数addr1616位目的地址位目的地址addr1111位目的地址位目的地址rel8位带符号的偏移地址位带符号的偏移地址DPTR16位外部数据指针寄存器位外部数据指针寄存器bit可直接位寻址的位可直接位寻址的位A累加器累加器B寄存器寄存器BC进、借位标志位,或位累加器进、借位标志位,或位累加器间接寄存器或基址寄存器的前缀间接寄存器或基址寄存器的前缀/指定位求反指定位求反(x)x中的内容中的内容(x)x中的地址中的内容中的地址中的内容(间接寻址中的内容)间接寻址中的内容)当前指令存放的地址当前指令存放的地址三、寻址方式三、寻址方式寻找操作数存放单
7、元的地址的方式,寻找操作数存放单元的地址的方式,共共7种方式。种方式。1、立即数寻址、立即数寻址所要找的操作数是一二进制数或十进制数,出现在指令所要找的操作数是一二进制数或十进制数,出现在指令中,用中,用“#”作前缀作前缀MOVA,#3AH2、寄存器寻址寄存器寻址操作数存放在工作寄存器操作数存放在工作寄存器R0R7中,或寄存器中,或寄存器B中。中。MOVR1,A3、直接寻址直接寻址指令中直接给出操作数的地址。指令中直接给出操作数的地址。MOVA,3AHMOV30H,DPH图3.1立即数寻址示意图MovA,#3AH图3.2寄存器寻址示意图MovR1,A图3.3直接寻址示意图MovA,3AHMOV
8、3AH,#65HMOVR0,#3AHMOVA,R04、寄存器间接寻址、寄存器间接寻址指令中寄存器的内容作为操作数存放的地址,指令中寄存器的内容作为操作数存放的地址,该地址里面的内该地址里面的内容才是操作数容才是操作数,在工作上间接寻址寄存器前用,在工作上间接寻址寄存器前用“”表示前缀。表示前缀。例如例如:5、变址寻址、变址寻址操作数地址操作数地址=变地址变地址+基地址基地址基地址寄存器基地址寄存器DPTR或或PC变址寄存器变址寄存器A该寻址方式常用于访问程序存储器,查表。该寻址方式常用于访问程序存储器,查表。如如MOVCA,A+DPTRMOVCA,A+PC图3.5变址寻址示意图MOVCA,A+
9、DPTR6、相对寻址相对寻址把指令中给定的地址偏移量与本指令所在单元地址(把指令中给定的地址偏移量与本指令所在单元地址(PC内容)内容)相加得到真正有效的操作数所存放的地址。相加得到真正有效的操作数所存放的地址。例如例如“李同学李同学20岁,张同学比李同学大岁,张同学比李同学大3岁,问张同学多少岁?岁,问张同学多少岁?”这就是一个相对寻年龄的问题,而相对寻址与此类似。这就是一个相对寻年龄的问题,而相对寻址与此类似。如如JC60H;设(设(PC)=2000H为基址,相对偏移量为为基址,相对偏移量为60H;则当则当C=1时,时,转移的目的地址转移的目的地址=20002000H H+2+60H 7.
10、位寻址位寻址位位寻寻址址是是指指按按位位进进行行的的寻寻址址操操作作,而而上上述述介介绍绍的的指指令令都都是是按按字字节节进进行行的的寻寻址址操操作作。MCS-51单单片片机机中中,操操作作数数不不仅仅可可以以按按字字节节为为单单位位进进行行操操作作,也也可可以以按按位位进进行行操操作作。当当我我们把某一位作为操作数时,这个操作数的地址称为位地址。们把某一位作为操作数时,这个操作数的地址称为位地址。位寻址区包括专门安排在内部位寻址区包括专门安排在内部RAM中的两个区域:中的两个区域:一是一是内部内部RAM的位寻址区,地址范围是的位寻址区,地址范围是20H2FH,共共16个个RAM单元,位地址为
11、单元,位地址为00H7FH;二是特殊功能寄存器二是特殊功能寄存器SFR中有中有11个寄存器可以位寻址个寄存器可以位寻址,参见有关章节中位地址定义。,参见有关章节中位地址定义。图3.6位寻址示意图SETB3DH设内部设内部RAM27H单元的单元的内容是内容是00H,执行执行SETB3DH后,由于后,由于3DH对应对应内部内部RAM27H的第的第5位,位,因此该位变为因此该位变为1,也就是,也就是27H单元的内容变为单元的内容变为20H。该指令的执行过程如图该指令的执行过程如图3.6所示。所示。巩固新课:巩固新课:1、汇编语言有何种特点?指令格式?、汇编语言有何种特点?指令格式?2、MCS51系列
12、机共有多少条指令?分几类?系列机共有多少条指令?分几类?3、MCS51系列汇编语言指令有几种寻址方式?系列汇编语言指令有几种寻址方式?33.2 2.1.1 数据传送类指令数据传送类指令数据传送指令是数据传送指令是MCS-51单片机汇编语言程序设计中单片机汇编语言程序设计中使用最频繁的指令,包括内部使用最频繁的指令,包括内部RAM、寄存器、外部寄存器、外部RAM以及程序存储器之间的数据传送。以及程序存储器之间的数据传送。数据传送操作是指把数据从源地址传送到目的地址,数据传送操作是指把数据从源地址传送到目的地址,源地址内容不变。源地址内容不变。数据目的地址目的地址源地址源地址3-2数据传送类指令数
13、据传送类指令一、内部一、内部RAM与与SFR数据传送类数据传送类1、一般数据传送指令片外片外程序程序存储器存储器ROMEPROM特殊功能特殊功能寄存器寄存器SFR片内片内RAM128字节字节片外片外数据数据存储器存储器RAMMOVCMOVXMOVPUSHPOPXCHXCHD回忆前述操作数描述符:回忆前述操作数描述符:A,direct,Rn,Ri,#data,DPTR等。等。经排列组合可写出下列指令:经排列组合可写出下列指令:MOVA,Rn;(;(A)(Rn)以下类似。以下类似。MOVA,directMOVA,RiMOVA,#dataMOVRn,AMOVRn,directMOVRn,#data以
14、累加器以累加器A A为目标操作数的指令;为目标操作数的指令;以寄存器以寄存器RnRn为目标操作数的指令;为目标操作数的指令;MOVdirect,RnMOVdirect,directMOVdirect,RiMOVdirect,#dataMOVRi,AMOVRi,directMOVRi,#dataMOVDPTR,#data16;唯一的唯一的16位数据传送指令。位数据传送指令。上述指令不影响任何标志位,但上述指令不影响任何标志位,但PSW的的P位除外。位除外。(direct)(A)MOVdirect,A;以以DirectDirect为目标操作数的指令;为目标操作数的指令;以间接地址为目标操作数的指令
15、;以间接地址为目标操作数的指令;上述指令不影响任何标志位,但上述指令不影响任何标志位,但PSW的的P位除外。位除外。注意:注意:MOVRn,RnMOVRi,RiMOVRn,RiMOV#data,A等等等指令是非法指令。等指令是非法指令。哇!好容易出错啊!教材例题【例例3.93.9】若(若(R1R1)21H21H,(,(21H21H)55H55H,执行指令,执行指令MOV AMOV A,R1R1后的结果为:后的结果为:(A A)=55H=55H,而,而R1R1的内容和的内容和21H21H单元的内容均单元的内容均不变不变(keil(keil软件上运行软件上运行)【例例3.123.12】若(若(R1
16、R1)30H30H,(,(30H30H)22H22H,(A A)34H34H,执行指令,执行指令MOV R1MOV R1,A A后的结果为:后的结果为:(30H30H)34H34H,R1R1和和A A当中的内容不变。当中的内容不变。课堂练习题1 1、若、若(R1)=30H,(A)=40H,R1)=30H,(A)=40H,(30H)=60H,(40H)=08H,(30H)=60H,(40H)=08H,试分试分析执行下列程序段后上述各析执行下列程序段后上述各单元内容的变化。单元内容的变化。MOV A,R1MOV A,R1MOV R1,40HMOV R1,40HMOV 40H,AMOV 40H,AM
17、OV R1,#7FHMOV R1,#7FH2 2、若(、若(5050H H)=40H,=40H,问执问执行以下程序段后各个寄存行以下程序段后各个寄存器和内部器和内部RAM40HRAM40H、41H41H、42H42H单元中的内容各为多单元中的内容各为多少?少?ORG ORG 00H 00H MOV A,50HMOV A,50HMOV R0,AMOV R0,AMOV A,#00HMOV A,#00HMOV R0,AMOV R0,AMOV A,#3BHMOV A,#3BHMOV 41H,AMOV 41H,AMOV 42H,41HMOV 42H,41H用用keilkeil进行调试时,进行调试时,起始
18、地址为起始地址为00h00h二、二、累加器累加器A A与外部与外部RAMRAM数据传送数据传送MOVXA,RiMOVXA,DPTRMOVXRi,AMOVXDPTR,A执行过程中会使执行过程中会使/WR、/RD有效。有效。【例例3.15】把外部数据存储器把外部数据存储器2040H单单元的内容送入内部寄存器元的内容送入内部寄存器R2中。中。MOV DPTR,#2040HMOVX A,DPTRMOV R2,A例例1:1:将内部将内部RAM50HRAM50H的内容传送到外部的内容传送到外部RAM40HRAM40H中。中。解解:MOV A,50HMOV A,50H MOV R0,#40H MOV R0,
19、#40H MOVX R0,A MOVX R0,A例例2、试编写一程序段,实现将外、试编写一程序段,实现将外RAM 0FAH单元中的内容传送到外单元中的内容传送到外RAM 14FFH单元中。单元中。解:解:MOV R0,#0FAH MOVX A,R0 MOV DPTR,#14FFH MOVX DPTR,A 三三 查表指令(累加器查表指令(累加器A A与与ROM之间的数据传送)之间的数据传送)MOVCA,A+DPTRMOVCA,A+PC【例例3.163.16】设设A=35HA=35H,执行,执行1000H1000H:MOVC AMOVC A,A+PCA+PC指令后的结果:指令后的结果:首先把累加器
20、首先把累加器A A中的内容加上本条指令执行后的中的内容加上本条指令执行后的PCPC值值1001H1001H,然后将程序存储器,然后将程序存储器1036H1036H单元的内容单元的内容送入累加器送入累加器A A中,即,中,即,AA(1036H1036H)ROMROM。【例例3.19】把程序存储器把程序存储器0150H单元的内单元的内容取出送到外部容取出送到外部RAM1070H单元中。单元中。MOV DPTR,#0150HMOV A,#00HMOVC A,ADPTRMOV DPTR,#1070HMOVX DPTR,A例例3 3、设(、设(A A)=一个十进制常数(一个十进制常数(0 09 9),试
21、),试用查表法获得其相应的用查表法获得其相应的ASCIIASCII码。码。解法解法I:MOVDPTR,#1000HMOVCA,A+DPTR(1000H)TAB:DB30HDB31HDB32H,33H,34H,35H解法解法II:MOVC A,A+PC TAB:DB 30H,31H,32H,33H DB 34H,35H,36H,37H 四四 字节交换指令字节交换指令XCHA,RnXCHA,direct;整字节交换;整字节交换XCHA,Ri低半字节交换低半字节交换XCHDA,Ri;SWAPA;半字节交换半字节交换注意:只能是累加器注意:只能是累加器A A中内容和其他源操作数中内容和其他源操作数内容
22、交换。不影响任何内容交换。不影响任何标志位。标志位。【例例3.20】若(若(A)7AH,(,(R1)45H,(45H)39H,执行指令,执行指令XCH A,R1后的结果:后的结果:(A)45H,(,(R1)7AH;若(若(A)7AH,(,(R1)45H(45H)39H执行指令执行指令XCH A,R1后的结果:后的结果:(A)39H,(,(45H)7AH,(,(R1)45H【例例3.21】设设A=59H,R0=45H,(45H)=7AH,执行指令,执行指令XCHD A,R0结结果:果:A=5AH,R0=45H(不变),(不变),(45H)=79H五五堆栈操作指令堆栈操作指令PUSHdirectP
23、OPdirect不影响任何标志位。不影响任何标志位。例例5、设(、设(SP)=36H,(,(DPTR)=0123H,分析:分析:执行执行PUSHDPLPUSHDPH后,各单元中的内容。后,各单元中的内容。内内RAMRAM3636H H3737H H3838H HSPSP加加1 1再加再加1 1H H2323H H0101H HPOPdirect指令执行中,机器也自动进行两步操作:指令执行中,机器也自动进行两步操作:(1)()(direct)(SP)(2)()(SP)(SP)1例例6、设(、设(SP)=4BH,(,(4BH)=01H,(,(4AH)=23H执行执行POPDPHPOPDPL后,各单
24、元中的内容。后,各单元中的内容。内内RAMRAM4949H H4 4AHAH4 4BHBHSPSPH H2323H H0101H HSPSP减减1 1SPSP再减再减1 1DPHDPHDPLDPLDPTRDPTR结论:结论:1)PUSH与与POP操作过程刚好相反;操作过程刚好相反;2)进、出栈规则:先进后出,后进先出。进、出栈规则:先进后出,后进先出。应注意指令书写先后顺序;应注意指令书写先后顺序;3)可用于可用于“保护现场,恢复现场保护现场,恢复现场”。【例例3.23】设(设(30H)=51H,(,(40H)=6AH,将内部,将内部RAM的这两个单元的内容交换。的这两个单元的内容交换。PUS
25、H 30H ;30H单元的内容进栈单元的内容进栈PUSH 40H ;40H单元的内容进栈单元的内容进栈POP 30H ;将栈顶元素弹出,送入;将栈顶元素弹出,送入30H单单元元POP 40H ;再将下一个元素出栈,送入;再将下一个元素出栈,送入40H单元单元执行结果:(执行结果:(30H)=6AH,(,(40H)=51H。小结:小结:数据传送类指令有几种类型?数据传送类指令有几种类型?是否影响标志位?是否影响标志位?33.2.2.2.2 算术运算类指令算术运算类指令包括:加、包括:加、减、乘、除;加一、减一。减、乘、除;加一、减一。一、加法指令一、加法指令1、不带进位的加法:不带进位的加法:A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 学习 第三 指令系统
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内