产品概述

单片机计数汇编 汇编入门第一篇,小白也能看懂

小编 2024-11-29 产品概述 23 0

汇编入门第一篇,小白也能看懂

cxuan自己的 Github 非常硬核,求各位大佬 star: https://github.com/crisxuan/bestJavaer

汇编代码是计算机的一种低级表示,它是一种低级语言,可以从字面角度去理解它,包括处理数据、管理内存、读写存储设备上的数据,以及利用网络通信等。编译器生成机器码经过了一系列的转换,这些转换遵循编程语言、目标机器的指令集 和操作系统。

指令集

指令集就是指挥计算机工作的指令,因为程序就是按照一定执行顺序排列的指令。因为计算机的执行控制权由 CPU 操作,所以指令集就是 CPU 中用来计算和控制计算机的一系列指令的集合。每个 CPU 在产出时都规定了与硬件电路相互配合工作的指令集。

指令集有不少分类,但是一般分为两种,一种是精简指令集,一种是复杂指令集。具体描述如下

精简指令集

精简指令的英文是 reduced instruction set computer, RISC,原意是精简指令集计算,简称为精简指令集,是 CPU 的一种 设计模式,可以把 CPU 想象成一家流水线工厂,对指令数目和寻址方式都做了精简,使其实现更容易,指令并行执行程度更好,编译器的效率更高。

常见的精简指令集处理器包括 ARM、AVR、MIPS、PARISC、RISC-V 和 SPARC

所以你就能理解

这本书是讲啥的了。

它主要是基于 MIPS 体系结构把冯诺依曼体系的五大组件进行了逐一的硬件实现 + 软件设计介绍,更为重要的是引入了诸多并行计算的内容,这是大部分教材中忽略或者内容较少的,会根据这个思路把并行相关的内容,结合 OpenMP, CUDA 和 Hadoop/Spark 整体融入到新书中,毕竟这是未来发展的趋势

还有这本书

这本书又是讲啥的。

这本书是讲 RISC-V 指令集的,因为指令集的不同也区分了三个版本,三个版本???嗯,还有下面这个

这本书是讲 ARM 指令集的。

所以一般在看 CASPP 的时候并发的看看这本书是非常不错的选择。

精简指令集一般具有如下特征

统一的指令编码通用的寄存器,一般会区分整数和浮点数简单的寻址模式,复杂寻址模式被简单指令序列来取代支持很少偏门的类型,例如 RISC 支持字节字符串类型。

复杂指令集

复杂指令集的英文是 Complex Instruction Set Computing, CISC,是一种微处理器指令集架构,也被译为复杂指令集。

复杂指令集包括 System/360、VAX、x86 等

复杂指令集可以说是在精简指令集之上作出的改变。

复杂指令集的特点是指令数目多而复杂,每条指令字长并不相等,计算机必须加以判读,并为此付出了性能的代价。

一般来说,提升 CPU 性能的方法有如下这几种

增加寄存器的大小增进内部的并行性增加高速缓存的大小增加核心时脉的速度加入其他功能,例如 IO 和计时器加入向量处理器硬件多线程技术

比较抽象,我们后面会组织成文章具体介绍一下。

C 编译器会接收其他操作并把其转换为汇编语言输出,汇编语言是机器级别的代码表示。我们之前介绍过,C 语言程序的执行过程分为下面这几步

下面我们更多的讨论都是基于汇编代码来讨论。

我们日常所接触的高级语言,都是经过了层层封装的结果,所以我们平常是接触不到汇编语言的,更不会用汇编语言来进行编程,这就和你不知道操作系统的存在一样,但其实你每个操作,甚至你双击一个图标都和操作系统有关系。

高级语言的抽象级别很高,但是经过了层层抽象之后,高级语言的执行效率肯定没有汇编语言高,也没有汇编语言可靠。

但是高级语言有更大的优点是其编译后能够在不同的机器上运行,汇编语言针对不同的指令集有不同的表示。并且高级语言学习来更加通俗易懂,降低计算机门槛,让内卷更加严重(当然这是开个玩笑,冒犯到请别当真)。

话不多说,了解底层必须了解汇编语言。否则一个 synchronized 底层实现就能够让你头疼不已。而且,天天飘着也不好,迟早要落地。

了解汇编代码也有助于我们优化程序代码,分析代码中隐含的低效率,并且这种优化方法一旦优化成功,将是量级的提高,而不是改改 if...else ,使用一个新特性所能比的。

机器级代码

计算机系统使用了多种不同形式的抽象,可以通过一个简单的抽象模型来隐藏实现细节。对于机器级别的程序来说,有两点非常重要。

首先第一点,定义机器级别程序的格式和行为被称为 指令集体系结构或指令集架构(instruction set architecture), ISA。ISA 定义了进程状态、指令的格式和每一个指令对状态的影响。大部分的指令集架构包括 ISA 用来描述进程的行为就好像是顺序执行的,一条指令执行结束后,另外一条指令再开始。处理器硬件的描述要更复杂,它可以同时并行执行许多指令,但是它采用了安全措施来确保整体行为与 ISA 规定的顺序一致。

第二点,机器级别对内存地址的描述就是 虚拟地址(virtual address),它提供了一个内存模型来表示一个巨大的字节数组。

编译器在整个编译的过程中起到了至关重要的作用,把 C 语言转换为处理器执行的基本指令。汇编代码非常接近于机器代码,只不过与二进制机器代码相比,汇编代码的可读性更强,所以理解汇编是理解机器工作的第一步。

一些进程状态对机器可见,但是 C 语言程序员却看不到这些,包括

程序计数器(Program counter),它存储下一条指令的地址,在 x86-64 架构中用 %rip 来表示。

程序执行时,PC 的初始值为程序第一条指令的地址,在顺序执行程序时, CPU 首先按程序计数器所指出的指令地址从内存中取出一条指令,然后分析和执行该指令,同时将 PC 的值加 1 并指向下一条要执行的指令。

比如下面一个例子。

这是一段数值进行相加的操作,程序启动,在经过编译解析后会由操作系统把硬盘中的程序复制到内存中,示例中的程序是将 123 和 456 执行相加操作,并将结果输出到显示器上。由于使用机器语言难以描述,所以这是经过翻译后的结果,实际上每个指令和数据都可能分布在不同的地址上,但为了方便说明,把组成一条指令的内存和数据放在了一个内存地址上。

整数寄存器文件(register file)包含 16 个命名的位置,用来存储 64 位的值。这些寄存器可以存储地址和整型数据。有些寄存器用于跟踪程序状态,而另一些寄存器用于保存临时数据,例如过程的参数和局部变量,以及函数要返回的值。这个 文件 是和磁盘文件无关的,它只是 CPU 内部的一块高速存储单元。有专用的寄存器,也有通用的寄存器用来存储操作数。条件码寄存器 用来保存有关最近执行的算术或逻辑指令的状态信息。这些用于实现控件或数据流中的条件更改,例如实现 if 和 while 语句所需的条件更改。我们都学过高级语言,高级语言中的条件控制流程主要分为三种:顺序执行、条件分支、循环判断三种,顺序执行是按照地址的内容顺序的执行指令。条件分支是根据条件执行任意地址的指令。循环是重复执行同一地址的指令。顺序执行的情况比较简单,每执行一条指令程序计数器的值就是 + 1。条件和循环分支会使程序计数器的值指向任意的地址,这样一来,程序便可以返回到上一个地址来重复执行同一个指令,或者跳转到任意指令。

下面以条件分支为例来说明程序的执行过程(循环也很相似)

程序的开始过程和顺序流程是一样的,CPU 从 0100 处开始执行命令,在 0100 和 0101 都是顺序执行,PC 的值顺序+1,执行到 0102 地址的指令时,判断 0106 寄存器的数值大于 0,跳转(jump)到 0104 地址的指令,将数值输出到显示器中,然后结束程序,0103 的指令被跳过了,这就和我们程序中的 if() 判断是一样的,在不满足条件的情况下,指令会直接跳过。所以 PC 的执行过程也就没有直接+1,而是下一条指令的地址。

一组 向量寄存器用来存储一个或者多个整数或者浮点数值,向量寄存器是对一维数据上进行操作。

机器指令只会执行非常简单的操作,例如将存放在寄存器的两个数进行相加,把数据从内存转移到寄存器中或者是条件分支转移到新的指令地址。编译器必须生成此类指令的序列,以实现程序构造,例如算术表达式求值,循环或过程调用和返回

认识汇编

我相信各位应该都知道汇编语言的出现背景吧,那就是二进制表示数据,太复杂太庞大了,为了解决这个问题,出现了汇编语言,汇编语言和机器指令的区别就在于表示方法上,汇编使用操作数来表示,机器指令使用二进制来表示,我之前多次提到机器码就是汇编,你也不能说我错,但是不准确。

但是汇编适合二进制代码存在转换关系的。

汇编代码需要经过 汇编器 编译后才产生二进制代码,这个二进制代码就是目标代码,然后由链接器将其连接起来运行。

汇编语言主要分为以下三类

汇编指令:它是一种机器码的助记符,它有对应的机器码伪指令:没有对应的机器码,由编译器执行,计算机并不执行其他符号,比如 +、-、*、/ 等,由编译器识别,没有对应的机器码

汇编语言的核心是汇编指令,而我们对汇编的探讨也是基于汇编指令展开的。

与汇编有关的硬件和概念

CPU

CPU 是计算机的大脑,它也是整个计算机的核心,它也是执行汇编语言的硬件,CPU 的内部包含有寄存器,而寄存器是用于存储指令和数据的,汇编语言的本质也就是 CPU 内部操作数所执行的一系列计算。

内存

没有内存,计算机就像是一个没有记忆的人类,只会永无休止的重复性劳动。CPU 所需的指令和数据都由内存来提供,CPU 指令经由内存提供,经过一系列计算后再输出到内存。

磁盘

磁盘也是一种存储设备,它和内存的最大区别在于永久存储,程序需要在内存装载后才能运行,而提供给内存的程序都是由磁盘存储的。

总线

一般来说,内存内部会划分多个存储单元,存储单元用来存储指令和数据,就像是房子一样,存储单元就是房子的门牌号。而 CPU 与内存之间的交互是通过地址总线来进行的,总线从逻辑上分为三种

地址线数据线控制线

CPU 与存储器之间的读写主要经过以下几步

读操作步骤

CPU 通过地址线发出需要读取指令的位置CPU 通过控制线发出读指令内存把数据放在数据线上返回给 CPU

写操作步骤

CPU 通过地址线发出需要写出指令的位置CPU 通过控制线发出写指令CPU 把数据通过数据线写入内存

下面我们就来具体了解一下这三类总线

地址总线

通过我们上面的探讨,我们知道 CPU 通过地址总线来指定存储位置的,地址总线上能传送多少不同的信息,CPU 就可以对多少个存储单元进行寻址。

上图中 CPU 和内存中间信息交换通过了 10 条地址总线,每一条线能够传递的数据都是 0 或 1 ,所以上图一次 CPU 和内存传递的数据是 2 的十次方。

所以,如果 CPU 有 N 条地址总线,那么可以说这个地址总线的宽度是 N 。这样 CPU 可以寻找 2 的 N 次方个内存单元。

数据总线

CPU 与内存或其他部件之间的数据传送是由数据总线来完成的。数据总线的宽度决定了 CPU 和外界的数据传输速度。8 根数据总线可以一次传送一个 8 位二进制数据(即一个字节)。16 根数据总线一次可以传输两个字节,32 根数据总线可以一次传输四个字节。。。。。。

控制总线

CPU 与其他部件之间的控制是通过 控制总线 来完成的。有多少根控制总线,就意味着 CPU 提供了对外部器件的多少种控制。所以,控制总线的宽度决定了 CPU 对外部部件的控制能力。

一次内存的读取过程

内存结构

内存 IC 是一个完整的结构,它内部也有电源、地址信号、数据信号、控制信号和用于寻址的 IC 引脚来进行数据的读写。下面是一个虚拟的 IC 引脚示意图

图中 VCC 和 GND 表示电源,A0 - A9 是地址信号的引脚,D0 - D7 表示的是控制信号、RD 和 WR 都是好控制信号,我用不同的颜色进行了区分,将电源连接到 VCC 和 GND 后,就可以对其他引脚传递 0 和 1 的信号,大多数情况下,+5V 表示1,0V 表示 0

我们都知道内存是用来存储数据,那么这个内存 IC 中能存储多少数据呢?D0 - D7 表示的是数据信号,也就是说,一次可以输入输出 8 bit = 1 byte 的数据。A0 - A9 是地址信号共十个,表示可以指定 00000 00000 - 11111 11111 共 2 的 10次方 = 1024个地址。每个地址都会存放 1 byte 的数据,因此我们可以得出内存 IC 的容量就是 1 KB。

如果我们使用的是 512 MB 的内存,这就相当于是 512000(512 * 1000) 个内存 IC。当然,一台计算机不太可能有这么多个内存 IC ,然而,通常情况下,一个内存 IC 会有更多的引脚,也就能存储更多数据。

内存读取过程

下面是一次内存的读取过程。

来详细描述一下这个过程,假设我们要向内存 IC 中写入 1byte 的数据的话,它的过程是这样的:

首先给 VCC 接通 +5V 的电源,给 GND 接通 0V 的电源,使用 A0 - A9 来指定数据的存储场所,然后再把数据的值输入给 D0 - D7 的数据信号,并把 WR(write)的值置为 1,执行完这些操作后,即可以向内存 IC 写入数据读出数据时,只需要通过 A0 - A9 的地址信号指定数据的存储场所,然后再将 RD 的值置为 1 即可。图中的 RD 和 WR 又被称为控制信号。其中当WR 和 RD 都为 0 时,无法进行写入和读取操作。

总结

此篇文章我们主要探讨了指令集、指令集的分类,与汇编有关的硬件,总线都有哪些,分别的作用都是什么,然后我们以一次内存读取过程来连接一下 CPU 和内存的交互过程。

原创不易,如有帮助还请各位读者四连(点在、在看、分享、留言),感谢各位大佬

关注公众号 程序员cxuan 回复 cxuan 领取优质资料。

我自己写了六本 PDF ,非常硬核,链接如下

我自己写了六本 PDF ,非常硬核,链接如下

我自己写了六本 PDF ,非常硬核,链接如下

《单片机汇编考试宝典(第二版))》小知识点汇总一

配合《单片机汇编考试宝典(第二版))》视频教程学习

小知识点补充29:简述汇编语言中的标号有什么规定答:(1)标号由 1—8 字符组成,头一个字符必须是字母。(2)不能使用汇编语言已定义的符号。(3)标号后必须跟冒号:(4)同一标号在一个程序中只能定义一次。小知识点补充30:1,A/D 转换器转换数据的传送有几种方式答:(1)定时传送方式: A/D启动后,调用延时时间大于转换时间的延时程序后即可读取。(2)查询方式: A/D 启动后,查询 EOC(转换结束信号),转换一完成即可读取转换数据。(3)中断方式:将 EOC作为外中断请求信号,转换一结束,即引起中断,读取转换数据。2, MCS-51单片机系统 I/O 端口编址方式有哪几种?分别对其进行简要描述:答:I/O 端口编址两种方式:独立编址与统一编址。1)独立编址方式: I/O 寄存器地址空间和存储器地址空间分开编址,但需一套专门的读写 I/O 的指令和控制信号。2)统一编址方式: I/O 寄存器与数据存储器单元同等对待,统一编址。不需要专门的 I/O 指令,直接使用访问数据存储器的指令进行 I/O 操作,简单、方便且功能强。MCS-51使用统一编址的方式,每一接口芯片中的一个功能寄存器(端口)的地址就相当于一个 RAM单元。

小知识点补充47简述在使用普通按键的时候,为什么要进行去抖动处理,如何处理?答:键抖动会引起一次按键被误读多次。为了确保 CPU 对键的一次闭合仅做一次处理,必须去除键抖动。在键闭合稳定时,读取键的状态,并且必须判别;在键释放稳定后,再作处理。按键的抖动,可用硬件或软件两种方法消除,一般使用软件消抖,延时20毫秒左右

1,8051单片机的定时器 T1用作计数方式时计数脉冲是由 T1(P3.5)输入2,8051 单片机的机器周期为1.5μs, 则其晶振频率 fosc为8MHz3,用 8051 的定时器,若用软启动,应使 TOMD中的GATE位置 04,MCS-51单片机在同一级别里除 INT0 外,级别最高的中断源是定时器 T05,用8051的定时器T0 定时,用模式 2,则应启动T0前向TH0、TL0置入相同的计数初值,以后不再置入6,MCS-51单片机定时器 T0的溢出标志 TF0,若计满数在 CPU响应中断后由硬件清零7,8051响应中断后,中断的一般处理过程是关中断,保护现场,开中断,中断服务,关中断,恢复现场,开中断,中断返回8,执行中断处理程序最后一句指令 RETI后程序返回到响应中断时一句的下一句9,MCS-51单片机响应中断矢量地址是中断服务程序的入口地址10,ADC 0809芯片是 m路模拟输入的 n 位 A/D转换器, m=8,n=811,当 DAC 0832 D/A转换器的 CS接 8031 的 P2.0 时,程序中 0832 的地址指针DPTR寄存器应置为:0832H或FE00H或FEF8H等12,8051的定时 /计数器 T0 的有几种工作模式,对各工作模式作简单的叙述:答: 定时/计数器 T0 的模式 : 0:13 位计数器;1:16 位计数器;2:8 位循环计数器;3:2 个独立的 8 位计数器 串行通信模式13,8051的串行通信的有几种工作模式,请对各工作模式作简单的叙述:答:串行通信共有 4 种工作模式 ,分别是:模式 0:同步移位寄存器;模式 1:波特率可变的8位两机异步通信;模式 2:波特率固定的9位可多机的异步通信;模式 3:波特率可变的9位可多机的异步通信

口线 第二功能信号 第二功能信号名称P3.0 RXD 串行数据接收P3.1 TXD 串行数据发送P3.2 INT0 外部中断 0 申请P3.3 INT1 外部中断 1 申请P3.4 T0 定时器 /计数器 0 P3.5 T1 定时器 /计数器 1 P3.6 WR 外部 RAM 写选通P3.7 RD 外部 RAM 读选通

***(伪指令)***ORG 指明程序的开始位置DB 定义数据表DW 定义16位的地址表EQU 给一个表达式或一个字符串起名DATA 给一个8位的内部RAM起名XDATA 给一个8位的外部RAM起名BIT 给一个可位寻址的位单元起名END 指出源程序到此为止

4,三极管有几种工作状态?答案:导通,饱和,截止

小知识点补充28:. 简述变址寻址方式并举例说明:答:(1)变址寻址是以 DPTR或 PC作基址寄存器,累加器 A作变址寄存器以两者内容相加形式的 16 位地址作为操作数地址。(2)变址寻址只能对移定存储器寻址,其指令只有三条: MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR

小知识点补充26:MCS-51单片机系统中, 外接程序存储器和数据存储器公用 16 位地址线和 8 位数据线,为什么不会发生冲突?答:因为 MCS-51单片机访问外部程序存储器用的指令是 MOVC,控制线为 PSEN,而访问外部数据存储器时,使用的指令是 MOVX,有效的控制信号是 RD ,WR。所以不会发生冲突小知识点补充27:简述动态显示与静态显示的区别及优缺点答:静态显示 :就是当显示器显示某一个字符时, 相应的发光二极管恒定的导通或截止。这种显示方式每一位都需要有一个 8 位输出口控制, 亮度大,耗电也大。需要的 I/O 端口较多,如四个七段数码管需要 32 根口线,适用于显示位数较少的场合。但编程简单。**动态显示:**就是一位一位地轮流点亮显示器各个位(扫描) ,对于显示器的每一位来说,每隔一段时间点亮一次。 利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快, 字符才不闪烁。将各显示器的段码同名端边在一起,用一个 I/O 端口驱动;位码用另一个 I/O 端口分别控制。如四个七段数码管只需要 11 根口线。编程较复杂

1,两位十六进制数最多可以表示 256 个存储单元2,89C51是 ATMEL公司的产品3,MCS-51系列单片机,属于哈佛结构体系体系结构。 哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)4,在 89C51 中,一个机器周期包括 12 个振荡周期,而每条指令都由一个或几个机器周期组成,分别有单周期指令、双周期指令和4 周期指令5,在 89C51 中,有两种方式可使单片机退出空闲模式,方法一是: 任何的中断请求被响应,方法二是: 硬件复位,而只有 硬件复位 方式才能让进入掉电模式的单片机退出掉电模式6,串行通信中,为使设备同步工作,需要通信双方有两个共同的要求,一是: 通信双方必须采用统一的编码方式 ,二是: 通信双方必须能产生相同的传送速率 7,设 89C51 的晶振频率为 11.0592MHz,选用定时器 T 工作模式 2 作波特率发生器,波特率为2400b/s,且 SMOD 置 0,则定时器的初值为 F4H8,键盘可分为 独立连接 式和 行列(矩阵) 式两类9.键盘可分为 编码 式和 非编码 式两类10,LED 数码管有 静态 显示和 动态 显示两种方式

1,在变址寻址(基址寄存器+变址寄存器间接寻址)中,以累加器A作为变址寄存器,以DPTR或PC作为基址寄存器2,串行口扩展并行口时,串口工作在方式03,51单片机并行I/O口信息有读I/O口和读锁存器两种方式,读改写操作是针对并行口中的锁存器进行的4,在中断服务程序中,至少有一条中断返回指令5,定时器1有**三**种工作模式6,定时器0工作在方式3时,分为两个独立的8位计数器,且TH0占用T1的状态控制位TR1和TF1(此时T0不能作为外部计数模式)7,设 MCS-51单片机晶振频率为 12MHz,定时器作计数器使用时,其最高的输入计数频率为 500KHz8,主程序中调用子程序后返回主程序,堆栈指针 SP的值不变9,单片机中使用 MOVX A,@R1指令, C与 P2口配合能寻址数据存储器 1111H单元(前文有专门的例题讲解)10,下列指令判断若 P1 口最低位为高电平就转 L00P,否则就执行下一句的是JB P1.0 ,L00P11,MCS-51单片机在执行 MOVX A,@DPTR指令时,其寻址单元的地址是由P0口送低 8 位,P2口送高 8 位12,使累加器 A的最高位置 1 的是:ORL A,#80H13,使 R0的最高位置 0 的是:ANL R0,#7FH14,使 R1的最高位取反的是XRL R1,#80H15,MCS-51指令系统中,格式为: ORG 16位地址 的指令功能是用来定义汇编程序的起始地址16,指令 ANL A,R0的功能是:将 A与寄存器 R0的内部容按位逻辑与17,LJMP跳转空间最大可达到:64KB18,在编程中使用伪指令的目的是指示和引导汇编程序进行汇编19,8051单片机的定时器 T1用作定时方式时是由内部时钟频率定时,一个机器周期加120,8051单片机的定时器 T0用作计数方式时是由外部计数脉冲计数,下降沿加1

例题:MCS-51指令系统中,执行下列程序后,程序计数器 PC的内容为: ORG 000H MOV DPDR,#1000 MOV A , #00H MOV 20H ,A LJMP 1500 END答案:(PC)=1500

一,小问:1,输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。2,START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行,直到A/D转换完成。3,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。4,当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。

三,小问: ORG 0000H AJMP START ORG 0050HSTART: MOV SP,#66H MOV R7,#05H MOV R6,#04H MOV R0,#30H MOV DPTR,#0FEF8HL0: ACALL ADC0809 MOV @R0,A INC R0 DJNZ R7,L0 MOV R7,#05H INC DPTR ;0FEF9H DJNZ R6,L0 SJMP $ ORG 006AHADC0809: CLR A MOVX @DPTR,A ;WR=0 MOV R5,#10DELAY: NOP NOP NOP DJNZ R5,DELAY SETB P3.3 ;IO读取,首先写个1 JB P3.3,$ MOVX A,@DPTR RET END

相关问答

c51 单片机汇编 语言,八个小灯,依次亮灯,间隔0.5s,最后一个点亮后,全部灭掉,请教大神怎么编程?

;如果你的灯在p1端口的话,你试试我的程序ORG0000HSTART:MOVP1,#7EHACALLDELAYMOVP1,#0BDHACALLDELAYMOVP1,#0DBH...

单片机 。用 汇编 语言编程。设计一软件延时1s的子程序。设晶振频率为12MHz?

delay1000ms:(HT46R65的单片机)(注意不要开启计时中断允许位)mova,10000111b(设置频率和记数方式)(上升记数还是下降记数)movtmr0c,a(tmr0c...

单片机汇编 语言的PCL PCH是什么意思?

PCL和PCH是单片机程序中的两个重要寄存器,分别代表程序计数器和程序计数器高字节。PCL是程序计数器的低字节,用于存储下一条指令的地址,而PCH则是程序计数器的...

单片机 习题利用定时器T1的模式2对外部信号 计数 。要求每计满1...

[最佳回答](1)负跳变(2)因为是方式2,最大计数256,所以初始值是256-100=156=0x9C;(3)汇编:ORG0000HAJMPSTARTORG001BHAJMPISR...

为什么大学 单片机 都讲 汇编 语言?

对单片机而言,汇编语言有以下优势:1.汇编语言的执行效率高,比C语言的执行效率都高。2.用汇编语言可以锻炼以机器指令编码的能力,可以以最优化的方式编写代码...

单片机 用C语言编程很好学,为什么还要用 汇编 呢?

现在一般单片机都支持C语言和晦涩难懂的汇编语言,在许多介绍单片机应用技术的教材中有相当一部分是用汇编语言编写的这说明汇编语言在学习单片机和编写单片机程...

【从这两段 单片机汇编 程序来看,RR,RL和RRC,RLC在这里区别不...

[最佳回答]不一样,不带C的循环,就A里的8位数据自循环,移动8次,循环一周.带C的就不一样,移动一次,C的状态会移入A,而A的移出的位会移进C.就是C参与了移动,所以C...

单片机 汇编 语言编写用一个控制器控制8个LED灯亮?

ORG0000HLJMPMAINORG000BHLJMPT0ISRORG0030HMAIN:MOVTMOD,#01HMOVTH0,#HIGH(65536-50000)MOVTL0,#LOW(65536...

汇编 中DA指令到底什么意思?

单片机汇编DAA指令为十进制调整指令,是结合加法指令一起用的,在其它场合使用没有意义甚至会出错,如十进制加法38+55=93汇编为MOVA,#38H;...

单片机 cpl是什么意思?

单片机cpl指汇编指令,是一个逻辑运算指令,是单片机中直接寻址位取反的指令,作用是将存储器的指定数据中的每一位转变为逻辑反的数据。CPL为单片机ConversePo...

猜你喜欢