单片机
返回首页

汇编语言程序分析-51单片机

2018-05-11 来源:eefocus

人工汇编出下列程序机器代码,并分析该程序段的执行功能。

      CLR A

      MOV R2, A

      MOV R7, #4

LOOP:

     CLR C

      MOV A, R0

      RLC A

      MOV R0, A

      MOV A, R1

      RLC A

      MOV R1, A

      MOV A, R2

      RLC A

      MOV R2, A

      DJNZ R7, LOOP

      SJMP $

;-------------------

问题补充:问 做而论道:

为什么是把 R1的高4位,移入R2的低4位? 而不是 R2中的数,也左移4位,右边填入4个0?

还有哪儿看出来是16位数???

;==================================

最佳答案:

0000 7812    MOV   R0, #12H

0002 7934    MOV   R1, #34H

0004 E4      CLR   A

0005 FA      MOV   R2, A

0006 7F04    MOV   R7, #04H

0008 C3      CLR   C

0009 E8      MOV   A, R0

000A 33      RLC   A

000B F8      MOV   R0, A

000C E9      MOV   A, R1

000D 33      RLC   A

000E F9      MOV   R1, A

000F EA      MOV   A, R2

0010 33      RLC   A

0011 FA      MOV   R2, A

0012 DFF4    DJNZ R7, 0008H

0014 80FE    SJMP $

;-----------------

程序功能:将R1R0中的16位数,左移4位,右边填入4个0,R1的高4位,移入R2的低4位。

;-----------------

对补充提问的回答:

程序中,参与向左移位的是R2R1R0,共有24位数字。

但是,在你的程序中,事先已经将R2清零,所以实际被移动的只有R1R0中的16位数字。

在你的程序前面,我加上了两行,使得R1 R0=34 12H;

程序执行后,R2 R1 R0=03 41 20H。

程序的功能,即如前所述。

;------------------


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章