• IIANews微官网
    扫描二维码 进入微官网
    IIANews微信
    扫描二维码 关注微信
    移动客户端
  • English
2025全景工博会 菲尼克斯电气二级-以太网
嵌入式系统

单片机数据传送类指令和控制转移指令讲解

  2015年03月25日  

  一、传送类指令

  (1)片内数据传送指令 (16条)

  此类指令参入的源操作数和目的操作数有 #data/A/Rn/@Ri/direct 五个,其不同组合,共有 15 条指令

  (2)片外数据传送指令 (4条)

  当你想把一个数送到单片机外部扩展 RAM 的某个单元或外部扩展 I/O 口某个端口,或者你想从该 单元、端口将数据取回到单片机内部的时候,就要用到片外数据传送指令。

  MOVX A , @Ri ; A ← ((Ri)) 片外

  MOVX @Ri , A ; (Ri) 片外← A

  MOVX A , @DPTR ; A ← ((DPTR)) 片外

  MOVX @DPTR , A ; (DPTR) 片外← A

  单片机与外部数据存储器数据传送采用两种寻址方式,这两种寻址形式都是间接寻址。一种是单字节寻址 @Ri ,一种是双字节寻址 @DPTR ,另一个操作数是 A . 共有 4 条指令。

  (3)数据交换指令(5条)

  ① 指令: XCH A ,〈 byte 〉

  功能:交换累加器与字节变量中的数据。

  XCH 指令把指定字节的内容装入累加器 A 中,同时把累加器中原来的内容写入指定的字节中。源操作数有 Rn/direct/@Ri, 目的操作数是 A, 共三条指令。

  例 2.5 设 RO 寄存器内容为 20H ,累加器 A 内容为 3FH ,内部 RAM 的 20H 单元内容为

  75H ,若执行指令: XCH A , @RO 则结果为:( 20 ) =3FH ,( A ) =75H

  ② 指令: XCHD A, @Ri

  功能:低半字节数据交换,执行操作( A3-0 )←→(( Ri ) 3-0 )

  说明:累加器 A 中的低 4 位与由指定的寄存器间接寻址的内部 RAM 单元的低 4 位数据进行交换。该指令不影响各寄存器的高 4 位,也不影响标志位。

  例 设 RO 内容为 20H ,累加器内容为 36H ,内部 RAM 的 20H 单元内容为 75H ,若执行指令 XCHD A , @RO

  其结果为 ( 20H ) =0111011=76H

  ( A ) =00110101B=35H

  ③ 指令: SWAP A

  A 的高四位和其低四位交换,

  如 : 当 A 内容为 36H 时执行 SWAP A 后 A 为 63H

  (4)堆栈指令

  ① 指令 PUSH direct 功能:把程序的中间数据送入堆栈,称为进栈。

  说明:首先栈指针自动加 1 ,执行( SP )←( SP ) +1 将栈指针移向堆栈中的无数 据字节,然后将直接地址( direct )单元的内容送入 SP 所指向的栈单元中,执行( SP )←( direct ),不影响标志位。

  例 设堆栈指针为 09H ,数据指针内容为 0123H ,试分析下列指令的执行结果。

  PUSH DPL

  PUSH DPH

  执行结果为:( 0AH ) =23H ,

  ( 0BH ) =01H ,( SP ) =0BH

  ② 指令: POP direct 功能:把堆栈中的中间数据送入目的字节,称为出栈。

  说明:读出由栈指针寻址的内部 RAM 单元内容。送到指定的直接寻址的字节单元,然后栈指针自动减 1 ,即执行操作:

  ( direct )← ((SP)),(SP) ← (SP)-1; 指令执行不影响标志位。

  例 设( SP ) =32H ,内部 RAM 的 31H ,32H 单元中的内容分别为 23H , 01H ,试分析下列指令的执行结果。

  POP DPH

  POP DPL

  执行结果为( DPTR ) =0123H,

  (SP) =30H 。

  二、控制转移指令

  (1)长转移指令

  LJMP 目标语句

  说明:目标语句可以是程序存储器 64KB 空间的任何地方。

  (2)绝对转移指令

  AJMP 目标语句

  例: 4002H LJMP MM

  ……

  4600H MM : MOV A , #00H

  注意:目标语句必须和当前语句同页。在 51 单片机中, 64KB 程序存储器分成 32 页,每页 2KB(7FFH) 。

  (3)短跳转指令

  SJMP 目标语句 (rel)

  例:

  4060H SJMP LOOP

  ……

  4090H LOOP : MOV A , #0FFH

  ……

  注意:短跳转的目标语句地址必须在当前语句向前 127 ( 7FH )字节,向后 128 ( 80H )字节,否则在进行程序编译时会出错。

  (4)减 1 条件转移指令组

  DJNZ Rn ,目标地址 (rel) ;如果 (Rn)-1 ≠ 0 ,则程序跳转到目标语句,否则顺序执行下一条语句。

  DJNZ direct, 目标地址 (rel) ;如果 (direct)-1 ≠ 0 ,则程序跳转到目标语句,否则顺序执行下一条语句。

  例 : 将 8031 内部 RAM 的 40H~4FH 单元置初值 A0H~AFH 。程序为:

  MOV RO , #40H ; RO 赋值,指向数据单元

  MOV R2 , #10H ; R2 赋值,为传送字节数

  MOV A , #0A0H ; A 赋值

  LOOP : MOV @ RO , A ;开始传送

  INC , RO ;修改地址指针

  INC A ;修改传送数据

  DJNZ R2 , LOOP ;未传送完,继续循环传送

  RET ;否则,传送结束

最新视频
普尔世自主移动机器人无线补能方案   
杰和科技IB3-993嵌入式主板赋能无人机控制   
福禄克钢铁冶金行业测温解决方案专题
魏德米勒SNAP IN鼠笼式联接技术试用活动
Creo:在更短的时间内交付更好的设计
专题报道
《我们的回答》ABB电气客户故事
《我们的回答》ABB电气客户故事 ABB以电气问题解决专家之志,回答未来之问。讲述与中国用户携手开拓创新、引领行业发展、推动绿色转型的合作故事,共同谱写安全、智慧和可持续的电气化未来。
企业通讯
重新定义可靠传动,共同创造美好未来!
重新定义可靠传动,共同创造美好未来!

完美无谐波 GH180 变频器于1994 年问世,是变频器行业的一次重大技术变革,在可靠性和创新方面不断树立工业标准。伴

AI有路,轻装以赴:一家工业AI上市公司,如何跑通数字化工厂?
AI有路,轻装以赴:一家工业AI上市公司,如何跑通数字化工厂?

本次研讨会以一家工业AI上市公司的亲身实践为视角,聚焦实战方法论,分享可落地、可借鉴的转型经验。中控技术希望借此让大家清

在线会议
热门标签

社区