实例讲解单片机汇编程序

  单片机汇编语言编程

  1.编写程序,用位处理指令实现“P1.4=P1.0∨(P1.1∧P1.2)∨P1.3”的逻辑功能。

  MOV C,P1.1

  ANL C,P1.2

  ORL C,P1.0

  ORL C,P1.3

  MOV P1.3,C

  2.编写程序,若累加器A的内容分别满足下列条件,则程序转到LABLE存储单元。设A中存放的的无符号数。

  (1)A≥10; (2)A>10; (3)A≤10。

  (1)

  CJNE A,#10,NEXT

  LJMP LABLE

  NEXT:

  JNC LABLE

  (2)

  CJNE A,#10,NEXT

  LJMP NEXT2

  NEXT:

  JNC LABLE

  NEXT2:

  (3)

  CJNE A,#10,NEXT

  LJMP LABLE

  NEXT:

  JC LABLE

  3.编写程序,查找片内RAM的30H~50H单元中是否有55H这一数据,若有,则51H单元置为FFH;若未找到,则将51H单元清0。

  MOV R0,29H

  NEXT:

  INC R0

  CJNE R0,#51H,NEXT2

  MOV 51H,#0FFH

  AJMP OVER

  NEXT2:

  CJNE @R0,#55H,NEXT

  MOV 51H,#0

  OVER:

  4.编写程序,查找片内RAM的30H~50H单元中出现0的次数,并将查找的结果存入51H单元。

  MOV R0,30H

  MOV 51H,#0

  NEXT:

  CJNE @R0,#00H,NEXT2

  INC 51H

  NEXT2:

  INC R0

  CJNE R0,#51H,NEXT

  5.在片外RAM中有一个数据块,存有若干字符、数字,首地址为SOURCE要求将该数据块传送到片内RAM以DIST开始的区域,直到遇到字符“$”时结束($也要传送,它的ASCII码为24H)。

  MOV DPTR,#SOURCE

  MOV R0,#DIST

  NEXT:

  MOVX A,@DPTR

  MOV @R0,A

  INC DPTR

  INC R0

  CINE A,#24H,NEXT

  6.片内RAM的30H和31H单元中存放着一个16位的二进制数,高位在前,低位在后。编写程序对其求补,并存回原处。

  CLR C

  MOV A,#0

  SUBB A,31H

  MOV 31H,A

  MOV A,#0

  SUBB A,30H

  MOV 30H,A

  7.片内RAM中有两个4字节压缩的BCD码形式存放的十进制数,一个存放在30H~33H单元中,另一个存放在40H~43H单元中。编写程序将它们相加,结果的BCD码存放在30H~33H中。

  CLR C

  MOV R0,#30H

  MOV R1,#40H

  MOV R2,#4

  NEXT:

  MOV A,@R0

  ADDC A,@R1

  MOV @R0,A

  INC R0

  INC R1

  DJNZ R2,NEXT

  8.编写程序,把片外RAM从2000H开始存放的16字节数据,传送到片内从30H开始的单元中。

  MOV DPTR,#2000H

  MOV R0,#30H

  MOV R1,#0

  NEXT:

  MOVX A,@DPTR

  MOV @R0,A

  INC DPTR

  INC R0

  INC R1

  CINE R1,#16H,NEXT

技术专区

  • mybatis动态sql详解
  • 用VHDL语言设计数据传输系统中的HDB3编码器
  • 裸机程序如何驱动硬件?看前辈是怎么说的
  • 应用面向对象编程SoC原则的典型示例
  • 嵌入式开发之java常用开发工具介绍
  • 实例讲解单片机汇编程序已关闭评论
    A+
发布日期:2019年07月14日  所属分类:物联网