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

时间:2023-03-11作者:佚名
  一、传送类指令
  (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
  (3)堆栈指令
  
① 指令 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 ;否则,传送结束

相关阅读

家用漏电开关为什么会跳闸?学会以下4招帮你快速解决问题!

家庭都装有漏电开关,时常发生跳闸现象,如果一天跳几次,找不到原因,就让人实在很烦恼!有的是属漏电引起的正常跳闸,有的并非是漏电引起的跳闸。为什么会频繁跳闸?主要有以...
2023-06-11
家用漏电开关为什么会跳闸?学会以下4招帮你快速解决问题!

贴片电容是否有正负极区分-干货(建议收藏)

贴片电容正负极要怎么区分及如何判断?首先在了解贴片电容正负极之前先了解下贴片电容简介。贴片电容是一种电容材质。贴片电容全称为:多层(积层,叠层)片式陶瓷电容器,也...
2023-03-31
贴片电容是否有正负极区分-干货(建议收藏)

钳位二极管保护电路图 TVS钳位二极管保护原理详解

一、什么是钳位二极管 钳位二极管其实就是TVS 管,也就是瞬态抑制二极管的简称(Transient Voltage Suppressor)。它是在稳压二极管的基础上发展而来的,是一种二极管形式的新型高效能保...
2023-08-18
钳位二极管保护电路图 TVS钳位二极管保护原理详解

利用单片机IO引脚驱动LED电路

早期的51单片机,驱动能力很低。P1、P2和P3口只能驱动3个LSTTL输入端,P0口可驱动8个。如果想要驱动更多的器件,就要用到“总线驱动芯片”。经常用的就是74LS244(单向)和74LS245(双向)。...
2023-08-24
利用单片机IO引脚驱动LED电路

直流电动机的相关介绍及常见故障及处理

直流电机铭牌数据主要包括:电机型号、额定功率、额定电压、额定电流、额定转速和励磁电流及励磁方式等,此外还有电机的出厂数据,如出厂编号、出厂日期等。 国产电机的型号一...
2023-06-13
直流电动机的相关介绍及常见故障及处理

热销商品

德国进口雅马哈风力灭火机大功率手提森林灭火器落叶工地吹雪机汽

德国进口雅马哈风力灭火机是一款高效、可靠的森林灭火和清理设备。它拥有大功率风机,能够迅速吹散落叶、杂草和积雪,有效清理工地和森林地面。这款灭火机采用先进技...
¥ 692.5

3M自粘橡胶条高硬度耐压实心幕墙玻璃舞台搭建货架专用减震密封条

3M自粘橡胶条是一款专为高要求工业及建筑场景设计的高性能密封减震材料,采用高硬度实心橡胶材质,具备优异的耐压性、抗老化性和持久弹性。其独特的自粘背胶设计,安装...
¥ 1.6

公牛官方旗舰店开关插座空调16A插座五孔10A面板暗装多孔G12白灰

公牛官方旗舰店提供一系列高质量的开关插座和空调配件。这款16A插座五孔面板采用暗装设计,适用于多种安装环境,如墙面、天花板等。它具有10A的电流容量,可以满足家庭...
¥ 5.55

电位器旋钮电流调节螺帽直流逆变电焊机二保焊送丝机通用旋钮B102

电位器旋钮电流调节螺帽适用于直流逆变电焊机和二保焊送丝机,是一款通用的旋钮B102。该旋钮采用优质材料制造,具有耐磨损、耐高温、耐腐蚀等特点,能够长时间稳定运行...
¥ 0.7

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店,作为西门子品牌的专卖店,提供了一系列高品质、设计新颖的家居电气产品。这里销售的开关插座采用无框...
¥ 8.77

网站栏目