人工汇编出下列程序机器代码,并分析该程序段的执行功能。
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。
程序的功能,即如前所述。
;------------------
关键字:汇编语言 51单片机
引用地址:
汇编语言程序分析-51单片机
推荐阅读最新更新时间:2024-03-16 16:02
8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
相较单倒计时器对timer0初值的设定, 此处将中断处理程序触发时间间隔改为5ms, 目的是给人在视觉上以更好的体验(设定为10ms会明显感觉到闪烁). #include STC89C5xRC.H unsigned char code DIG_CODE = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};//对应数码管显示0~9 int tcount = 0;//记录经过的5ms区间段个数 int sec1 = 15, sec2 = 25;//倒计时初始值 void T0_INT() interrupt 1 //timer0中断, 每5m
[单片机]
基于51单片机和PDIUSB12的USB接口设计
简介:为解决51单片机与计算机的串行总线(USB)的通信问题,以PDIUSB12芯片为基础,选择51单片机中的STC89C52为示例,设计了一款USB的接口电路,解决了多款51单片机与计算机的USB通信困难的问题。 引言 USB因其使用方便、传输速度快、连接灵活而受到用户和计算机厂商的广泛青睐。微控制器(MCU)在与计算机实现通信时大多依靠USB来实现。在MCU中,51单片机是国内使用最广的单片机之一,但是由于多款51单片机无法直接与计算机实现USB通信,而给许多用户开发和使用带来不便。本文以51单片机中的典型代表STC89C52和恩智浦半导体公司的PDIUSB12为基础设计的USB接口电路,解决了MCU和计算机的USB通信问
[单片机]
MCS-51单片机嵌入式Internet技术的工作原理简述
实现MCS-51 单片机嵌入式接入Internet 技术。单片机通过ATL8019AS 以太网控制器实现与Internet 的交互。利用开源代码的TCP/IP 协议栈uIP 实现对底层设备的驱动,同时通过uIP 协议的应用程序接口实现各种应用服务。给出了硬件设计图,编写了单片机主程序。应用此技术实现了一个城市中心停车监测系统。 近年来以单片机(Micro Computer Unit,MCU)为代表的嵌入式系统在工业探测系统、智能仪器、安防系统、智能家电和信息家电领域得到了广泛应用。 如果嵌入式系统能够连接到Internet 上,则用户可以方便、快捷、低廉地通过网络进行远程控制、监测和信息传送。Internet 技
[单片机]
ARM汇编语言入门(四)
Part 4 内存指令:加载和存储 ARM使用加载(Load)/存储(Stroe)指令来读写内存,这意味着你只能使用LDR和STR指令访问内存。在ARM上数据必须从内存中加载到寄存器之后才能进行其他操作,而在x86上大部分指令都可以直接访问内存中的数据。如前所述,在ARM上增加内存里的一个32-bit数据值,需要三个指令(load,increment,store)。为了解释 ARM 上的 Load 和 Store 操作的基本原理,我们从一个基本示例开始,然后再使用三个基本偏移形式,每个偏移形式具有三种不同的寻址模式。为了简单化,每个示例,我们将在同一段汇编代码中使用不同 LDR/STR 偏移形式的。遵循这本段教程的最佳方法是在你的
[单片机]
51单片机 ret和reti
原来在8051构架中--中断系统中含有两个不可寻址的“优先级生效”触发器。一个用于指出CPU是否正在执行高优先级的中断服务程序,这个触发器为1时,系统将屏蔽所有的中断请求;另一个则指出CPU是否正在执行低优先级中断服务程序,该触发器为1时,将阻止除高优先级以外的一切中断请求。由此可见,若要响应同级甚至是低级中断请求,必须使得该“优先级生效”触发器清零。但该触发器又是不可寻址的,所以无法用软件直接清零。” 通常情况下,在普通的汇编子程序中用RET做返回,在中断服务子程序中用RETI起中断返回作用。两条指令都能从堆栈中弹出断点地址并装入PC中,使 CPU回到原来主程序的断点处继续运行。然而,RET和RETI有本质的区别:当某一中断源响
[单片机]
基于51单片机理解SG90舵机原理并用按键控制
具体功能实现 当按下开关时,舵机的角度分别运行到0°,45°,90°,135°,180°,0°(最后停止位置),其中每转动一个角度时间延时1s。 器件: AT89C52,sg90舵机,三根杜邦线公对母,两支按键 转动角度展示图: 转动至45° 转动至180° 转动至90° 知识介绍: sg90舵机简介 由直流电机、减速齿轮组、传感器(可变电阻)和控制电路组成的一套自动控制系统。 直流电机是一圈圈转动的,舵机只能在一定角度内转动(有最大旋转角度比如:180度),不能一圈圈转。 外部中断: STC89C52有4个外部中断; STC89C52的外部中断有两种触发方式: 下降沿触发和低电平触发 下降沿触发:当按键按
[单片机]
基于51单片机的多普勒血流计系统方案
激光多普勒血流计是微循环研究中用于测定组织、微区血流灌注流量、微循环状态的仪器。利用多普勒移动分量来测定血细胞流量,是一种非损伤、快速、连续、直接测量组织微区灌流量的新方法,对医学研究有重要意义。本文主要介绍了利用多普勒现象设计的激光多普勒血流计,论述了用51单片机实现的新方法和新措施。 多普勒血流计的出现标志着在微血管灌流方面取得重大进步。本设计采取双通道装置拾取多普勒信号,有效地抑制噪声信号,采用单片机来对信号进行控制及处理,既简化了电路,又有助于信号的处理及读取。运用12位的AD574A不但提高了信号精度,利用其双极性,也省去了以往信号处理中复杂的乘方、开方电路或绝对值电路。通过四位LED显示,直观、准确地读取血细胞灌流量的
[单片机]
80C51单片机的定时器/计数器介绍
定时器/计数器介绍 定时/计数器T0和T1分别是由两个8位的专用寄存器组成,即定时/计数器T0由TH0和TL0组成,T1由TH1和TL1组成。此外,其内部还有2个8位的特殊功能寄存器TMOD和TCON,TMOD负责控制和确定T0和T1的功能和工作模式,TCON用来控制T0和T1启动或停止计数,同时包含定时/计数器的状态。 TF1:定时器1溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除。或用软件清除。 TF0:定时器0溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除,或用软件清除。 在现在很多新MCU中,不只有两个 定时/计数器,例如STC15系列就有四个定时/计数器,但是在使用上操作上是大同小异的。
[单片机]