收藏 分销(赏)

高等教育单片机.pptx

上传人:w****g 文档编号:3203037 上传时间:2024-06-25 格式:PPTX 页数:134 大小:592.27KB
下载 相关 举报
高等教育单片机.pptx_第1页
第1页 / 共134页
高等教育单片机.pptx_第2页
第2页 / 共134页
高等教育单片机.pptx_第3页
第3页 / 共134页
高等教育单片机.pptx_第4页
第4页 / 共134页
高等教育单片机.pptx_第5页
第5页 / 共134页
点击查看更多>>
资源描述

1、第三节第三节 指令系统及应用举例指令系统及应用举例 介绍介绍MCS-51MCS-51的的5 5类类111111条指令。即:条指令。即:数据传送指令类数据传送指令类2929条;条;算术运算类算术运算类2424条;条;逻辑运算类逻辑运算类2424条;条;控制转移类控制转移类1717条;条;布尔变量操作类布尔变量操作类1717条。条。符号说明符号说明 l lRnRn:表表表表示示示示当当当当前前前前选选选选中中中中寄寄寄寄存存存存器器器器区区区区中中中中的的的的8 8个个个个工工工工作作作作寄寄寄寄存存存存器器器器R0R0R7(n=0R7(n=0)。l lRiRi:代表代表代表代表R0R0、R1R1

2、。间址寄存器。间址寄存器。间址寄存器。间址寄存器(i=0(i=0、1)1)。l ldirectdirect:表示表示表示表示8 8位内部数据存储器单元的地址。位内部数据存储器单元的地址。位内部数据存储器单元的地址。位内部数据存储器单元的地址。l l#data#data:表示包含在指令中的表示包含在指令中的表示包含在指令中的表示包含在指令中的8 8位立即数。位立即数。位立即数。位立即数。l l#datal6#datal6:表示包含在指令中的表示包含在指令中的表示包含在指令中的表示包含在指令中的1616位立即数。位立即数。位立即数。位立即数。l l addrl6addrl6:表示表示表示表示161

3、6位目的地址,地址范围是位目的地址,地址范围是位目的地址,地址范围是位目的地址,地址范围是64kB64kB。l l Addr11Addr11:表表表表示示示示1111位位位位目目目目的的的的地地地地址址址址,用用用用于于于于ACALLACALL和和和和AJMPAJMP指指指指令令令令中中中中。ACALLACALL和和和和AJMPAJMP的的的的目目目目的的的的地地地地址址址址范范范范围围围围最最最最大大大大是是是是2kB2kB的的的的程程程程序序序序存存存存储储储储器器器器地地地地址址址址空空空空间间间间。目目目目的的的的地地地地址址址址与与与与该该该该指指指指令令令令后后后后面面面面的的的的

4、第第第第一一一一条条条条指指指指令令令令的的的的第第第第一一一一个个个个字字字字节节节节应同在一个应同在一个应同在一个应同在一个2kB2kB程序存储器地址空间之内(程序存储器地址空间之内(程序存储器地址空间之内(程序存储器地址空间之内(1 1页内)。页内)。页内)。页内)。l lrelrel:表表表表示示示示8 8位位位位带带带带符符符符号号号号的的的的偏偏偏偏移移移移量量量量,用用用用于于于于SJMPSJMP和和和和所所所所有有有有条条条条件件件件转转转转移移移移指指指指令令令令中中中中。偏偏偏偏移移移移量量量量(字字字字节节节节数数数数)从从从从该该该该指指指指令令令令后后后后面面面面的的

5、的的第第第第一一一一条条条条指指指指令令令令的的的的第第第第一一一一个字节起计算,在个字节起计算,在个字节起计算,在个字节起计算,在-128-128127127范围内取值。范围内取值。范围内取值。范围内取值。bitbit:表示内部表示内部表示内部表示内部RAMRAM或专用寄存器中的直接寻址位。或专用寄存器中的直接寻址位。或专用寄存器中的直接寻址位。或专用寄存器中的直接寻址位。CyCy:为进位标志或进位位,或布尔处理机中的累加器。为进位标志或进位位,或布尔处理机中的累加器。为进位标志或进位位,或布尔处理机中的累加器。为进位标志或进位位,或布尔处理机中的累加器。:为间址寄存器或基址寄存器的前缀。如

6、为间址寄存器或基址寄存器的前缀。如为间址寄存器或基址寄存器的前缀。如为间址寄存器或基址寄存器的前缀。如RiRi,A+PCA+PC,A+DPTRA+DPTR。:位操作数的前缀,表示对该位操作数取反。如位操作数的前缀,表示对该位操作数取反。如位操作数的前缀,表示对该位操作数取反。如位操作数的前缀,表示对该位操作数取反。如bitbit。;注释(功能说明)用的符号说明注释(功能说明)用的符号说明注释(功能说明)用的符号说明注释(功能说明)用的符号说明(X)(X):表示表示表示表示X X中的内容;另在注释间接寻址指令时,表示由间中的内容;另在注释间接寻址指令时,表示由间中的内容;另在注释间接寻址指令时,

7、表示由间中的内容;另在注释间接寻址指令时,表示由间 址寄存器址寄存器址寄存器址寄存器X X指出的地址单元。指出的地址单元。指出的地址单元。指出的地址单元。(X):(X):注释间接寻址指令时,表示由间址寄存器注释间接寻址指令时,表示由间址寄存器注释间接寻址指令时,表示由间址寄存器注释间接寻址指令时,表示由间址寄存器X X指出的地址指出的地址指出的地址指出的地址 单元中的内容。即将单元中的内容。即将单元中的内容。即将单元中的内容。即将X X的内容作为地址,表示该地址中的内容作为地址,表示该地址中的内容作为地址,表示该地址中的内容作为地址,表示该地址中 的内容。的内容。的内容。的内容。:表示将箭头右

8、边的内容传送至箭头的左边。在操作说明表示将箭头右边的内容传送至箭头的左边。在操作说明表示将箭头右边的内容传送至箭头的左边。在操作说明表示将箭头右边的内容传送至箭头的左边。在操作说明(注释)中用。(注释)中用。(注释)中用。(注释)中用。内部存储器间传送:内部存储器间传送:(MOVMOV1616条)条)外部数据存储器与累加器间传送外部数据存储器与累加器间传送:(MOVXMOVX4 4条)条)程序存储器向累加器传送:程序存储器向累加器传送:(MOVCMOVC2 2条)条)数据交换:(数据交换:(XCHXCH,XCHDXCHD,SWAPSWAP5 5条)条)堆栈操作:堆栈操作:(PUSHPUSH,P

9、OPPOP2 2条)条)(一一)数据传送类指令数据传送类指令(5 5类类/29/29条)条)见见P.56P.56的表的表RnRn:R0R7R0R7RiRi:R0R0,R1R1#data#data:8 8位立即数位立即数位立即数位立即数#data16#data16:1616位立即数位立即数位立即数位立即数directdirect:8 8位直接地址位直接地址位直接地址位直接地址RelRel:8 8位带符号偏移量位带符号偏移量位带符号偏移量位带符号偏移量(一一)数据传送类指令数据传送类指令(5类类/29条)条)内部存储器间传送指令内部存储器间传送指令内部存储器间传送指令内部存储器间传送指令 (16(

10、16条条条条):MOV MOV 类指令的操作方向总是后面的操作数指向前面的类指令的操作方向总是后面的操作数指向前面的类指令的操作方向总是后面的操作数指向前面的类指令的操作方向总是后面的操作数指向前面的操作数!操作数!操作数!操作数!例例例例:MOV A:MOV A,30H 30H(A A)(30H30H)累加器累加器累加器累加器A Adirectdirect直接寻址直接寻址直接寻址直接寻址RiRi间址间址间址间址RnRn寄存器寄存器寄存器寄存器DataData立即数立即数立即数立即数图中图中图中图中1515个箭头和另外有个箭头和另外有个箭头和另外有个箭头和另外有MOV DPTR,#data16

11、 MOV DPTR,#data16 共共共共1616条指令条指令条指令条指令内部数据传送类指令的使用内部数据传送类指令的使用l l1 1,在使用传送指令时,在使用传送指令时,在使用传送指令时,在使用传送指令时,可以根据实际情况选用恰当寻址方可以根据实际情况选用恰当寻址方可以根据实际情况选用恰当寻址方可以根据实际情况选用恰当寻址方式。上面给出的各种类型的传送指令是式。上面给出的各种类型的传送指令是式。上面给出的各种类型的传送指令是式。上面给出的各种类型的传送指令是INTELINTEL公司在设计公司在设计公司在设计公司在设计MCS-51MCS-51的硬件时就已经确定下来。编程人员只能像查字的硬件时

12、就已经确定下来。编程人员只能像查字的硬件时就已经确定下来。编程人员只能像查字的硬件时就已经确定下来。编程人员只能像查字典一样去查找、使用。典一样去查找、使用。典一样去查找、使用。典一样去查找、使用。不能根据主观意愿去不能根据主观意愿去不能根据主观意愿去不能根据主观意愿去“创造创造创造创造”指令。指令。指令。指令。例如:要将例如:要将例如:要将例如:要将R0R0中的数据传送到中的数据传送到中的数据传送到中的数据传送到R1R1中。如何使用指令去完中。如何使用指令去完中。如何使用指令去完中。如何使用指令去完成上面的操作?成上面的操作?成上面的操作?成上面的操作?MOV R1,R0MOV R1,R0

13、是否可以?回答是否定的!因为在是否可以?回答是否定的!因为在是否可以?回答是否定的!因为在是否可以?回答是否定的!因为在MCS-MCS-5151的指令系统中没有此条指令!只能使用:的指令系统中没有此条指令!只能使用:的指令系统中没有此条指令!只能使用:的指令系统中没有此条指令!只能使用:MOV A,R0 MOV A,R0 或:或:或:或:MOV 01H,00HMOV 01H,00H MOV R1,A MOV R1,A 因此,必须从因此,必须从因此,必须从因此,必须从MCS-51MCS-51的指令表中选择使用指令。的指令表中选择使用指令。的指令表中选择使用指令。的指令表中选择使用指令。2 2,以

14、累加器以累加器以累加器以累加器A A为目的寄存器的传送指令会影响为目的寄存器的传送指令会影响为目的寄存器的传送指令会影响为目的寄存器的传送指令会影响PSWPSW中的中的中的中的奇偶位奇偶位奇偶位奇偶位P P,而其余的指令对,而其余的指令对,而其余的指令对,而其余的指令对PSWPSW均无影响。均无影响。均无影响。均无影响。3 3,要会正确地估计指令的字节。凡是指令中包含有,要会正确地估计指令的字节。凡是指令中包含有,要会正确地估计指令的字节。凡是指令中包含有,要会正确地估计指令的字节。凡是指令中包含有立即数、直接地址立即数、直接地址立即数、直接地址立即数、直接地址的指令,都应当在原有的基础的指令

15、,都应当在原有的基础的指令,都应当在原有的基础的指令,都应当在原有的基础上加上加上加上加1 1。【举例举例举例举例】:mov a,Ri ()个字节个字节 mov a,direct ()个字节个字节 mov direct,data ()个字节个字节 mov direct2,direct1 ()个字节个字节4 4,对于同一问题可以有不同的编程方法。使用不同的方法,对于同一问题可以有不同的编程方法。使用不同的方法,对于同一问题可以有不同的编程方法。使用不同的方法,对于同一问题可以有不同的编程方法。使用不同的方法虽然都可以实现题目的要求,但从虽然都可以实现题目的要求,但从虽然都可以实现题目的要求,但从

16、虽然都可以实现题目的要求,但从指令长度、运行时指令长度、运行时指令长度、运行时指令长度、运行时间和可阅读性上间和可阅读性上间和可阅读性上间和可阅读性上等等等等综合因素考虑,不同的方法就有合综合因素考虑,不同的方法就有合综合因素考虑,不同的方法就有合综合因素考虑,不同的方法就有合理和不合理、优化和繁杂之分。所以,在学习指令系统和理和不合理、优化和繁杂之分。所以,在学习指令系统和理和不合理、优化和繁杂之分。所以,在学习指令系统和理和不合理、优化和繁杂之分。所以,在学习指令系统和编程时开始就要养成一个好的、合理的编程习惯。编程时开始就要养成一个好的、合理的编程习惯。编程时开始就要养成一个好的、合理的

17、编程习惯。编程时开始就要养成一个好的、合理的编程习惯。【例例例例】:将:将:将:将P0P0(80H80H)中的内容送到累加器)中的内容送到累加器)中的内容送到累加器)中的内容送到累加器A A中。中。中。中。5 5,注意给程序进行正确的注释注意给程序进行正确的注释注意给程序进行正确的注释注意给程序进行正确的注释,这对于阅读、编写和,这对于阅读、编写和,这对于阅读、编写和,这对于阅读、编写和修改程序都是非常重要的。下面就是一些注释的例子:修改程序都是非常重要的。下面就是一些注释的例子:修改程序都是非常重要的。下面就是一些注释的例子:修改程序都是非常重要的。下面就是一些注释的例子:MOV A,30H

18、 MOV A,30H ;(;(;(;(30h)30h)A A MOV A,R0 MOV A,R0 ;R0 AR0 A MOV 40H,30H MOV 40H,30H ;(;(;(;(30h)40h30h)40h MOV A,Ri MOV A,Ri ;(;(;(;(Ri)ARi)A内部传送类指令举例内部传送类指令举例【例例例例1 1】试编出把试编出把试编出把试编出把30h30h和和和和40h40h单元内容进行交换。单元内容进行交换。单元内容进行交换。单元内容进行交换。MOV A,MOV A,30H30H ;(30h)(30h)A AMOV MOV 30H30H,40H 40H ;(40h)30h

19、 (40h)30h MOV MOV 40H40H,A ,A ;A 40h A 40h RAMRAMX XY Y累加器累加器累加器累加器A A30H30H40H40H【例例2 2】将将20H20H开始的开始的3232个单元全部清个单元全部清0 0。MOV A,#00HMOV A,#00H ;A 00H;A 00H MOV R0,#20HMOV R0,#20H ;R0 20H,;R0 20H,以以以以R0R0作地址指针作地址指针作地址指针作地址指针 MOV MOV R7R7,#20H ;R7,#20H ;R7计数,计数,计数,计数,R7 32R7 32LP1:MOV R0,LP1:MOV R0,A

20、 A ;将指示的单元清将指示的单元清将指示的单元清将指示的单元清0 0 INC INC R0R0 DJNZ DJNZ R7R7,LP1 ;R7 R7,LP1 ;R7 R71 1,若,若,若,若R7R7不为不为不为不为0 0则则则则 转转转转LP1LP1重复重复重复重复 MOV类传送指令小结类传送指令小结MOV A,#data立即数送累加器立即数送累加器MOV A,Rn寄存器内容送累加器寄存器内容送累加器MOV A,direct直接地址内容送累加器直接地址内容送累加器MOV A,Ri内内RAM内容送累加器内容送累加器MOV Rn,#data立即数送寄存器立即数送寄存器MOV Rn,A 累加器内容

21、送寄存器累加器内容送寄存器RnMOV Rn,direct直接地址内容送寄存器直接地址内容送寄存器Rn指令助记符指令助记符说说 明明字字 节节 2 21 12 21 12 21 12 2MOV 片内传送指令片内传送指令 MOV类传送指令小结类传送指令小结MOV direct1,direct2内内RAM或或SFR之间直接传送之间直接传送MOV direct,Ri内内RAM数据送内数据送内RAM或或SFRMOV direct,#data立即数送内立即数送内RAM或或SFRMOV direct,A累加器内容送内累加器内容送内RAM或或SFRMOV direct,Rn寄存器内容送内寄存器内容送内RAM或

22、或SFR指令助记符指令助记符说说 明明字节字节3 32 22 23 32 2MOV Ri,#data立即数送内立即数送内RAMMOV Ri,A累加器内容送内累加器内容送内RAMMOV Ri,direct内内RAM数据送内数据送内RAM或或SFRMOV DPTR,#data1616位立即数传送指令位立即数传送指令2 21 12 23 3MOV 片内传送指令片内传送指令数据传送类指令数据传送类指令(续)(续)外部数据存储器与累加器间传送外部数据存储器与累加器间传送外部数据存储器与累加器间传送外部数据存储器与累加器间传送 (4(4条条条条):):MOVXMOVX类类类类指令可在累加器与以指令可在累加

23、器与以指令可在累加器与以指令可在累加器与以DPTRDPTR或或或或RiRi所代表的外部所代表的外部所代表的外部所代表的外部 RAM RAM 之间进行数据传送。之间进行数据传送。之间进行数据传送。之间进行数据传送。例如例如例如例如:MOVX AMOVX A,DPTRDPTR(A)(A)(DPTR(DPTR)MOVX AMOVX A,RiRi (A)(A)(Ri)(Ri)MOVX DPTR,AMOVX DPTR,A (DPTR(DPTR)(A)(A)MOVX Ri,AMOVX Ri,A (Ri)(Ri)(A)(A)MOV DPTR,#8000HMOV DPTR,#8000H MOVX A,DPTR

24、 MOVX A,DPTR【例例例例】将外部将外部将外部将外部RAMRAM的的的的8000H8000H单元的内容传送至单元的内容传送至单元的内容传送至单元的内容传送至A A中。中。中。中。【例例例例】有一输入设备,其端口地址为有一输入设备,其端口地址为有一输入设备,其端口地址为有一输入设备,其端口地址为2040H2040H,该端口,该端口,该端口,该端口数据为数据为数据为数据为41H41H,将此值存入片内,将此值存入片内,将此值存入片内,将此值存入片内RAMRAM的的的的20H20H单元中。单元中。单元中。单元中。MOV DPTR,#2040HMOV DPTR,#2040H MOVX A,DPT

25、R MOVX A,DPTR MOV 20H,A MOV 20H,A执行结果为:片内执行结果为:片内执行结果为:片内执行结果为:片内20H20H单元的内容为单元的内容为单元的内容为单元的内容为41H41H。外部外部RAM的字节传送指令举例的字节传送指令举例【例例】已知外部已知外部RAMRAM的的88H88H单元有一个数单元有一个数x x,试,试编程将编程将x x送外部送外部RAMRAM的的1818H1818H单元。单元。【解解】:外部外部RAMRAM中的数据是不能直接传送的,因此必须使中的数据是不能直接传送的,因此必须使用两次用两次 MOVX MOVX 指令完成此操作。指令完成此操作。ORG 2

26、000HORG 2000HMOV R0MOV R0,#88H#88H ;为;为;为;为8 8位指针赋值位指针赋值位指针赋值位指针赋值MOV DPTRMOV DPTR,#1818H#1818H;为;为;为;为1616位指针赋值位指针赋值位指针赋值位指针赋值MOVX AMOVX A,R0 R0 ;取;取;取;取 x x 到累加器到累加器到累加器到累加器A AMOVX DPTRMOVX DPTR,A A ;x x 送送送送RAMRAM的的的的1818h1818h单元单元单元单元课本例子课本例子课本例子课本例子【例例例例】将外部将外部将外部将外部RAM 2000HRAM 2000H中的内容送中的内容送

27、中的内容送中的内容送2009H2009H单元。单元。单元。单元。MOVX类传送指令小结类传送指令小结 指令助记符指令助记符说说 明明字字 节节 1 11 11 11 1MOVX A,Ri外部外部RAM送累加器送累加器AMOVX Ri,A累加器内容送外累加器内容送外RAMMOVX A,DPTR外部外部RAM送累加器送累加器AMOVX DPTR,A累加器内容送外累加器内容送外RAMMOVX 片外传送指令片外传送指令程序存储器向累加器传送指令(程序存储器向累加器传送指令(程序存储器向累加器传送指令(程序存储器向累加器传送指令(2 2条):条):条):条):MOVC AMOVC A,A+DPTRA+D

28、PTR MOVC A MOVC A,A+PCA+PC 通常称为查表指令,寻址方式属通常称为查表指令,寻址方式属通常称为查表指令,寻址方式属通常称为查表指令,寻址方式属:“基址加变址基址加变址基址加变址基址加变址寻址寻址寻址寻址”数据传送类指令数据传送类指令(续)(续)A+DPTRA+DPTR或或或或A+PCA+PC指向程序存储器中的某单指向程序存储器中的某单指向程序存储器中的某单指向程序存储器中的某单元。拟传送给累加器元。拟传送给累加器元。拟传送给累加器元。拟传送给累加器ACCACC 的数据就是程序中事先的数据就是程序中事先的数据就是程序中事先的数据就是程序中事先写进去的写进去的写进去的写进去

29、的表格数据表格数据表格数据表格数据。这些表格数据往往用伪指令。这些表格数据往往用伪指令。这些表格数据往往用伪指令。这些表格数据往往用伪指令 DB,DW DB,DW 等定义在程序中。等定义在程序中。等定义在程序中。等定义在程序中。外部外部ROM的字节传送指令举例的字节传送指令举例l l已知累加器已知累加器已知累加器已知累加器A A中存有中存有中存有中存有0 09 9范围内的范围内的范围内的范围内的数,试用查表指令编写出查找出该数,试用查表指令编写出查找出该数,试用查表指令编写出查找出该数,试用查表指令编写出查找出该数平方的程序。数平方的程序。数平方的程序。数平方的程序。1 1、采用、采用、采用、

30、采用DPTRDPTR作基址寄存器:作基址寄存器:作基址寄存器:作基址寄存器:设平方表的首地址为设平方表的首地址为设平方表的首地址为设平方表的首地址为2000h2000h,累加,累加,累加,累加器器器器A A中的内容恰好是查表的偏移量。中的内容恰好是查表的偏移量。中的内容恰好是查表的偏移量。中的内容恰好是查表的偏移量。首先将表的起始地址首先将表的起始地址首先将表的起始地址首先将表的起始地址2000h2000h送入送入送入送入DPTRDPTR中。中。中。中。MOV DPTR,#2000H MOV DPTR,#2000H ;指针赋值;指针赋值;指针赋值;指针赋值 MOVC A,A+DPTR MOVC

31、 A,A+DPTR ;平方值送;平方值送;平方值送;平方值送A AROMROM0 01 14 49 91616252536364949646481812000h2000h2009h2009h2008h2008h2007h2007h2006h2006h2005h2005h2004h2004h2003h2003h2002h2002h2001h2001h2 2、采用、采用PCPC作基址寄存器:作基址寄存器:与与与与DPTRDPTRDPTRDPTR不同,使用不同,使用不同,使用不同,使用PCPCPCPC作为基地址时,必须对作为基地址时,必须对作为基地址时,必须对作为基地址时,必须对累加器累加器累加器累

32、加器A A A A的数据进行修正,以保证的数据进行修正,以保证的数据进行修正,以保证的数据进行修正,以保证a+pca+pca+pca+pc恰好找到恰好找到恰好找到恰好找到待查的平方值地址。待查的平方值地址。待查的平方值地址。待查的平方值地址。ORG 1FFBHORG 1FFBHORG 1FFBHORG 1FFBH1FFBH 1FFBH 1FFBH 1FFBH 74 data74 data74 data74 data ADD A,#data ADD A,#data ADD A,#data ADD A,#data;data=02hdata=02hdata=02hdata=02h1FFDH 1FFD

33、H 1FFDH 1FFDH 83H 83H 83H 83H MOVC A,A+PC MOVC A,A+PC MOVC A,A+PC MOVC A,A+PC;PC=1FFEPC=1FFEPC=1FFEPC=1FFE1FFEH 1FFEH 1FFEH 1FFEH 80FEH 80FEH 80FEH 80FEH SJMP$SJMP$SJMP$SJMP$2000H 2000H 2000H 2000H 00H00H00H00H DB 0 DB 0 DB 0 DB 0 ;平方表首址;平方表首址;平方表首址;平方表首址2001H 2001H 2001H 2001H 01H 01H 01H 01H DB 1

34、DB 1 DB 1 DB 12002H 2002H 2002H 2002H 04H 04H 04H 04H DB 4 DB 4 DB 4 DB 42003H 2003H 2003H 2003H 09H 09H 09H 09H DB 9 DB 9 DB 9 DB 92004H 2004H 2004H 2004H 10H 10H 10H 10H DB 16 DB 16 DB 16 DB 162005H 2005H 2005H 2005H 19H19H19H19H DB 25 DB 25 DB 25 DB 25 :2009H 2009H 2009H 2009H 51H 51H 51H 51H DB

35、81 DB 81 DB 81 DB 81 END END END ENDdatadatadatadata为为为为MOVCMOVCMOVCMOVC指令地址与表头地址之间的单元数。指令地址与表头地址之间的单元数。指令地址与表头地址之间的单元数。指令地址与表头地址之间的单元数。74h74hdatadata83h83h80h80hFEhFEh0 01 14 49 91616252536364949646481812000h2000h2009h2009h2008h2008h2007h2007h2006h2006h2005h2005h2004h2004h2003h2003h2002h2002h2001h2

36、001h1FFFh1FFFh1FFEh1FFEh1FFDh1FFDh1FFCh1FFCh1FFBh1FFBh 例如:执行下列程序后例如:执行下列程序后例如:执行下列程序后例如:执行下列程序后,A,A,A,A中的内容为多少?该中的内容为多少?该中的内容为多少?该中的内容为多少?该程序是一个查表程序。程序是一个查表程序。程序是一个查表程序。程序是一个查表程序。ORG 2100HORG 2100HORG 2100HORG 2100H ;各指令的地址为;各指令的地址为;各指令的地址为;各指令的地址为 MOV AMOV AMOV AMOV A,#09H#09H#09H#09H ;2100H2100H21

37、00H2100H MOVC AMOVC AMOVC AMOVC A,A+PC A+PC A+PC A+PC ;2102H2102H2102H2102H RET RET RET RET ;2103H 2103H 2103H 2103H ORG 210AHORG 210AHORG 210AHORG 210AH TAB:DB 0C0H TAB:DB 0C0H TAB:DB 0C0H TAB:DB 0C0H ;210AH210AH210AH210AH DB 0F9H DB 0F9H DB 0F9H DB 0F9H ;210BH210BH210BH210BH DB 0A4HDB 0A4HDB 0A4HD

38、B 0A4H ;210CH210CH210CH210CH DB 0B0HDB 0B0HDB 0B0HDB 0B0H ;210DH210DH210DH210DH 运行结果:运行结果:运行结果:运行结果:A=0A4HA=0A4HA=0A4HA=0A4H课本例子课本例子课本例子课本例子 MOVC类传送指令小结类传送指令小结指令助记符指令助记符说说 明明字字 节节 1 11 1MOVC A,A+DPTRMOVC A,A+PC以以DPTR作基址加变址寻址作基址加变址寻址以以PC作基址加变址寻址作基址加变址寻址数据传送类指令数据传送类指令(续)(续)数据交换指令数据交换指令数据交换指令数据交换指令(5(5

39、(5(5条条条条):):):):为提供一种方便的累加器和为提供一种方便的累加器和为提供一种方便的累加器和为提供一种方便的累加器和寄存器或寄存器或寄存器或寄存器或RAMRAMRAMRAM之间的数据交换。避免了使用一般之间的数据交换。避免了使用一般之间的数据交换。避免了使用一般之间的数据交换。避免了使用一般mov mov mov mov 传送指令完成交换时的不便。传送指令完成交换时的不便。传送指令完成交换时的不便。传送指令完成交换时的不便。XCH AXCH AXCH AXCH A,direct (direct (direct (direct (字节互换字节互换字节互换字节互换)XCH AXCH A

40、XCH AXCH A,Ri (Ri (Ri (Ri (字节互换字节互换字节互换字节互换)XCH AXCH AXCH AXCH A,Rn (Rn (Rn (Rn (字节互换字节互换字节互换字节互换)(A A A A)(directdirectdirectdirect)或或或或(Ri)(Ri)(Ri)(Ri),或,或,或,或(Rn)(Rn)(Rn)(Rn)XCHD AXCHD AXCHD AXCHD A,RiRiRiRi 累加器累加器累加器累加器 AccAccAccAcc的低的低的低的低4 4 4 4位与位与位与位与(Ri)(Ri)(Ri)(Ri)的低的低的低的低4 4 4 4位互换,位互换,位互

41、换,位互换,各自的高各自的高各自的高各自的高4 4 4 4位不变位不变位不变位不变SWAP ASWAP ASWAP ASWAP A 累加器累加器累加器累加器 AccAccAccAcc的低的低的低的低4 4 4 4位与自身的高位与自身的高位与自身的高位与自身的高4 4 4 4位互换位互换位互换位互换数据交换指令举例数据交换指令举例l l举例:已知,片外举例:已知,片外举例:已知,片外举例:已知,片外RAM20hRAM20h单元、内部单元、内部单元、内部单元、内部RAM20hRAM20h单元分别单元分别单元分别单元分别有数有数有数有数x x和和和和y y,试编程互将两数相交换。,试编程互将两数相交

42、换。,试编程互将两数相交换。,试编程互将两数相交换。mov R1,#20h mov R1,#20h ;指针赋初值;指针赋初值;指针赋初值;指针赋初值movx a,R1 movx a,R1 ;xaxaxch a,20h xch a,20h ;交换;交换;交换;交换 a(20h),yaa(20h),ya movx R1,a movx R1,a ;y(20h)y(20h)片外片外片外片外RAMRAM片内片内片内片内RAMRAMy (x)y (x)片外片外片外片外RAMRAMx(y)x(y)(y)x(y)x20h20h20h20h累加器累加器累加器累加器A A1 12 23 3 将将将将A A A A

43、中存放的中存放的中存放的中存放的2 2 2 2位位位位BCDBCDBCDBCD码转换为码转换为码转换为码转换为ASCASCASCASC码,并送到码,并送到码,并送到码,并送到50H(50H(50H(50H(高位高位高位高位BCD)BCD)BCD)BCD),51H(51H(51H(51H(低位低位低位低位BCD)BCD)BCD)BCD)单元中单元中单元中单元中。课本例子课本例子课本例子课本例子解:解:解:解:MOV BMOV BMOV BMOV B,A A A A ANLANLANLANL A,A,A,A,#0FH#0FH#0FH#0FH ADDADDADDADD A,A,A,A,#30H#30

44、H#30H#30H MOV 51H,AMOV 51H,AMOV 51H,AMOV 51H,A MOV A,BMOV A,BMOV A,BMOV A,B SWAP ASWAP ASWAP ASWAP A ANLANLANLANL A,A,A,A,#OFH#OFH#OFH#OFH ADDADDADDADD A,A,A,A,#30H#30H#30H#30H MOV 50H,AMOV 50H,AMOV 50H,AMOV 50H,A RETRETRETRET 交换类传送指令小结交换类传送指令小结指令助记符指令助记符说说 明明字节字节1 12 21 11 11 1XCH A,RnXCH A,direct寄

45、存器内容与累加器内容交换寄存器内容与累加器内容交换直接地址内容与累加器内容交换直接地址内容与累加器内容交换XCH A,RiXCHD A,Ri内内RAM内容与累加器内容交换内容与累加器内容交换内内RAM内容低内容低4位与累加器低位与累加器低4位交换位交换SWAP A累加器累加器A高高4位与低位与低4位交换位交换堆栈操作指令堆栈操作指令堆栈操作指令堆栈操作指令(2(2(2(2条条条条):):):):堆栈区由特殊功能寄存器堆栈区由特殊功能寄存器堆栈指针堆栈指针SPSP 管理管理堆栈区可以安排在堆栈区可以安排在 RAMRAM区任意位置,一般不安区任意位置,一般不安排在排在工作寄存器区工作寄存器区和和可

46、按位寻址的可按位寻址的RAMRAM区区,而是放而是放在在RAMRAM区的区的靠后靠后的位置的位置寻址方式为寻址方式为直接寻址直接寻址堆栈总是指向堆栈总是指向栈顶栈顶通常通常PUSHPUSH与与POPPOP两条指令两条指令成对使用成对使用数据传送类数据传送类指令指令(续)续)进栈操作:进栈操作:进栈操作:进栈操作:PUSH direct;PUSH direct;PUSH direct;PUSH direct;sp+1sp,(direct)(sp)sp+1sp,(direct)(sp)sp+1sp,(direct)(sp)sp+1sp,(direct)(sp)出栈操作:出栈操作:出栈操作:出栈操作

47、:POP direct;POP direct;POP direct;POP direct;(sp)(direct),sp-1sp(sp)(direct),sp-1sp(sp)(direct),sp-1sp(sp)(direct),sp-1sp【举例举例】:设片内:设片内RAM的的30h单元存有单元存有x,40h单元单元存有存有y。试将两个单元内。试将两个单元内容互换。容互换。push 30h push 40h pop 30h pop 40hRAMRAMx yx y y x y xy yx x栈底栈底栈底栈底SP=07hSP=07h40h40h30h30h例如:设例如:设例如:设例如:设(A)=

48、(A)=7BH7BH;(35H)=11H;(35H)=11H 并且知道(并且知道(并且知道(并且知道(SPSP)60H60H PUSH ACC ;(61H)PUSH ACC ;(61H)#7BH#7BH PUSH 35H ;(62H)PUSH 35H ;(62H)(35H)(35H)即:即:即:即:(62H)(62H)#11H#11H POP ACC ;(A)POP ACC ;(A)(62H)(62H)即:即:即:即:(A)(A)#11H#11H POP 5AH ;(5AH)POP 5AH ;(5AH)(61H)(61H)即:即:即:即:(5AH)(5AH)#7BH#7BH将外部将外部将外部将

49、外部RAM 2000HRAM 2000H中的内容送外部中的内容送外部中的内容送外部中的内容送外部2009H2009H单元。单元。单元。单元。书上部分例题书上部分例题MOV DPTRMOV DPTR,#2000H#2000HMOVX A,MOVX A,DPTR DPTR MOV DPTRMOV DPTR,#2009H#2009HMOVX MOVX DPTRDPTR,A ARETRET设设设设累累累累加加加加器器器器A A中中中中为为为为1616进进进进制制制制表表表表示示示示(00H09H00H09H)的的的的BCDBCD码码码码。试试试试编编编编程程程程将将将将其其其其转转转转换换换换为为为为

50、ASCASC码码码码,并并并并将将将将其其其其送送送送到到到到50H50H地地地地址址址址单单单单元元元元中中中中。这是一个数值转换程序。这是一个数值转换程序。这是一个数值转换程序。这是一个数值转换程序。解:首先建立解:首先建立解:首先建立解:首先建立ASCASC码表:码表:码表:码表:ORG 2100HORG 2100H TABASC:TABASC:DB 30HDB 30H,31H31H,32H32H,33H33H,34H34H,35H35H,36H36H,37H37H,DB 38HDB 38H,39H39H ORG 210FH ORG 210FH MOV R0,A MOV R0,A MOV

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服