打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
实验四

实验四 数据传送类指令编程应用

一、实验目的

(1) 掌握数据传送类指令和功能

(2) 掌握各种数据指令的编程应用。

二、实验设备

单片机IDE集成开发软件KEIL

三、实验要求

验证“实验原理”一节中给出的实例程序,最基本、最主要的指令,共有29条,包括数据传送、数据交换、栈操作三类。目的单元为A时影响P标志。

四、实验原理及实验内容

作为软件实验,可以在没有硬件及仿真仪的情况下,利用集成开发环境进行。

1、内部RAM间的数据传送(16条)

1)指令格式

指令格式:MOV   [目的字节][源字节]  

功能:把源字节指定的变量传送到目的字节指定的存储单元中,源字节内容不变。

2)操作数

操作数:ARndirect@RiDPTR#data

传送关系如下图所示:


3)指令描述举例:

       A目的操作数

       MOV     ARn ARn     

       Rn为目的操作数

       MOV             Rndirect Rndirect     

       direct为目的操作数

       MOV      direct1direct2 direct1direct2        

       MOV      direct @Ri   direct((Ri))

       @Ri为目的操作数

       MOV             @Ri   A ((Ri))A

       MOV             @Ri  #data;((Ri))← data

       16位数据传送指令

       MOV  DPTR #data168位送DPH8位送DPL

实验内容3-170H= 60H,(60H=20H

 MOV     R0       #70H                   

   MOV     A @R0                  

   MOV     R1       A                 

 MOV     B @R1

   MOV   @R0    P1         

   结果     B    =

                     R1  =

                     R0  =

要求掌握指令功能、查表求机器码、寻址方式、结果

实验内容3-2:给出下列指令的执行结果,指出源操作数的寻址方式。

       MOV 20H     #25H

           MOV      25H     #10H

           MOV      P1       #0CAH

           MOV      R0       #20H

           MOV      A @R0

           MOV      R1       A

           MOV      B @R1

           MOV      @R1P1

           MOV      P3       R1

结果

       20H=?,      25H=?,      P1=?,

       R0=?, A=?,   R1=?,

       B=?,   25H=?,      P3=

2ACC与外部数据存储器(或扩展I/O口)传递数据MOVX

              MOVX    A @DPTR

              MOVX    A @Ri 均为单字节指令      MOVX    @DPTR      A

              MOVX    @Ri    A

功能:A与外部RAM或扩展I/O口数据的相互传送。

说明:

1)用Ri进行间接时只能寻址256个单元(0000H~00FF),当访问超过256个字节的外RAM空间时,需利用P2口确定高8位地址(也称页地址),而用DPTR进行间址可访问整个64KB空间。

2)在执行上述读、写外RAM指令时,P3.7RD)、P3.6WR)会相应自动有效。

3)可用作为扩展I/O口的输入/输出指令

实验内容3-3:将外RAM 2010H中内容送外RAM 2020单元中。

分析:读2010H中内容→A→写数据→2020H

流程如右图:

程序如下:

MOV   P2#20H ;输出高8位地址

MOV   R0#10H ;置8位间接地址

MOVX  A@R0 ;读2010H中数据

MOV   R1#20H;置8位间接地址

MOVX  @R1A ;将A中数据写入2020H

3、查表指令MOVC

表格:程序存储器除存放程序外,还可存放一些常数,这种数据的结构称为表格。

访问:通过两条程序存储器取数指令,即查表指令来访问,完成从ROM中读数,并只能送累加器A           

指令格式:

MOVC    A@A+DPTR;(A((A+DPTR))

MOVC    A@A+PC ;(PCPC+1,(A((A+PC))

特点:单字节指令,源操作数为变址寻址,执行时, PSEN会自动有效。

功能:以DPTRPC为基地址,与A中的8位无符号数相加,得到一个新16位地址,将其内容送A

1)用DPTR作为基寄存器

实验内容3--4:设外部ROM2000H单元开始的连续10个字节中已存放有0~9的平方数,要求根据A中的内容(0~9)来查找对应的平方值。

       STARTMOV             A        #3

                      MOV  DPTR  #TABLE 

MOVC        A @A+DPTR     

               ORG      2000H     

TABLEDB     0149162536496481

结果:A ←?,(A=

特点:可访问整个ROM64KB空间,表格可放在ROM的任何位置,与MOVC指令无必然的关系。

2)用PC作为基寄存器

实验内容3-5ORG    1000H

                 1000H     MOV     A#30H

                 1002H     MOVC    A@A+PC

       结果是:A ←

优点:不改变PC的状态,根据A的内容取表格常数。

缺点:

1)表格只能存放在查表指令以下的256个单元内。

2)当表格首地址与本指令间有其他指令时,须用调整偏移量,调整量为下一条指令的起始地址到表格首址之间的字节数。

实验内容3-6:阅读下列程序,给出运行结果 ,设(A=3

1000H            ADD     A#02H           ;加调整量

1002H               MOVC   A@A+PC         ;查表

    1003H               NOP

    1004H               NOP

    1005H    TAB  DB    667788H99H‘W’10’

结果:(A=

显然,2NOP指令没有时,不需调整。

4、堆栈操作

堆栈,由特殊功能寄存器SP81H)管理,始终指向其栈顶位置,栈底视需要设在内部RAM128B内。

1)进栈操作:      PUSH              direct 

功能:先(SPSP+ 1,再((SP))direct);

其中:direct为源操作数;目的操作数为@SP,隐含。

实验内容3-7:已知:(A=30H,(B=70H           

执行:   MOV             SP       #60H      ;设栈底

                     PUSH            ACC        

                     PUSH            B

结果:(61H=?,(62H=?,(SP=

2)出栈操作:      POP     direct

 功能:先(direct((SP)),再SP ←SP)-1

 其中:direct为目的操作数,源操作数为@SP,隐含。

实验内容3-8:已知:(SP=62H,(62H=70H,(61H=30H

       执行:           POP    DPH   

                            POP    DPL   

       结果:(DPTR=?,(SP=

5、与A的数据交换指令

数据交换指令共5条,完成累加器和内部RAM单元之间的字节或半字节交换。

1)整字节交换:

              XCH   ARn              ;(A←→Rn

              XCH   Adirect      ;(A←→direct

              XCH   A@Ri     ;(A←→((Ri))

       2)半字节交换:

              XCHD    A@Ri ;(A0~3←→((Ri))0~3  

3)累加器自身高低4位交换

              SWAP     A            ;(A7~4←→A3~0   

实验内容3-9 设(A=57H,(20H=68H,(R0=30H,(30H=39H,求下列指令的执行结果

1XCH          A20H

结果:(A=?,(20H=

2XCH          A@R0

结果: A=?,(30H=

3XCH          AR0            

结果: A=?,(R0=

4XCHD        A@R0          

结果: A=?,(30H=

5SWAP        A         

结果: A=

实验内容3-10:设内部RAM 40H41H单元中连续存放有4个压缩的BCD码数据,试编程序将这4BCD码倒序排列。

分析:流程如右图
 

编写程序

 

 

 

 

五、实验步骤

1、分别编写调用程序,然后在开发环境中编译运行,写出实验内容的结果

六、实验报告

1、分别编写调用程序,然后在开发环境中编译运行,写出实验内容的结果

2、给出各个程序的清单,要求有注释。

3MCS-51系列单片机有数据传送指令?列出这些指令,并说明其功能。

 

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
指令系统的分类
51单片机指令系统:数据传送(5)
单片机指令快速记忆方法总结
单片机指令
51汇编指令
单片机开发基础知识
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服