版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 【主要内容主要内容】 1.掌握单片机源操作数和目的操作数的寻址方式,指令格式操作码和操作数,数据传送指令、算术运算类指令、逻辑运算及位移指令、控制转移类指令等指令系统。 2.熟悉指令描述符号,入栈和出栈操作。 3.了解十进制调整指令和空操作指令。 【重点与难点重点与难点】 1.重点:指令格式和指令系统 2.难点:源操作数和目的操作数的寻址方式第第3章章 MCS-51的指令系统和汇编语言程序设计的指令系统和汇编语言程序设计2021-11-20嵌入式应用基础嵌入式应用基础2 MCS-51MCS-51的的7 7种寻址方式种寻址方式. .寻址方式,是学习指令寻址方式,是学习指令的前提。的前提。 MC
2、S-51 MCS-51有有111111条指令,其中条指令,其中4949条单字节指令条单字节指令,4545条双字节指令条双字节指令,1717条三字节指令条三字节指令;按运算速度分类,;按运算速度分类,有有6464条单周期条单周期指令,指令,4545条双周期条双周期指令,指令,2 2条四周期条四周期指指令。令。 2021-11-20嵌入式应用基础嵌入式应用基础3指令指令: :是规定计算机是规定计算机进行操作进行操作的的命令命令。指令系统指令系统: :计算机计算机能够执行能够执行的各种指令的的各种指令的集合集合。MCS-51MCS-51指令系统是最普遍的。指令系统是最普遍的。 机器指令与汇编语言指令
3、机器指令与汇编语言指令机器指令机器指令: :以以二进制代码二进制代码表达表达, ,能直接被计算机能直接被计算机所所识别识别和和执行执行。指令由指令由操作码操作码和和操作数操作数两部分组成。两部分组成。3.1MCS-51单片机的指令系统单片机的指令系统2021-11-20嵌入式应用基础嵌入式应用基础4机器指令机器指令难以被人们难以被人们理解理解、记忆记忆与与使用使用汇编语言指令汇编语言指令: :用便于用便于记忆记忆与与理解理解的的助记符助记符和和符符号地址号地址来表达的来表达的指令指令。指令的表示形式。指令的表示形式。 两部分组成,即两部分组成,即操作码操作码和和操作数操作数。 操作码操作码:
4、:规定指令进行什么操作规定指令进行什么操作操作数操作数: :指令操作的对象指令操作的对象2021-11-20嵌入式应用基础嵌入式应用基础5使使P1.0P1.0清零的汇编语言指令如表中第清零的汇编语言指令如表中第2 2列第列第2 2行行所示所示, ,其中助记符其中助记符CLRCLR(clearclear缩写)就是操作码缩写)就是操作码, ,P1.0P1.0就是符号地址。就是符号地址。 汇编语言指令与机器指令之汇编语言指令与机器指令之间有间有一一对应一一对应的关系。的关系。2021-11-20嵌入式应用基础嵌入式应用基础6指令由指令由操作码操作码和和操作数操作数组成组成, ,操作数是操作数是可选项
5、可选项, ,还有还有源源、目目之分之分, ,指令格式举例:指令格式举例:操作码操作码 目的操作数目的操作数, , 源操作数源操作数 MOV MOV A,A,#30H#30H操作码操作码: :由由MCS-51MCS-51关键字表示的关键字表示的字符串字符串, ,用来用来指指示指令的操作功能示指令的操作功能。操作码操作码与与操作数操作数之间必须用之间必须用空格空格分隔。分隔。2021-11-20嵌入式应用基础嵌入式应用基础7操作数操作数: :指示参加指示参加指令操作指令操作的的数据数据或或数据的地址数据的地址, ,与与操作码操作码一起确定了指令所要执行的一起确定了指令所要执行的具体操作具体操作。操
6、作数如果有操作数如果有2 2个个或或多个多个, ,则操作数之间必须用则操作数之间必须用逗号逗号分隔。操作数可以是分隔。操作数可以是寄存器名寄存器名、常数常数、标号名标号名;还可是还可是表达式表达式, ,如如ADD AADD A, ,a a+1+1; ;也可用也可用PCPC的当前值的当前值“$ $”, ,如如SJMP $SJMP $。2021-11-20嵌入式应用基础嵌入式应用基础8指令系统中所用符号的说明指令系统中所用符号的说明1.Rn1.Rn:工作寄存器:工作寄存器n n为为0-70-72.#data2.#data:8 8位立即数,范围位立即数,范围00H-FFH00H-FFH3.Direc
7、t3.Direct:8 8位位直接地址直接地址,也可以为,也可以为SFRSFR中中的一个的一个4.Ri4.Ri:表示寄存器间接寻址,:表示寄存器间接寻址,i=0i=0、1 15.#data165.#data16:1616位立即数位立即数6.DPTR6.DPTR:表示以:表示以DPTRDPTR为数据指针的间接寻址为数据指针的间接寻址7.Bit7.Bit:位寻址:位寻址指令系统标识符指令系统标识符98.addr118.addr11、addr16addr16:1111、1616位目标地址位目标地址9.Rel9.Rel:8 8位带符号地址偏移量位带符号地址偏移量10.$:10.$:当前当前指令指令的的
8、地址地址P84P84 2021-11-20嵌入式应用基础嵌入式应用基础10指令的分类指令的分类1.1.数据传送指令(数据传送指令(2828) 主要用于主要用于单片机片内单片机片内RAMRAM和和特殊功能寄存器特殊功能寄存器SFRSFR之之间的间的数据数据传送,也可在传送,也可在片内片内和和片外片外的存储单元中传送,的存储单元中传送,传送结束后传送结束后源地址源地址的的操作数操作数不被破坏,不被破坏,数值数值不变。不变。2.2.算术运算指令(算术运算指令(2424) 用于对用于对两个操作数两个操作数进行进行加加、减减、乘乘、除除等算术运等算术运算。结果放在算。结果放在A A里面。里面。2021-
9、11-20嵌入式应用基础嵌入式应用基础113.3.逻辑操作和环移指令(逻辑操作和环移指令(2525) 逻辑操作逻辑操作结果结果也放在也放在累加器累加器A A中,环移是对中,环移是对A A中数中数进行操作,有进行操作,有左右左右和和是否带进位(是否带进位(CFCF)之分。之分。4.4.控制转移指令(控制转移指令(1717)分为分为条件转移条件转移,无条件转移无条件转移,调用调用和和返回返回等。等。目的:改变程序执行的流向目的:改变程序执行的流向。实现方法:实现方法:通过通过改变改变程序计数器程序计数器PCPC中的中的值值。2021-11-20嵌入式应用基础嵌入式应用基础12 5. 5.位操作指令
10、(位操作指令(1717)布尔变量操作指令,分为布尔变量操作指令,分为位传送位传送、位置位位置位、位位运算运算和和位控制转移位控制转移指令指令四类四类。通过通过对字节当中的某一位对字节当中的某一位来进行来进行相应相应的的操作操作。2021-11-20嵌入式应用基础嵌入式应用基础13寻址方式寻址方式寻址方式寻址方式: :寻找寻找操作数地址操作数地址的方式。寻址方式越的方式。寻址方式越丰富丰富,CPUCPU的功能就的功能就越强越强, ,灵活性就灵活性就越大越大。MCS-51MCS-51单片机的指令系统中单片机的指令系统中, ,设有设有7 7种种寻址方式寻址方式, ,在同一条指令中的在同一条指令中的源
11、源、目操作数目操作数, ,可能有不同的可能有不同的寻址寻址方式方式, ,下面以源操作数寻址方式为例来加以阐述。下面以源操作数寻址方式为例来加以阐述。2021-11-20嵌入式应用基础嵌入式应用基础14立即寻址立即寻址是指是指参加运算的操作数参加运算的操作数已经在指令中已经在指令中直接给出直接给出, ,这种形式的这种形式的操作数操作数称为称为立即数立即数。立即数要。立即数要前缀前缀“# #”, ,以区别以区别直接地址直接地址。立即寻址一般为立即寻址一般为双字节指令双字节指令, ,如第如第1 1条指令条指令, ,操作操作码码7474占一个字节占一个字节, ,操作数操作数3030为为8 8位位立即数
12、立即数, ,也占一个字也占一个字节。节。1 1 立即寻址立即寻址2021-11-20嵌入式应用基础嵌入式应用基础15设内部设内部RAMRAM中中33H33H单元中内容为单元中内容为44H44H,34H34H单元中内单元中内容为容为0AFH0AFH,R0R0中内容为中内容为33H33H,R1R1中内容为中内容为00H00H,给出以,给出以下每一条指令执行后下每一条指令执行后A A中的值。中的值。MOV A, #34HMOV A, #34HMOV A, 34HMOV A, 34HMOV A, R1MOV A, R1( (将将R1R1中的内容给中的内容给A A,(,( R1R1 )()(A A))
13、)MOV A,R0 MOV A,R0 ( (间接地址的内容给间接地址的内容给A A ,( R0( R0 ) ) (A A)) )2021-11-20嵌入式应用基础嵌入式应用基础16直接寻址直接寻址是指是指指令中指令中直接给出直接给出操作数的地址操作数的地址, ,即即给出了给出了参加运算参加运算或或传送的数据传送的数据在内存单元的在内存单元的地址地址。直接地址只能用来表示直接地址只能用来表示片内片内RAMRAM、位地址空间位地址空间以以及及SFRSFR, ,位地址位地址与与SFRSFR只能用只能用直接寻址方式直接寻址方式来访问。来访问。寻址范围:寻址范围:(1) (1) 内部内部RAMRAM的的
14、128128个单元个单元 (2) (2) 特殊功能寄存器特殊功能寄存器。除了以。除了以单元地址单元地址的的形式外形式外, ,还可用还可用寄存器符号寄存器符号的形式给出。例如:的形式给出。例如: MOV AMOV A,80H80H 与与 MOV AMOV A,P0P0是等价的。是等价的。2 2 直接寻址直接寻址2021-11-20嵌入式应用基础嵌入式应用基础17第第1 1条指令是条指令是双字节指令双字节指令, ,设分别放在设分别放在ROMROM区区30H30H和和31H31H中。操作码中。操作码E5E5指示指示CPUCPU, ,按照下一字节单元中内按照下一字节单元中内容容4040为地址为地址,
15、, 把片内把片内RAMRAM单元单元40H40H中的中的内容内容送到送到累加器累加器A A中去中去, ,即即A(40H),A(40H),寻址过程如图寻址过程如图4.24.2(a a)。)。2021-11-20嵌入式应用基础嵌入式应用基础18第第2 2条指令设放在条指令设放在ROMROM区区30H30H和和31H31H单元中。操作单元中。操作码码A2A2指示指示CPU,CPU,按照下一字节中的内容按照下一字节中的内容4040为位地址为位地址, , 把把40H40H位单元中的内容送到位位单元中的内容送到位累加器累加器CYCY中中, ,即即CY(40H),CY(40H),位直接寻址过程如图(位直接寻
16、址过程如图(b b)。)。2021-11-20嵌入式应用基础嵌入式应用基础19第第3 3条指令的条指令的寻址过程寻址过程与第与第1 1条指令是条指令是类似的类似的, ,是是把把SFRSFR区中区中90H90H中的中的内容送累加器内容送累加器A A, ,即即A(90H)A(90H)。按表按表2-72-7可知可知90H90H是是P1P1口寄存器口寄存器的直接地址的直接地址, ,而而P1P1是其是其符号地址符号地址, ,所以第所以第3 3条指令也可以写成条指令也可以写成MOVMOVA A,P1P1直接寻址,三点注意事项直接寻址,三点注意事项1.1.指令含有指令含有SFRSFR中的某一个,可用物理地址
17、或者中的某一个,可用物理地址或者SFRSFR的名称符号的名称符号MOV A,MOV A,SPSPMOV A,MOV A,81H81H2021-11-20嵌入式应用基础嵌入式应用基础202.2.累加器具有累加器具有A A,ACCACC,E0HE0H三种表示形式,执行三种表示形式,执行的效果是一样的的效果是一样的INC AINC AINC ACCINC ACCINC 0E0HINC 0E0H3.3.指令系统中,字节地址和位地址是有区别的指令系统中,字节地址和位地址是有区别的。MOV A,20HMOV A,20HMOV C,20HMOV C,20H第一条指令将第一条指令将20H20H单元里面的数值传
18、给单元里面的数值传给A A,第二,第二条将条将20H20H位传送给位传送给CyCy位。位。2021-11-20嵌入式应用基础嵌入式应用基础21寄存器寻址寄存器寻址寄存器寻址寄存器寻址是指是指存放操作数的寄存器存放操作数的寄存器直接写在直接写在指令中指令中, ,寄存器寄存器包括选定的包括选定的R0R0R7R7、A A、B B、DPTRDPTR、CYCY、SPSP及其他及其他SFRSFR。MOV AMOV A,Rn Rn ;RnARnA,n=0n=07 7工作寄存器工作寄存器R0R0R7R7由指令码的低由指令码的低3 3位位000000111111来来编码编码,A,A、B B、DPTRDPTR以及
19、以及CYCY则则隐含隐含在指令码中在指令码中, ,因此寄存因此寄存器寻址也包含一种隐含寻址。器寻址也包含一种隐含寻址。2021-11-20嵌入式应用基础嵌入式应用基础22寄存器寻址举例寄存器寻址举例, ,指令码的二进制为指令码的二进制为11100001,11100001,低低3 3位位的的001001正好为正好为R1R1的的编码编码, ,指令的含义是把指令的含义是把R1R1中的中的内容送到累加器内容送到累加器A A中中, ,即即AR1AR1, , 寻址过程如图。寻址过程如图。2021-11-20嵌入式应用基础嵌入式应用基础23寻址范围:寻址范围:(1 1)4 4组通用组通用工作寄存区共工作寄存
20、区共3232个个工作寄存器。工作寄存器。(2 2)部分特殊功能寄存器)部分特殊功能寄存器,例如,例如A A、B B 以及数以及数据指针寄存器据指针寄存器DPTRDPTR等。等。例如:例如:已知已知R0=70HR0=70H, R7=25H R7=25H, DPTR=0300H DPTR=0300H 则则MOV MOV A A, R0 R0 ;AR0AR0INC INC DPTRDPTR ;DPTRDPTR+1DPTRDPTR+1ADDADDR7R7,#20H#20H ;R720H+R7R720H+R72021-11-20嵌入式应用基础嵌入式应用基础24寄存器间接寻址寄存器间接寻址是指操作数所指定
21、的是指操作数所指定的寄存器寄存器中中存放的存放的不是操作数本身不是操作数本身, ,而是而是操作数的地址操作数的地址。用作间。用作间址的寄存器为址的寄存器为RiRi和和DPTRDPTR, ,指令助记符中在寄存器名前指令助记符中在寄存器名前冠以冠以“ ”。当访问当访问片内片内RAMRAM低低128B128B, ,或或片外片外RAMRAM低低256B256B时时, ,用用8 8位地址指针位地址指针RiRi,i=0i=0或或1 1 寄存器间接寻址寄存器间接寻址2021-11-20嵌入式应用基础嵌入式应用基础25这条指令的机器码为这条指令的机器码为11100111110011 ,最后位的,最后位的0 0
22、与与1 1分别用来指定分别用来指定R0R0和和R1R1, ,设设R0=40H,(40H)=88H R0=40H,(40H)=88H 。 1 1、根据、根据指令码指令码的最后一位为的最后一位为0 0, ,先去访问先去访问R0R0 2 2、根据、根据R0R0中的中的内容内容, ,最终把最终把40H40H单元中的数单元中的数88H88H送到送到A A中去即中去即A(R0)A(R0)。2021-11-20嵌入式应用基础嵌入式应用基础26当访问当访问片外片外RAMRAM时时, ,用用1616位位地址指针地址指针DPTRDPTR, ,举举例例: :MOVX A,DPTRMOVX A,DPTR。这条指令的这
23、条指令的寻址过程寻址过程同上一条指令类似同上一条指令类似, ,指令的指令的执行结果执行结果是把是把DPTRDPTR中的中的内容为地址内容为地址的外部的外部RAMRAM单元单元中中的内容送到了的内容送到了累加器累加器A A中中, ,即即: :A(DPTR)A(DPTR)。注意注意:不能用寄存器间接寻址来访问特殊功能:不能用寄存器间接寻址来访问特殊功能寄存器。寄存器。2021-11-20嵌入式应用基础嵌入式应用基础27已知已知R0=40HR0=40H,内,内RAMRAM(40H40H)=50H=50H,外,外RAMRAM(40H40H)=60H=60H,DPTR=0300HDPTR=0300H则则
24、MOV MOV A A ,R0R0 ;AA内部内部RAMRAM(R0R0)MOVX MOVX A A,R0R0 ;AA外部外部RAMRAM(R0R0)MOVX MOVX DPTRDPTR,A A ;外部;外部RAM(DPTR)ARAM(DPTR)A设内部设内部RAM 30HRAM 30H单元中内容为单元中内容为52H52H,请给出以下,请给出以下程序结果:程序结果:MOV A, #30H ;MOV A, #30H ;MOV A, 30HMOV A, 30HMOV R0, #30H;MOV R0, #30H;MOV A, R0MOV A, R0MOV 30H, #30H;MOV 30H, #30
25、H;2021-11-20嵌入式应用基础嵌入式应用基础28基址寄存器基址寄存器加加变址寄存器变址寄存器间接间接寻址方式寻址方式-变址寻址变址寻址变址寻址变址寻址是指将是指将基址寄存器基址寄存器与与变址寄存器变址寄存器的内的内容容相加相加, ,把相加结果作为把相加结果作为操作数的地址操作数的地址。指令中把指令中把DPTRDPTR或或PCPC作为作为基址寄存器基址寄存器, ,累加器累加器 A A 作为变址寄存器。变址寻址主要用于作为变址寄存器。变址寻址主要用于查表操作查表操作。 变址寻址变址寻址2021-11-20嵌入式应用基础嵌入式应用基础29对于第对于第1 1条指令条指令, ,设设A=30HA=
26、30H, ,DPTR=0100HDPTR=0100H。CPUCPU取出指令码取出指令码93H93H后后, ,就会把就会把DPTRDPTR中的基本地址中的基本地址0100H0100H与与A A中中的的偏移量偏移量相加相加, ,得到真正的目的地址为得到真正的目的地址为0130H0130H;然后再到然后再到0130H0130H单元去访问单元去访问, ,把此单元中的内容把此单元中的内容送到累加器送到累加器A A中。中。2021-11-20嵌入式应用基础嵌入式应用基础30对于第对于第2 2条指令条指令, ,偏移量还是放在偏移量还是放在A A中中, ,基本地址基本地址换为当前的换为当前的PCPC值。值。注
27、意:注意:变址寻址只能在变址寻址只能在64KB64KB程序存储器程序存储器的范围的范围内寻址,但内寻址,但不能不能对对数据存储器数据存储器进行变址寻址。进行变址寻址。虽然变址寻址的虽然变址寻址的过程比较复杂过程比较复杂,但变址寻址的,但变址寻址的指令机器码指令机器码只有只有一个字节一个字节。2021-11-20嵌入式应用基础嵌入式应用基础31三个特点:三个特点:1.1.指令操作码内隐含有作为基地址寄存器用的指令操作码内隐含有作为基地址寄存器用的数据指针数据指针DPTRDPTR或或程序寄存器程序寄存器PCPC,其中,其中DPTRDPTR和和PCPC中预先中预先存放操作数的存放操作数的基地址基地址
28、。2.2.指令操作码内隐含有指令操作码内隐含有累加器累加器A A,A A中预先放有中预先放有被寻址操作数地址对基地址的被寻址操作数地址对基地址的偏移量偏移量,00H-FFH.00H-FFH.3.3.执行过程中,执行过程中,先先把把基地址(基地址(DPTRDPTR、PCPC)和地)和地址偏移量(址偏移量(A A)相加)相加,来形成操作数的,来形成操作数的物理地址物理地址。MOVC A,A+PCMOVC A,A+PCMOVC A,A+DPTRMOVC A,A+DPTR2021-11-20嵌入式应用基础嵌入式应用基础32例例3.1 3.1 已知片外已知片外ROMROM的的0302H0302H单元中有
29、一个常数单元中有一个常数X X,现欲把它取到累加器现欲把它取到累加器A A,编写程序。,编写程序。基地址基地址:03000300偏移量偏移量:02H02HMOV MOV DPTR ,#0300HDPTR ,#0300HMOV MOV A,#02HA,#02HMOVMOVC C A,A+DPTRA,A+DPTR例如:指令例如:指令 MOVC AMOVC A,A+DPTRA+DPTR 其中其中A A的原有内的原有内容为容为05H05H,DPTRDPTR的内容为的内容为0400H0400H,该指令执行的结果是,该指令执行的结果是把程序存储器把程序存储器04050405H H单元的内容传送给单元的内容
30、传送给A A。2021-11-20嵌入式应用基础嵌入式应用基础33注意注意以下几点:以下几点: (1 1)本寻址方式是本寻址方式是专门针对程序存储器专门针对程序存储器的寻址方式,的寻址方式,寻址范围可达到寻址范围可达到64KB64KB。 (2 2)程序执行之前要做程序执行之前要做准备工作准备工作。 (3 3)本寻址方式的指令只有本寻址方式的指令只有3 3条条:MOVC AMOVC A,A+DPTRA+DPTRMOVC AMOVC A,A+PCA+PCJMP A+DPTRJMP A+DPTR2021-11-20嵌入式应用基础嵌入式应用基础34相对寻址相对寻址MCS-51MCS-51的转移指令有的
31、转移指令有长转移长转移、短转移短转移和和相对转相对转移移之分之分, ,相对寻址相对寻址是用在是用在相对转移指令相对转移指令中的。中的。它将它将PCPC的的当前值当前值 与指令操作数部分所给出与指令操作数部分所给出的的相对偏移量相对偏移量relrel相加相加, ,其其结果结果作为跳转指令的作为跳转指令的转移地转移地址址或称或称目的地址目的地址 。当前PC2021-11-20嵌入式应用基础嵌入式应用基础35第第1 1条指令条指令SJMP 38HSJMP 38H, ,假设执行相对转移指令之假设执行相对转移指令之前前,PC,PC指向指令的起址指向指令的起址0030H0030H, ,称其为称其为 (或用
32、(或用“$ $”表示)。表示)。CPUCPU从从0030H0030H单元取出指令码单元取出指令码80H80H后,就会继续取后,就会继续取出下一字节中的出下一字节中的偏移量偏移量06H06H, ,这时这时PCPC已经指向了已经指向了0032H0032H, ,称其为称其为 ; ;接着接着, ,CPUCPU会将偏移量会将偏移量06H06H与基址与基址 相加相加, ,得到跳转的得到跳转的目的地址目的地址 为为0038H,0038H,并跳转到并跳转到0038H0038H单元去访问。单元去访问。源PC目PC当前PC当前PC2021-11-20嵌入式应用基础嵌入式应用基础36从可看到从可看到, ,在计算目的
33、地址时在计算目的地址时, ,人工算法人工算法与与机器机器算法算法跳转的起点是不一样的。跳转的起点是不一样的。CPUCPU是在取出是在取出2 2字节字节指令码后指令码后, ,以以 为为基址基址跳转到跳转到目的目的地址地址 去的;去的;当前PC目PC2021-11-20嵌入式应用基础嵌入式应用基础37人工是从人工是从跳转指令跳转指令的首址的首址 为跳转的起点为跳转的起点, ,两者差了两者差了跳转跳转指令本身所占的指令本身所占的字节数字节数InsbytInsbyt。(1 1)机器算法)机器算法 = + = + relrel(2 2)人工算法)人工算法 = + = + InsbytInsbyt(跳转指
34、令字(跳转指令字节数)节数)+ + relrel源PC目PC当前PC源PC目PC2021-11-20嵌入式应用基础嵌入式应用基础38这里要特别指出,这里要特别指出,对于对于SJMP RELSJMP REL以一般形式表以一般形式表达的达的相对转移指令相对转移指令, ,对对relrel的理解在的理解在汇编指令和机器指汇编指令和机器指令令中是有很大区别的。中是有很大区别的。relrel, ,无论是用无论是用1616进制地址进制地址, ,还是用还是用符号地址符号地址, ,都都不是不是相对偏移量相对偏移量, ,而是对应而是对应指令转移指令转移的的目的地址目的地址;在机器指令中在机器指令中, ,relre
35、l是相对偏移量是相对偏移量, ,是一个是一个8 8位的位的补码补码, ,其值范围为其值范围为-128-128+127+127;值是;值是正正的的, ,表示向地址表示向地址增加增加方向跳转方向跳转, , 值是值是负负的的, ,表示向地址表示向地址减少减少方向跳转。方向跳转。2021-11-20嵌入式应用基础嵌入式应用基础39 位寻址位寻址是指是指对位寻址空间对位寻址空间按按位位进行寻址的操作。进行寻址的操作。在需要进行位处理时在需要进行位处理时, ,借助于借助于进位位进位位CYCY作为位操作为位操作累加器作累加器, ,可对可对片内片内RAMRAM位寻址位寻址区和区和1111个可个可位寻址特殊位寻
36、址特殊功能寄存器功能寄存器的的位寻址位寻址单元进行单元进行操作操作。位寻址位寻址 2021-11-20嵌入式应用基础嵌入式应用基础40第第1 1条指令条指令MOV C,40HMOV C,40H中直接使用中直接使用位寻址空间位寻址空间中中的的位地址位地址40H40H,指令功能是将位寻址空间中位地址为,指令功能是将位寻址空间中位地址为40H40H中的内容送到进位标志中。中的内容送到进位标志中。位地址位地址也可用也可用符号地符号地址址来表示,如来表示,如RS1RS1、RS0RS0。2021-11-20嵌入式应用基础嵌入式应用基础41可可位寻址的位寻址的SFRSFR允许采用允许采用寄存器名加位数寄存器
37、名加位数的形式的形式来表示来表示位地址位地址。如可以分别用。如可以分别用PSW.4PSW.4和和PSW.3PSW.3来表示来表示RS1RS1和和RS0RS0, ,在单灯闪烁程序中用在单灯闪烁程序中用CLR P1.0CLR P1.0和和SETB P1.0,SETB P1.0,使使P1P1口的第口的第0 0位清零和置位清零和置1 1的。的。特殊功能寄存器中的可寻址位在指令中有特殊功能寄存器中的可寻址位在指令中有4 4种表种表示方法:示方法:a. a. 直接使用位地址直接使用位地址。例如。例如PSW.5PSW.5的位地址为的位地址为0D5H0D5H。P60P602021-11-20嵌入式应用基础嵌入
38、式应用基础42b. b. 位名称的表示方法位名称的表示方法。例如:。例如:PSW.5PSW.5是是F0F0标志标志位,可使用位,可使用F0F0表示该位。表示该位。c.c.单元地址加位数的表示方法单元地址加位数的表示方法。例如。例如 : :(0D0H).5(0D0H).5。d.d.特殊功能寄存器符号加位数的表示方法特殊功能寄存器符号加位数的表示方法。例。例如如:PSW.5:PSW.5。2021-11-20嵌入式应用基础嵌入式应用基础43例如:例如:SETB 10HSETB 10H;将;将10H10H位置位置1 1,其中,其中10H10H是直接使用位地址。是直接使用位地址。MOV MOV 22H.
39、022H.0,C C ;22H.022H.0进位位进位位C C P57P57(其中(其中22H.022H.0是内部是内部RAM22HRAM22H单元的第单元的第0 0位)位)ORL CORL C,PSW.0PSW.0;CCPSW.0CCPSW.0ANL CANL C,P P ; CCP CCP(其中(其中P P是是PSWPSW的第的第0 0位,是位符号地址)位,是位符号地址)2021-11-20嵌入式应用基础嵌入式应用基础44注意注意:MCS-51 :MCS-51 指令系统的各类指令系统的各类寻址方式寻址方式对应对应不不同的存储空间同的存储空间, ,在不同的存储区中应采用在不同的存储区中应采用
40、不同的寻址不同的寻址方式。方式。例:例: 指出各指令中源、目操作数的寻址方式。指出各指令中源、目操作数的寻址方式。2021-11-20嵌入式应用基础嵌入式应用基础45使用使用最频繁最频繁的一类指令,分为的一类指令,分为内部数据传送指内部数据传送指令令、外部数据传送指令外部数据传送指令、堆栈操作指令堆栈操作指令和和数据交换指数据交换指令令四类。四类。格式格式为:为:MOV MOV , MOV MOV ,属属“复制复制” ,而不是,而不是“搬家搬家” , ,源操作数源操作数里面里面的数值的数值不发生改变不发生改变。3.1.5 3.1.5 单片机指令功能单片机指令功能3.1.5.13.1.5.1数据
41、传送指令数据传送指令2021-11-20嵌入式应用基础嵌入式应用基础46在在2929条数据传送类指令中条数据传送类指令中, ,用到用到8 8种种助记符助记符MOVMOV、MOVXMOVX、MOVCMOVC、XCHXCH、XCHDXCHD、SWAPSWAP、PUSHPUSH、POPPOP, ,可细分可细分为为片内片内RAMRAM数据传送、访问数据传送、访问程序存储器程序存储器与与片外片外RAMRAM、堆堆栈栈操作、操作、数据交换数据交换4 4类。类。数据传送指令执行后,除了数据传送指令执行后,除了奇偶标志奇偶标志 P P 会受到会受到以以累加器累加器 A A 为为目的操作数指令目的操作数指令的影
42、响的影响, ,其他标志均不其他标志均不受到影响。受到影响。2021-11-20嵌入式应用基础嵌入式应用基础47片内片内RAMRAM存储空间存储空间, ,只有只有256B256B, ,仅用仅用8 8位地址位地址寻址寻址, ,但却是但却是数据传送最活跃数据传送最活跃的区域的区域, ,使用的使用的寻址方式寻址方式也最也最多。下面以多。下面以目的操作数目的操作数的寻址方式分组介绍。的寻址方式分组介绍。1 1、内部存储器间传送、内部存储器间传送(1 1) 以累加器以累加器 A A 为目的操作数指令为目的操作数指令一一 、片内、片内RAMRAM数据传送指令数据传送指令2021-11-20嵌入式应用基础嵌入
43、式应用基础48表中指令均是表中指令均是8 8位数位数送送A A指令指令, ,第第1 1组中的机器码组中的机器码E8E8EF,EF,分别对应于源为分别对应于源为R0R0R7R7的的8 8条指令。条指令。第第3 3组中的机器码组中的机器码E6E6E7,E7,分别对应于源为分别对应于源为R0R0R1R1的的2 2条指令。条指令。2021-11-20嵌入式应用基础嵌入式应用基础49第第1 1、3 3两组指令的两组指令的源操作数源操作数分别采用分别采用寄存器寻寄存器寻址址和和寄存器间址寄存器间址, ,所占字节数少所占字节数少, ,为为1 1个个字节字节。第第2 2、4 4两组指令的两组指令的源操作数源操
44、作数分别采用分别采用直接寻址直接寻址和和立即寻址立即寻址, ,占占2 2个字节个字节数。数。2021-11-20嵌入式应用基础嵌入式应用基础50(2 2) 以寄存器为目的操作数指令以寄存器为目的操作数指令以以寄存器寄存器RnRn为为目的操作数目的操作数的传送指令和要素如的传送指令和要素如表。表。前前3 3组指令均是组指令均是8 8位数位数送送寄存器寄存器RnRn指令指令, ,源只能采源只能采用用直接寻址直接寻址和和立即寻立即寻址址, ,不能采用不能采用寄存器寻址寄存器寻址和和寄存寄存器间址。器间址。2021-11-20嵌入式应用基础嵌入式应用基础51MOV Rn, RnMOV Rn, Rn和和
45、MOV Rn,RiMOV Rn,Ri形式指令是形式指令是非法非法的的, ,工工作作寄存器间数据传送寄存器间数据传送可通过可通过累加器累加器A A为中介来为中介来传送传送。最后最后1 1条指令是条指令是MCS-51MCS-51指令系统指令系统中中唯一唯一的的一条一条1616位数据传送指令位数据传送指令, , 指令功能是将指令功能是将1616位数据位数据传送给传送给1616位位寄存器寄存器DPTRDPTR, ,作为地址作为地址指针指针。2021-11-20嵌入式应用基础嵌入式应用基础52例如:例如: MOVMOVDPTR, #1000HDPTR, #1000H;功能为功能为DPTR1000HDPT
46、R1000H相当于执行两条相当于执行两条8 8位数据传送指令:位数据传送指令:MOV DPH,#10H MOV DPH,#10H ;DPH10H,DPH10H,数的数的高高8 8位送位送DPHDPH, ,MOV DPL,#00H MOV DPL,#00H ;DPL00H,DPL00H,数的数的低低8 8位送位送DPLDPL。2021-11-20嵌入式应用基础嵌入式应用基础53(3 3) 以以直接寻址直接寻址directdirect为为目的操作数目的操作数指令指令 以直接寻址为目的操作数的以直接寻址为目的操作数的传送指令传送指令和和要素要素如下。如下。指令功能均是指令功能均是8 8位数位数送送片
47、内片内RAMRAM低低128128字节或字节或SFRSFR直接直接地址单元。地址单元。2021-11-20嵌入式应用基础嵌入式应用基础54指令中的指令中的源源、目地目地操作数操作数dir1dir1和和dir2dir2都为都为直接直接寻址寻址, ,这就使得内部这就使得内部RAMRAM之间的数据传送之间的数据传送, ,不必通过累不必通过累加器加器A A为中介来间接传送为中介来间接传送, ,同时也说明访问同时也说明访问SFRSFR仅允许仅允许使用直接寻址使用直接寻址, ,例如:例如:MOV MOV 30H,31H30H,31H; ;机器码机器码853130, 853130, 功能为功能为30H 30
48、H (31H31H)MOV MOV Pl ,BPl ,B; ;机器码为机器码为85F090, 85F090, 功能为功能为P1 BP1 B2021-11-20嵌入式应用基础嵌入式应用基础55(4 4) 以寄存器间址以寄存器间址RiRi为目的操作数指令为目的操作数指令指令功能均是把指令功能均是把源操作数源操作数指定的内容传送到指定的内容传送到RiRi所指向的所指向的片内片内RAMRAM单元单元中。中。RiRi不是不是目的地址目的地址,Ri,Ri中存放的中存放的片内片内RAMRAM单元的地单元的地址址才是真正才是真正目的地址目的地址。RiRi在机器码中是用在机器码中是用最后一位来最后一位来指定指定
49、, ,0 0指定指定R0R0, ,1 1指定指定R1R1。2021-11-20嵌入式应用基础嵌入式应用基础56例例 阅读下面汇编源程序,问程序运行后:阅读下面汇编源程序,问程序运行后: (1 1)A,B,R0,R1A,B,R0,R1和内和内RAM30HRAM30H31H31H内容各为多少?内容各为多少?解解: : 程序运行后各单元的内容为程序运行后各单元的内容为: : ORG 0030HSTART: MOV 30H, #0AAH MOV 31H, #30H MOV R1, #31H MOV R0, 31H MOV B,R0 MOV A, B MOV R1, A MOV P1, R1 END S
50、TARTA = B =A = B =(30H30H)= =(31H31H)= =(P1P1)= AAH= AAH,R0 R0 = 30H= 30H,R1 = 31HR1 = 31H。课堂知识巩固课堂知识巩固2021-11-20嵌入式应用基础嵌入式应用基础57(2 2)若若R0=50HR0=50H,R4=38HR4=38H,内,内RAMRAM(40H40H)=05H=05H,内内RAMRAM(50H50H)=25H=25H, A=12H A=12H,则,则解解: : 程序运行后各单元的内容为程序运行后各单元的内容为: :MOV 50H,#20H;MOV 55H,40H ;MOV 5AH,A ;
51、MOV 60H,R4 ; MOV 68H,R0;(50H50H)=20H=20H(55H55H)=05H=05H(5AH5AH)=12H=12H(60H60H)=38H=38H(68H68H)=25H=25H(3 3)若)若R0=50HR0=50H,R1=60HR1=60H,内,内RAMRAM(38H38H)=05H=05H,A=10HA=10H,则,则MOV R0, #40HMOV R1,38H MOV R1, A内部数据传送指令的使用内部数据传送指令的使用1 1)禁止非法指令禁止非法指令: MOV Rn,RiMOV Rn,Ri; MOV #DATA,AMOV #DATA,A2 2)正确正确
52、的给程序的给程序注释注释 RnRn、A A、B B、DPTRDPTR等寄存器中的等寄存器中的内容内容作为作为源操作数源操作数的时候不加的时候不加括号括号,目标操作数目标操作数的时候也不加。的时候也不加。3 3)()(RiRi)-表示表示操作数地址在操作数地址在RiRi中中(DPTRDPTR)-表示操作数在表示操作数在外部的外部的RAM/ROMRAM/ROM中,中,地址地址放在放在DPTRDPTR中中2021-11-20嵌入式应用基础嵌入式应用基础592. 2. 访问片外访问片外RAMRAM指令指令访问片外访问片外RAMRAM指令有指令有4 4条条, ,片外片外RAMRAM单元单元与与累加器累加
53、器A A可以可以互相传送数据互相传送数据, ,都属于都属于寄存器间接寻址寄存器间接寻址方式。方式。第第1 12 2两组指令采用两组指令采用8 8位地址指针位地址指针RiRi作间址寄存作间址寄存器,器,8 8位地址位地址和和数据数据均由均由P0P0口分时输出或输入口分时输出或输入, ,可寻址可寻址256B256B, ,此时此时, ,P2P2口口仍可用做仍可用做通用通用I/OI/O口口。2021-11-20嵌入式应用基础嵌入式应用基础60在在MCS-51MCS-51指令系统中指令系统中, ,没有专门对没有专门对外设的外设的I/OI/O指指令令,I/O,I/O与片外与片外RAMRAM是是统一编址统一
54、编址的,这的,这4 4条指令也可以作条指令也可以作为为I/OI/O指令指令。 例例 采用采用1616位地址指针位地址指针DPTRDPTR, ,把数存入把数存入片外片外RAMRAM单元单元1000H1000H中。中。 ORG 0030H ORG 0030HSTART: MOV ASTART: MOV A,#0AAH#0AAH MOV DPTR , #1000H ; MOV DPTR , #1000H ;先送地址先送地址 MOVX DPTR , A ;MOVX DPTR , A ;后存数后存数 ENDENDSTARTSTARTP93说明请改用8位地址指针R0,编写相同功能的程序;ORG 0030H
55、ORG 0030HSTART: MOV ASTART: MOV A, #0AAH #0AAH MOV P2 , #10HMOV P2 , #10H ; ;高高8 8位地址送位地址送P2P2 MOV R0 , #00H MOV R0 , #00H ; ;低低8 8位地址送位地址送R0R0 MOVX R0 , A MOVX R0 , A ; ;存数存数 END STARTEND START2021-11-20嵌入式应用基础嵌入式应用基础623 3 . .访问程序存储器访问程序存储器ROMROM查表指令查表指令指令功能均是指令功能均是读取程序存储器读取程序存储器指令指令, ,属于属于变址寻址方式变址
56、寻址方式, ,但两者的但两者的基址寄存器基址寄存器不同不同, , 适用范围适用范围也不同也不同。第第1 1条指令以条指令以 DPTRDPTR为基址寄存器为基址寄存器, ,把表头地址送入把表头地址送入DPTRDPTR后后, ,就可就可以用它来方便地查找存放在以用它来方便地查找存放在程序存储器程序存储器64KB64KB范围内的范围内的远程表格远程表格数据数据。2021-11-20嵌入式应用基础嵌入式应用基础63指令指令MOVC A,A+PCMOVC A,A+PC以以PCPC为基址寄存器为基址寄存器,CPU,CPU在读在读取指令时取指令时, ,PCPC已经加已经加1 1, ,作为作为基址值基址值的已
57、不是的已不是 , ,而而是是 。 由于由于PCPC值已经确定值已经确定, ,查表范围只能由查表范围只能由累加器累加器A A内内8 8位位数值数值确定确定, ,这样这样, ,使用此指令的表格只能存放在以使用此指令的表格只能存放在以 为起始地址的为起始地址的256B256B范围内范围内, ,称这为称这为本地表本地表。当前PC源PC当前PC2021-11-20嵌入式应用基础嵌入式应用基础64例:例: 0 04 4的平方表首址为的平方表首址为SQTBSQTB, ,如图(如图(a a)。下面程)。下面程序以序以DPTRDPTR为基址指针为基址指针, ,设设A = 3A = 3, ,用查表法求其用查表法求
58、其平方值平方值。 ORG 0030HORG 0030HSTART: MOVSTART: MOVA A,#03H#03H;所查数正好为离表首址偏移量所查数正好为离表首址偏移量 MOV DPTR MOV DPTR ,#SQTB,#SQTB;送平方表首址送平方表首址 MOVC AMOVC A,A+DPTRA+DPTR;查平方表查平方表SQTB: SQTB: DB 00H,01H,04H,09H,10HDB 00H,01H,04H,09H,10H ;建立平方表区域建立平方表区域 ENDEND STARTSTART2021-11-20嵌入式应用基础嵌入式应用基础65(1 1)请改用)请改用PCPC为基址
59、指针为基址指针, ,编写相同功能的程序;编写相同功能的程序;解解: :(1 1)见图()见图(b b), ,具有相同功能具有相同功能, , 用用PCPC为基址指针程序如下:为基址指针程序如下: ORG0030HSTART: MOV A A, #03H03H ;所查数正好为离表首址偏移量 MOVC A, A+PCMOVC A, A+PC ;查平方表SQTB: DB 01H,04H,09H,10H ;设置平方表区域 END START2021-11-20嵌入式应用基础嵌入式应用基础66上面程序中上面程序中本地表表头地址本地表表头地址SQTBSQTB紧跟在紧跟在查表指查表指令令之后之后, ,即即 正
60、好指向正好指向SQTBSQTB, ,这时所查数(这时所查数(A = 3A = 3)正好为离正好为离表首址偏移量表首址偏移量;如果如果 与与SQTBSQTB之间还隔有之间还隔有其它指令其它指令, ,则需要则需要在查表指令前安排一条在查表指令前安排一条加法加法指令指令, ,使累加器使累加器 A A 中的值中的值等于所需的等于所需的地址偏移量地址偏移量。例:例:外部外部ROMROM从从1000H1000H中有一个中有一个0-90-9的平方表。利的平方表。利用查表指令来求用查表指令来求X X(0-90-9)的平方值的平方值. .当前PC当前PC2021-11-20嵌入式应用基础嵌入式应用基础67例:例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市政工程竣工验收资料归档全部内容精
- 市老年人体育文娱活动中心项目可行性研究报告
- 糖尿病肾病患者的饮食宣教
- 2025《谏太宗十思疏》君主修养之道课件
- 2025《祝福》人物命运课件
- 幼儿园安全用电制度培训课件
- 建筑施工高处作业吊篮安全生产管理制度培训
- 尘毒噪及射线安全管理制度培训
- 从业人员健康与培训管理制度全流程实施指南
- 发电厂运行工人岗位安全职责培训课件
- 舌下腺囊肿护理
- 保洁公司合作协议
- 学校食堂“三同三公开”制度实施方案
- 2024年开学第一课:人工智能与未来教育
- 《老年性骨质疏松症中西医结合诊疗指南》
- 社会实践报告之山西传统民俗文化
- GB/T 18314-2024全球导航卫星系统(GNSS)测量规范
- 专题10 说明文阅读(含答案+原卷版)备战2025年中考语文真题专项汇编(全国版)
- 【乡村振兴背景下农村居家养老服务的问题及对策:H村为例(后附问卷)11000字(论文)】
- DL-T-5115-2016混凝土面板堆石坝接缝止水技术规范
- 中考数学常见几何模型全归纳提分精练专题13最值模型-瓜豆原理(原卷版+解析)
评论
0/150
提交评论