51单片机--指令集

合集下载

单片机常用芯片

单片机常用芯片

单片机常用芯片单片机是一种集成电路,内部集成了处理器、内存、输入输出接口等电子器件,被广泛应用于各种电子设备中。

在单片机中,常用的芯片有很多种,下面将介绍几种常见的单片机芯片。

一、AT89C51AT89C51是一种8位单片机芯片,由英特尔公司生产。

它具有51系列单片机的基本特点,如低功耗、高性能、丰富的外设资源等。

AT89C51采用MCS-51指令集,内部集成了4KB的Flash存储器和128字节的RAM,同时还具备UART、定时器、中断控制器等功能。

该芯片广泛应用于家电、工控设备、汽车电子等领域。

二、STM32F103STM32F103是一种32位ARM Cortex-M3内核的单片机芯片,由意法半导体公司生产。

该芯片具有高性能、低功耗的特点,适用于各种工业控制、仪器仪表、智能家居等应用场景。

STM32F103内部集成了128KB至1MB的Flash存储器,同时还具备多个定时器、GPIO、SPI、I2C等外设接口。

三、PIC16F877APIC16F877A是一种8位单片机芯片,由微芯科技公司生产。

该芯片采用RISC架构,具有低功耗、高性能、可编程性强等特点。

PIC16F877A内部集成了14KB的Flash存储器和368字节的RAM,并具备多个中断源、定时器、串口通信接口等外设。

该芯片被广泛应用于电子设备、家电、通信设备等领域。

四、ESP8266ESP8266是一种WiFi模块,也可以作为单片机芯片使用,由乐鑫科技公司生产。

该芯片内部集成了处理器、WiFi模块、GPIO等功能,能够实现设备与网络的连接。

ESP8266具有低功耗、高性价比等特点,广泛应用于物联网、智能家居等领域。

它支持TCP/IP协议栈,并提供了丰富的API接口,方便开发人员进行二次开发。

五、ArduinoArduino是一种开源单片机平台,由意大利的开发者团队设计制造。

它采用AVR系列的单片机芯片,具有丰富的外设资源和易于使用的编程环境。

mcs51单片机指令集

mcs51单片机指令集

一个单片机所需执行指令的集合即为单片机的指令系统。

单片机使用的机器语言、汇编语言及高级语言,但不管使用是何种语言,最终还是要“翻译”成为机器码,单片机才能执行之。

现在有很多半导体厂商都推出了自己的单片机,单片机种类繁多,品种数不胜数,值得注意的是不同的单片机它们的指令系统不一定相同,或不完全相同。

但不管是使用机器语言、汇编语言还是高级语言都是使用指令编写程序的。

所谓机器语言即指令的二进制编码,而汇编语言则是指令的表示符号。

在指令的表达式上也不会直接使用二进制机器码,最常用的是十六进制的形式。

但单片机并不能直接执行汇编语言和高级语言,都必须通过汇编器“翻译”成为二进制机器码方能执行,但如果直接使用二进制来编写程序,那将十分不便,也很难记忆和识别,不易编写、难于辨读,极易出错,同时出错了也相当难查找。

所以现在基本上都不会直接使用机器语言来编写单片机的程序。

最好的办法就是使用易于阅读和辨认的指令符号来代替机器码,我们常称这些符号为助记符,用助记符的形式表示的单片机指令就是汇编语言,为便于记忆和阅读,助记符号通常都使用易于理解的英文单词和拼音字母来表示。

每种单片机都有自己独特的指令系统,那么指令系统是开发和生产厂商定义的,如要使用其单片机,用户就必须理解和遵循这些指令标准,要掌握某种(类)单片机,指令系统的学习是必须的。

MCS-51共有111条指令,可分为5类:[1].数据传送类指令(共29条)[2].算数运算类指令(共24条)[3].逻辑运算及移位类指令(共24条)[4].控制转移类指令(共17条)[5].布尔变量操作类指令(共17条)一些特殊符号的意义在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。

Rn——当前选中的寄存器区的8个工作寄存器R0—R7(n=0-7)。

Ri——当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)direct—内部数据存储单元的8位地址。

MCS-51指令系统

MCS-51指令系统
18
4、控制转移类指令(二)
无条件转移:(LJMP,AJMP,SJMP,JMP—4条) LJMP addr16 长跳转指令
——可在64K范围内跳转 AJMP addr11 绝对跳转指令
——可在指令所在的2K范围内跳转 SJMP rel 相对跳转指令
——可在当前PC-128与+127范围内跳转 JMP @A+DPTR 间接长跳转指令
1
累加器清零/取反操作 (CLR,CPL—2条)
CLR A —对累加器清零
1 Byte 1 Tm
CPL A ——对累加器按位取非 1 Byte 1 Tm 15
3、逻辑运算及移位类指令(三)
逻辑运算指令在程序中的应用(下面的例子认为Acc 的内容为9AH)
逻辑与ANL运算用于对某些位进行清0或者保留: 例: ANL A, #0FH; 则(A) = 0AH
位清零/置位指令(4条): CLR bit(或C) —— (bit或 C)“0” SETB bit(或C) —— (bit或 C)“1”
位逻辑与/或/非指令(6条): ANL C,bit(或/bit) ORL C,bit(或/bit) CPL bit (或 C) 注: “/bit”表示对bit位先取反然后再参加运算
带借位减法(SUBB):(A) ← (A)- (Cy)- (第二操作数)
10
2、算术运算类指令(三)
加1/减1操作: (INC,DEC—9条) INC, DEC与用加/减法指令做加1/减1 操作不 同之处在于INC、DEC不影响标志位。
单字节乘/除运算: (MUL,DIV—2条) 两个单字节数的乘/除法运算只在A与B之间 进行。 MUL AB: (A)与(B)相乘, 积为16位数,

MS51单片机

MS51单片机
在8051中,位地址常用下列两种方式表示: (1)直接使用位地址。 (2)直接用特殊功能寄存器名加位数表示,
如PSW.3
例如:MOV C, 37H; (Cy) ← (37H)
二、寻址空间及举例
寻址空间见表3-1
例3-1 将D5H位的内容送入Cy,可用几种方式表达?
(1) MOV C, D5H (2) MOV C, D0H.5 (3) MOV C, F0 (4) MOV C, PSW.5
目的地址=PC当前值+rel=起始地址+转移指令 本身字节数+rel
相对偏移量rel是有符号的8位二进制数,用补 码表示。
例如:程序存储器1068H地址单元开始存放双字节指令 SJMP 30H,执行后PC当前值为(PC)←(PC) +2=1068H+2=106AH,则跳转目的地地址为
106AH+30H=109AH
例3.2 判断下列指令个操作数的寻址方式
(1) MOV (2) MOV (3) MOV (4) MOV
A, #65H @ R1, 65H 30H, R2 C, 20H
(5) DJNZ R2, (6) MOV 60H, (7) MOVC A,
LOOP @R1
@A+DPTR
例如: MOVC A,@A+DPTR;((A)+(DPTR))→(A)
6、相对寻址
相对寻址只出现在相对转移指令中。相对转移 指令执行时,是以当前的PC值加上指令中给出 的相对偏移量rel而形成转移目的地址。
PC的当前值是执行完相对转移指令后的PC值, 实际上是紧接转移指令下面一条指令的地址。
7、位寻址
位寻址适用于可以进行单独位操作的指 令,指令中直接给出位地址寻找位操作 数。

51单片机编码

51单片机编码

51单片机编码单片机编码技术是现代电子信息技术中的重要组成部分。

作为微控制器的核心,单片机编码通过将输入的数据信息转换为特定的编码方式,实现各种功能和应用。

本文将从基本概念、编码原理和应用实例等方面,详细介绍51单片机编码相关内容。

1. 51单片机编码的基本概念51单片机编码是指使用8051系列单片机进行程序设计和编码的过程。

它采用汇编语言或高级语言编写程序代码,并将其转化为机器码,通过单片机的指令集执行相应的操作。

由于其成熟的硬件平台和丰富的软件资源,51单片机编码广泛应用于各种嵌入式系统、控制系统等领域。

2. 51单片机编码的原理51单片机编码的原理主要包括指令集、寄存器、数据存储器、输入输出端口等组成部分。

指令集是单片机内部存储的一组机器指令,通过不同的指令实现对数据的处理和控制。

寄存器用于存储临时数据和程序状态等信息,提供给CPU进行运算和控制。

数据存储器则用于存储程序代码和数据,包括内部RAM和外部ROM等。

输入输出端口是单片机与外部设备进行交互的接口,通过读取输入端口的状态和向输出端口写入数据,实现与外部环境的通信。

3. 51单片机编码的应用实例3.1 系统控制应用51单片机编码广泛应用于各种系统控制应用中,如智能家居、工业自动化、交通信号控制等。

通过编写相应的控制程序代码,将输入的传感器信号处理后,控制相关的执行机构进行动作。

例如,通过读取温度传感器的数据,控制空调的开关和温度调节,实现智能环境控制。

3.2 嵌入式系统应用嵌入式系统是指将计算能力嵌入到各种设备和系统中,实现特定功能的计算系统。

51单片机编码在嵌入式系统中有广泛的应用,如智能手机、电视、汽车电子等。

通过编写嵌入式软件程序,控制和管理功耗、资源调度、外设驱动等,实现嵌入式系统的各项功能。

3.3 通信系统应用51单片机编码在通信系统中也有着重要的应用。

例如,通过编写相应的通信协议和驱动程序,实现与外部设备的数据交换和通信。

51单片机条件转移指令

51单片机条件转移指令

51单片机条件转移指令51单片机是一种广泛应用于嵌入式系统中的微控制器,具有强大的条件转移指令集,可以实现复杂的逻辑控制。

本文将以51单片机条件转移指令为标题,介绍其基本概念、使用方法以及相关应用。

一、概述条件转移指令是计算机指令中的一种重要类型,它可以根据特定条件的成立与否,决定程序的执行路径。

在51单片机中,条件转移指令用于实现基于条件的分支和循环控制,是实现复杂控制逻辑的重要工具。

二、条件转移指令的基本语法在51单片机中,条件转移指令的基本语法如下:```CJxx 操作数1, 操作数2, 目标地址```其中,CJxx是条件转移指令的助记符,表示不同的条件;操作数1和操作数2是进行比较的操作数;目标地址是程序执行的跳转地址。

三、条件转移指令的常用类型51单片机中常用的条件转移指令包括以下几种类型:1. 条件转移指令(CJNE):用于比较两个操作数的大小,并根据比较结果决定是否跳转到目标地址。

2. 无条件转移指令(JMP):无条件跳转到目标地址。

3. 相对跳转指令(DJNZ):用于实现循环控制,根据操作数的值决定是否跳转到目标地址,并将操作数减一。

四、条件转移指令的使用方法使用条件转移指令需要注意以下几点:1. 确定比较的操作数:根据具体需求,选择合适的操作数进行比较。

2. 确定目标地址:根据条件的成立与否,确定程序执行的跳转地址。

3. 编写条件转移指令代码:根据条件转移指令的语法,编写相应的汇编指令。

4. 调试和测试:在编写完条件转移指令代码后,进行调试和测试,确保程序的逻辑正确。

五、条件转移指令的应用示例以下是一个简单的应用示例,演示了如何使用条件转移指令实现一个LED闪烁的程序:```ORG 0H ; 程序的起始地址MOV P1, #01H ; 将01H送入P1口,点亮LEDLOOP: ; 循环开始CJNE P1, #01H, NEXT ; 如果P1不等于01H,则跳转到NEXTMOV P1, #00H ; 将00H送入P1口,熄灭LEDSJMP LOOP ; 无条件跳转到LOOP,实现循环控制NEXT: ; 跳转到NEXTMOV P1, #01H ; 将01H送入P1口,点亮LEDSJMP LOOP ; 无条件跳转到LOOP,实现循环控制END ; 程序结束```在上述示例中,通过使用CJNE指令和JMP指令,实现了LED的闪烁效果。

单片机原理和应用综合习题和答案

综合习题一一、填空题1、单片机的发展大致可分为个阶段。

2、单片机与普通计算机的不同之处在于其将、和 3部分集成于一块芯片之上。

3、单片机的存储器设计采用哈佛结构,它的特点是。

4、CPU主要由器和器组成。

CPU中的用来处理位操作。

5、第四代计算机所采用的主要器件是。

6、MCS-51系列单片机中,片内无ROM的机型是,有4KB ROM的机型是,而有4KB EPROM的机型是。

7、—32的补码为 B,补码11011010B代表的真值为 D。

8、原码数DFH= D,原码数6EH= D。

9、100的补码= H,—100的补码= H。

10、在8031单片机内部,其RAM高端128个字节的地址空间称为区,但其中仅有个字节有实际意义。

11、通常单片机上电复位时PC= H、SP= H、通用寄存器则采用第组,这一组寄存器的地址范围是从 H~ H。

12、若PSW为18H,则选取的是第组通用寄存器。

13、8031单片机复位后R4所对应的存储单元地址为 H,因上电时PSW= H。

14、若A中数据为63H,那么PSW的最低位(即奇偶位P)为。

15、在微机系统中,CPU是按照来确定程序的执行顺序的。

16、堆栈遵循的数据存储原则,针对堆栈的两种操作为和。

17、在8031单片机中,使用P2、P0、口传送信号,且使用了P0口来传送、信号,这里采用的是技术。

18、使用8031单片机时需将EA引脚接电平,因为其片内无存储器,8031片外可直接寻址的存储空间达 KB。

19、8位机中的被码数80H和7FH的真值分别为和。

20、配合实现“程序存储自动执行”的寄存器是,对其操作的一个特别之处是。

21、MCS-51单片机PC的长度为位;SP的长度为位,数据指针DPTR的长度为位。

二、单选题1、电子计算机技术在半个世纪中虽有很大进步,但至今其运行仍遵循着一位科学家提出的基本原理。

这位科学家是:()(A)牛顿(B)爱国斯坦(C)爱迪生(D)冯·诺伊曼2、用晶体管作为电子器件制成的计算机属于:()(A)第一代(B)第二代(C)第三代(D)第四代3、通常所说的主机是指:()(A)运算器和控制器(B)CPU和磁盘存储器(C)CPU和主存(D)硬件和软件4、计算机能直接识别的语言是:()(A)汇编语言(B)自然语言(C)机器语言(D)高级语言5、在CPU中,控制器的功能是:()(A)进行逻辑运算(B)进行算术运算(C)分析指令并发出相应的控制信号(D)只控制CPU的工作6、所谓“裸机”是指:()(A)单片机(B)单板机(C)只装备操作系统的计算机(D)不装备任何软件的计算机7、下列数据中有可能是八进制数的是:()(A)764 (B)238 (C)396 (D)7898、下列4种不同进制的无符号数中最小的数是:()(A)11011001B (B)37O(八进制数)(C)75 (D)2AH9、PC是:()(A)一根硬件信号线(B)一个可由用户直接读写的8位RAM寄存器(C)一个不可寻址地特殊功能寄存器(D)一个能自动加1计数的ROM存储单元10、在CPU内部贩映程序运行状态或反映运算结果的一些特征寄存器是:()(A)PC (B)PSW (C)A (D)SP三、判断说明题1、在微机性能指标中,CPU的主频越高,其运算速度越快。

单片机 思考题与作业答案

第一讲思考题与作业思考:1.什么是单片机?主要用途是什么?列举你所知道的单片机?答:随着微电子技术的不断发展,微处理器芯片及其外围芯片的集成度越来越高,已经可以将CPU和外围芯片,如程序存储器、数据储存器、并行、串行I/O口、定时器/计数器、中断控制器及其他控制部件集成在一个芯片之中,制成单片机。

单片机(Single-Chip Computer 缩写SCC)是发展初期由结构命名的,它从构成的侧面强调在单芯片上集成了必备成分的小计算机;微控制器(Microcontroller)是当前由功能命名的,是因为用计算机的逻辑功能解决简单的控制问题比以往来得更容易,而且应用也更广泛;嵌入式系统SoC(System on Chip或Embedded System )是当前又由结构命名。

嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的系统及应用软件系统等组成,它是可独立工作的“器件”。

2. 51核单片机是否代表当前先进水平的单片机?51核单片机不是代表当前先进水平的单片机,它是目前在中国大陆最流行的单片机系列。

作业:1-1、51-1.说明MCS-51有哪些产品,它们有何区别?答:MCS-51是Intel公司1980年开始推出的系列产品,主要有8031、8051、8751;8032、8052、8752;80C31、80C51和87C51。

它们的区别是末尾是“1”的,内部ROM(如果有的话)4K字节,内部RAM128字节,有T0、T1两个计数器。

末尾是“2”的,内部ROM(如果有的话)8K字节,内部RAM256字节,有T0、T1和T2三个计数器。

倒数第二位是“5”的有内部ROM,是“3”的无内部ROM。

第二位是“7”的内部是EPROM,是“0”的ROM必须有厂家才能一次性写入代码。

是“0”的ROM必须有厂家才能一次性写入代码。

至于其它厂家生产的51增强核系列是MCS-51的扩充,一般不再称为MCS-51。

51单片机指令集

51单片机指令集在嵌入式系统的开发中,51单片机是一种常用的微控制器,其指令集对于程序设计和功能实现具有重要的意义。

本文将介绍51单片机指令集的组成结构、常用指令及其功能,以及应用示例。

一、指令集的组成结构51单片机指令集由多条指令组成,这些指令按照不同的功能进行分类和编码。

常见的指令分类包括数据传送指令、算术逻辑指令、位操作指令、分支指令和中断指令等。

1. 数据传送指令数据传送指令主要用于数据在寄存器和内存之间的传输。

其中包括将数据从一个寄存器传送到另一个寄存器、将数据从内存读取到寄存器中以及将数据从寄存器写入内存等操作。

例如,MOV指令用于将一个寄存器的值传送到另一个寄存器,如MOV A, B表示将寄存器B中的值传送到寄存器A中。

2. 算术逻辑指令算术逻辑指令主要用于进行算术和逻辑运算。

其中包括加法、减法、乘法、除法、逻辑与、逻辑或、逻辑非等操作。

例如,ADD A, B用于将寄存器A和寄存器B中的值相加,并将结果保存在寄存器A中。

3. 位操作指令位操作指令主要用于对寄存器或内存中的位进行操作。

其中包括位与、位或、位翻转、位置1、位清零等操作。

例如,ORL A, #0x0F用于将寄存器A的低4位与0x0F进行按位或运算,结果保存在寄存器A中。

4. 分支指令分支指令主要用于程序的跳转和循环控制。

其中包括无条件跳转、条件跳转、循环指令等。

例如,JMP 2000H用于无条件跳转到地址2000H处执行指令。

5. 中断指令中断指令主要用于处理外部中断信号,进行程序的中断与恢复。

例如,ENI指令用于允许外部中断的响应,而DISI指令用于禁止外部中断的响应。

二、常用指令及其功能1. MOV指令MOV指令用于将数据传送给目标操作数。

可以将立即数、寄存器或内存中的值传送给目标寄存器或内存。

2. ADD指令ADD指令用于将源操作数与目标操作数相加,并将结果保存在目标操作数中。

SUB指令用于将源操作数与目标操作数相减,并将结果保存在目标操作数中。

mcs51单片机位操作指令及编程举例

mcs51单片机位操作指令及编程举例MCS-51 单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有一套位变量处理的指令集。

在进行位处理时,CY(就是我们前面讲的进位位)称位累加器。

有自已的位RAM,也就是我们刚讲的内部RAM 的20H-2FH 这16 个字节单元即128 个位单元,还有自已的位I/O 空间(即P0.0..P0.7,P1.0.P1.7,P2.0..P2.7,P3.0..P3.7)。

当然在物理实体上它们与原来的以字节寻址用的RAM,及端口是完全相同的,或者说这些RAM 及端口都能有两种使用办法。

(1)位传送指令MOV C,BITMOV BIT,C 这组指令的功能是实现位累加器(CY)和其它位地址之间的数据传递。

例:MOV P1.0,CY ;将CY中的状态送到P1.0 管脚上去(如果是做算术运算,我们就能通过观察知道现在CY 是多少啦)。

MOV P1.0,CY ;将P1.0 的状态送给CY。

(2)位修正指令位清0 指令CLR C ;使CY=0CLR bit ;使指令的位地址等于0。

例:CLR P1.0 ;即使P1.0 变为0 位置1 指令SETB C ;使CY=1SETB bit ;使指定的位地址等于1。

例:SETB P1.0 ;使P.0 变为1 位取反指令CPL C ;使CY 等于原来的相反的值,由1 变为0,由0 变为1。

CPL bit ;使指定的位的值等于原来相反的值,由0 变为1,由1 变为0。

例:CPL P1.0 以我们做过的实验为例,如果原来灯是亮的,则执行本指令后灯灭,反之原来灯是灭的,执行本指令后灯亮。

(3)位逻辑运算指令位与指令ANL C,bit ;CY 与指定的位地址的值相与,结果送回CYANL C,/bit ;先将指定的位地址中的值取出后取反,再和CY 相与,结果送回CY,但注意,指定的位地址中的值本身并不发生变化。

例:ANL C,/P1.0 设执行本指令前,CY=1,P1.0 等于1(灯灭),则执行完本指令后CY=0,而P1.0 也是等于1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如: MOV A,@R0 MOVX A,@R0 MOVX A,@DPTR
2013-7-20
9
3.2.5
变址寻址(基址+变址)
Base-Register-plus-Index-Register-Indirect Addressing
以DPTR或PC为基址寄存器,累加器A为变址寄存器。把两 者内容相加,结果作为操作数的地址。 常用于查表操作。 操作数在程 序存储器中 MCS-51 MOVC A, @A+DPTR ;(A+DPTR) →A MOVC A, @A+PC ; PC+1 →PC,(A+PC)→A
操作数在SFR、内部RAM、位地址空间。
如: MOV A,00H MOV C,60H MOV A,0F0H
2013-7-20
6
3.2.3
寄存器寻址
Register Addressing
对选定的工作寄存器R0~R7、累加器A、通用寄存器B、 地址寄存器DPTR中的数进行操作。 例:MOV A,R0;将R0工作寄存器中的数据送到累加器A中去。
2013-7-20
10
如:MOVC A,@A+DPTR 设DPTR=2000H,A=E0H
程序存储区
2040H 2041H 指令代码 … 20E0H 93 … … ALU 47 20E0H
11
A 47 E0
DPH DPL
20 00
2013-7-20
改变PC
3.2.6 相对寻址
Relative Addressing
Data Transfer Instruction
MCS-51 助记符: 助记符: MOV、MOVX、MOVC XCH、XCHD、SWAP PUSH、POP 源操作数寻址方式(5种):
立即寻址、直接寻址、寄存3种):
直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响 2013-7-20 16 标志位。
2013-7-20 20
3.3.4 堆栈操作(2条) PUSH direct ;SPSP+1,(SP)(direct) POP direct ; (direct) (SP), SPSP-1 第一条为压入指令,就是将direct中的内容送入堆栈中, 第二条为弹出指令,就是将堆栈中的内容送回到direct中。 例: MOV SP,#5FH MOV A,#100 MOV B,#20 PUSH ACC PUSH B
将PC中的当前内容与指令第二字节给出的数相加,结 果作为跳转指令的转移地址(转移目的地址)。 PC中的当前内容称为基地址(本指令后的字节地址) 指令第二字节给出的数据称为偏移量,1字节带符号数. 常用于跳转指令。 如: JC 23H 若C=0,不跳转; C=1,跳转.
2013-7-20
12
如:JC
片内RAM:@R0,@R1,SP 寄存器间接寻址 片外RAM:@R0 ,@R1,@DPTR 程序存储器:@A+PC,@A+DPTR 变址寻址 相对寻址 位寻址
2013-7-20
程序存储器256字节范围内:PC+偏移量
片内RAM的位寻址区(20H~2FH字节地址) 某些可位寻址的SFR
15
§3.3
数据传送类指令(29条)
主要对8位无符号数;也可用于带符号数运算。 包括:加、减、乘、除、加1、减1运算指令 影响PSW有关位。
2013-7-20
23
3.4.1 加法指令
1.不带进位位的加法指令(4条)
ADD A,#data ; A+data→A ADD A,direct ; A+(direct )→A ADD A,Rn ; A+Rn→A ADD A,@Ri ; A+(Ri)→A 用途:将A中的值与源操作数所指内容相加,最终结果 存在A中。
2013-7-20 24
2.带进位位的加法指令(4条)
ADDC A,Rn ; A+Rn+CY→A ADDC A,direct ; A+(direct )+CY→A ADDC A,@Ri ; A+(Ri)+CY→A ADDC A,#data ; A+data+CY→A 用途:将A中的值和其后面的值以及进位位C中的值相加, 最终结果存在A,常用于多字节数运算中。
23
指令代码
程序存储区 1000H 1001H 1002H 40 23 30
当前PC

1024H 1025H

47 45
23H
1002H ALU 1025H
2013-7-20
13
3.2.7 位寻址 Bit Addressing
对片内RAM的位寻址区和某些可位寻址的特殊功 能寄存器进行位操作时的寻址方式。
说明:由于51单片机是一种8位机,所以只能做8位的数学 运算,但8位运算的范围只有0~255,这在实际工作中是不 够的,因此就要进行扩展,一般是将2个8位(两字节)的数 学运算合起来,成为一个16位的运算,这样,可以表达的 数的范围就可以达到0~65535。
2013-7-20 25
例: 1067H+30A0H
2013-7-20
8
3.2.4
Addressing 把地址放在另外一个寄存器中,根据这个寄存器中的数值 决定该到哪个单元中取数据。 R0,R1----8位地址,片内低128字节或片外 DPTR----16位,片外64KB
寄存器间接寻址 Register Indirect
MCS-51
操作数在 片内RAM中 操作数在 片外RAM中 操作数在 片外RAM中
3.3.1 MOV
十六位数的传递指令(1条)
DPTR,#data16
8051是一种8位机,这是唯一的一条16位立即数传递指 令。功能:将一个16位的立即数送入DPTR中去。其中 高8位送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H 执行完了之后DPH中的值为12H,DPL中的值为34H。 如果我们分别向DPH,DPL送数,则结果也一样。 如下面两条指令: MOV DPH,#35H MOV DPL,#12H。
寻址方式
操作数存在程 序存储器中
立即寻址
Immediate Addressing
操作数就包含在指令代码中,在操作码之后,称为 立即数,用“#”表示。
MCS-51
如:MOV P1, #80H MOV R7, #0F5H MOV DPTR,#1245H
2013-7-20 5
3.2.2
直接寻址
Direct Addressing 直接使用数所在单元的地址找到了操作数,所以称 这种方法为直接寻址。
2013-7-20 18
2.要读或写外部的RAM,当然也必须要知道RAM的地址, 在后两条指令中,地址是被直接放在DPTR中的。而前两条 指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提 供低8位地址。高8位地址由P2口来提供。 3.使用时应先将要读或写的地址送入DPTR或Ri中,然后 再用读写命令。 例:将外部RAM中100H单元中的内容送入外部RAM中200H 单元中。 MOV DPTR,#0100H MOVX A,@DPTR MOV DPTR,#0200H MOVX @DPTR,A
0001 0000 0110 0111 0011 0000 1010 0000 0100 0001 0000 0111
1.给出每条指令执行后的结果 ;(23H)=30H MOV 23H,#30H ;(12H)=34H MOV 12H,#34H ;R0=23H MOV R0,#23H ;R7=34H MOV R7,12H ;R1=12H MOV R1,#12H ;A=30H MOV A,@R0 ;(34H)=34H MOV 34H,@R1 ;(45H)=34H MOV 45H,34H ;DPTR=6712H MOV DPTR,#6712H ;(12H)=67H MOV 12H,DPH ;R0=12H MOV R0,DPL ;A=67H MOV A,@R0
提一个问题:我们知道,工作寄存器就是内存单元 的一部分,如果我们选择工作寄存器组0,则R0就 是RAM的00H单元,那么这样一来,MOV A,00H 和 MOV A,R0不就没什么区别了吗?
2013-7-20 7
的确,这两条指令执行的结果是完全相同的, 都是将00H单元中的内容送到A中去,但是执行的过 程不同,执行第一条指令需要2个机器周期,而第二 条则只需要1个机器周期,第一条指令变成最终的目 标码要两个字节(E5H 00H),而第二条则只要一个 字节(E8H)就可以了。
2013-7-20 19
3.3.3
读程序存储器指令(2条)
MOVC A,@A+DPTR MOVC A,@A+PC
本组指令是将ROM中的数送入A中。本组指令也被称为查表指令, 常用此指令来查一个已做好在ROM中的表格 说明:查找到的结果被放在A中,因此,本条指令执行前后,A 中的值不一定相同。 例:有一个数在R0中,要求用查表的方法确定它的平方值(此 数的取值范围是0-5) 如果R0中的值为2, MOV DPTR,#100H MOV A,R0 则最终地址为 100H+2为102H, MOVC A,@A+DPTR . … 到102H单元中找到 的是4。 ORG 0100H DB 0,1,4,9,16,25
addr16:16位目的地址
2013-7-20 3
rel: 补码形式的8位地址偏移量。
偏移范围为-128~127
/:位操作指令中,该位求反后参与操作,不影响 该位 X:片内RAM的直接地址或寄存器 (X):相应地址单元中的内容 →:箭头左边的内容送入箭头右边的单元内
2013-7-20
4
§3.2 3.2.1
2013-7-20
则就相当于执行了
相关文档
最新文档