基于AT89S51数据传送类指令程序

发布时间:2023-07-21  

数据传送类指令是编程时使用最频繁的一类指令。一般数据传送类指令的助记符为“MOV”,通用的格式如下:

MOV,数据传送类指令是把源操作数传送到目的操作数。指令执行后,源操作数不改变,目的操作数修改为源操作数。所以数据传送类操作属“复制”性质,而不是“搬家”。


数据传送类指令不影响标志位,这里所说的标志位是指Cy、Ac和OV,但不包括检验累加器奇偶标志位P。

1.以累加器为目的操作数的指令

基于AT89S51数据传送类指令程序

这组指令的功能是把源操作数的内容送人累加器A,源操作数有寄存器寻址、直接寻址、间接寻址和立即数寻址等方式,例如指令:

2.以Rn为目的操作数的指令

这组指令的功能是把源操作数的内容送入当前工作寄存器区的RO~R7中的某一个寄存器。

3.以直接地址direct为目的操作数的指令

基于AT89S51数据传送类指令程序

这组指令的功能是把源操作数送入直接地址指定的存储单元。direct指的是内部RAM或SFR地址。

4.以寄存器间接地址为目的操作数的指令

这组指令的功能是把源操作数内容送入RO或Rl指定的存储单元中。

5. 16位数传送指令

这条指令的功能是把16位立即数送入DPTR,用来设置数据存储器的地址指针。AT89S51中设有两个DPTR,通过设置特殊功能寄存器AUXR1中的DPS位来选择。当DPS-I,则指令中的DPTR即为DPTR1,DPTRO被屏蔽,反之亦然。DPTR既是一个16位的数据指针,又可分为DPH和DPL两个8位寄存器进行操作,十分灵活、方便。设有两个DPTR后,可避免频繁地出入堆栈操作。

对于所有MOV类指令,累加器A是一个特别重要的8位寄存器,CPU对它具有其他寄存器所没有的操作指令。后面将要介绍的加、减、乘、除指令都是以A作为目的操作数的。Rn为CPU当前所选择的寄存器组中的RO~R7,直接地址指定的存储单元为内部RAM的OOH~7FH和特殊功能寄存器(地址范围为80H~FFH)。在间接地址中,用RO或Rl作为内部RAM的地址指针,可访问内部RAM的OOH~7FH共128个单元。

6.堆栈操作指令

在AT89S51的内部RAM中可以设定一个后进先出(LIFO,Last In First Out)的区域,称为堆栈。在特殊功能寄存器中有一个堆栈指针SP,它指定堆栈的栈顶位置。堆栈操作有进栈和出栈两种,因此,在指令系统中相应有两条堆栈操作指令。

(1)进栈指令

这条指令的功能是,首先将栈指针SP加1,然后把direct中的内容送到栈指针SP指示的内都RAM单元中。

例如,当(SP)=60H,(A)=30H,(B)=70H时,执行下列指令

结果为(61H)=30H,(62H)=70H,(SP)=62H。

(2)出栈指令

这条指令的功能是,将栈指针SP指示的栈顶(内部RAM单元)内容送入direct字节单元中,栈指针SP减1。

例如,当(SP)=62H,(62H)=70H,(61H)=30H时,执行下列指令:

结果为(DPTR)=7030H,(SP)=60H。

7.累加器A与外部数据存储器RAM/IO传送指令

上述4条指令的助记符是在MOV的后面加“X”,“X”表示AT89S51单片机访问的是片外RAM存储器或I/O口,是读外部RAM存储器或I/O口中的一个字节的数据到累加器A中,或将累加器A中的一个字节的数据写入外部RAM存储器或I/O口中。所以在执行前两条指令时,RD(的反)(P3.7)有效;执行后两条指令时,WR(P3.6)有效。

采用16位的DPTR进行间接寻址,可寻址整个64KB片外数据存储器空间,高8位地址(DPH)由P2口输出,低8位地址(DPL)由PO口输出。

采用Ri(i=0.1)进行间接寻址,可寻址片外256个单元的数据存储器。8位地址由PO口输出,锁存在地址锁存器中,然后PO口再作为8位数据口。


8.查表指令

这类指令共两条,均为单字节指令,这是AT89S51指令系统中仅有的两条读程序存储器中表格数据的指令。由于对程序存储器只能读不能写,因此其数据的传送都是单向的,即从程序存储器中读出数据到累加器中。两条查表指令均采用基址寄存器加变址寄存器间接寻址方式。

这条指令以PC作为基址寄存器,A的内容作为无符号整数和PC的当前值(下一条指令的起始地址)相加后得到一个新的16位地址,把该地址指定的程序存储单元的内容送到累加器A。

例如:当(A)=30H时,执行地址1000H处的指令

该指令占用一个字节,下一条指令的地址为1001H,(PC)=1001H再加上A中的30H,得1031H,结果是将程序存储器中1031H的内容送入累加器A。

这条指令的优点是不改变特殊功能寄存器及PC的状态,根据A的内容就可以取出表格中的常数。缺点是表格只能存放在该条查表指令所在地址的+256个单元之内,表格的大小受到限制,而且表格只能被一段程序所利用。

这条指令以DPTR作为基址寄存器,A的内容作为无符号数和DPTR的内容相加得到一个16位地址,把由该地址指定的程序存储器单元的内容送到累加器A。

例如:(DPTR)=8100H,(A)=40H,执行指令

结果是将程序存储器中8140H单元内容送入累加器A中。

这条查表指令的执行结果只与指针DPTR及累加器A的内容有关,与该指令存放的地址及常数表格存放的地址无关,因此表格的大小和位置可以在64KB程序存储器空间中任意安排,一个表格可以为各个程序块公用。

上述两条指令的助记符都是在MOV的后面加“C”,“C”是CODE的第一个字母,即表示程序存储器中的代码。执行上述两条指令时,单片机的PSEN引脚信号(程序存储器读)有效。

9.字节交换指令

这组指令的功能是将累加器A的内容和源操作数的内容相互交换。源操作数有寄存器寻址、直接寻址和寄存器间接寻址等方式。例如:

执行下列指令:

结果为(A)=OFH,(R7)=80H,(40H)=08H,(30H)=FOH。

10.半字节交换指令

这条指令的功能是,累加器的低4位与内部RAM低4位交换。例如:(RO)=60H,(60H)=3EH,(A)=59H,执行完“XCHD A,@RO”指令,则(A)=5EH,(60H)=39H。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    和漏型的公共端接线不同。 常见的导线颜色含义说明 三菱PLC特殊功能模块FROM和TO指令的......
    基本的东西应该都包括的: 1、了解指令的累加器,状态字等内容。 2、指令的组成以及各部分的含义,无论是高级语言的if then else, 还是PLC的A AN JNB,指令的组成部分以及表示的含义需要搞清楚; 3、了解......
    →ON)时接通一个扫描周期。 (4)LDF(取下降沿指令) 与左母线连接的常闭触点的下降沿检测指令。 (5)OUT(输出指令) 对线圈进行驱动的指令,也称为输出指令。 取指令与输出指令的使用说明:1)LD......
    for Tool Parameters ”。设置界面如下: 图4.配置烧写指令 其中[Run Independent]的含义是,是否让 Keil 不需要等待该命令行执行完毕。我们希望按顺序执行,所以......
    种方式都是完全不同的,下面做具体介绍。 PLC作为TCP服务器的实战应用   PART 01   (1)PLC编程 1.1   创建一个TCPServer的子程序,拖拽一个TCP_CONNECT的库指令,对于该指令的每个引脚对应的含义......
    bits的含义: 异常向量表 异常向量表是一段特定内存地址空间,每种ARM异常对应一个字长空间(4Bytes),正好是一条32位指令长度,当异常发生时,CPU强制将PC的值......
    器中,当用户没有提供相应中断源的中断服务程序时,会在中断向量位置放置一个软件复位中断指令SWR,这时如果有一个意外中断发生时,便触发了软件复位使得器件复位。 图7 默认中断软件复位指令说明 规格书中也有说明......
    变频器接线端子的含义和功能;变频器的接线一般可以分为主回路接线和控制回路接线,为了能够更好的说明变频器的正确接线,我们参考以下变频器接线图来说明问题,其他变频器也是类似的接线,再给大家分享一些端子的含义......
    代表的是R0-R7。第二条指令中,direct就是指的直接地址,而第三条指令中,就是我们刚才讲过的。第四条指令是将立即数data送到A中。   下面我们通过一些例子加以说明:   MOV A,R1......
    清零的操作,指令RL A是执行使A各位内容依次循环向左移动一位的操作. 程序状态字 程序状态字PSW是一个8位寄存器,它包含了许多程序状态信息,其各位的含义见图1-2-2 PSW各位的含义如表1-2......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>