第3章 指令系统及程序设计

合集下载

第3章PLC的基本指令及程序设计

第3章PLC的基本指令及程序设计
✓ 计数器位:计数器位和继电器一样是一个开关量,表示计数器是否 发生动作的状态。当计数器的当前值达到设定值时,该位被置位为 ON。
✓ 计数器当前值:其值是一个存储单元,它用来存储计数器当前所累 计的脉冲个数,用16位符号整数来表示,最大数值为32 767。
计数器输入端和操作数 ✓ 设定值输入:数据类型为INT型。 ✓ 寻址范围:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、 AC、*VD、*AC、*LD和常数。 ✓ 一般情况下使用常数作为计数器的设定值。
LPS(Logic Push) 逻辑入栈指令(分支电路开始指令)
LRD(Logic Read) 逻辑读栈指令
LPP(Logic Pop) 逻辑出栈指令(分支电路结束指令)
LPS/LRD/LPP
LPS/LRD/LPP举例 例3
指令3 与ENO指令AENO ENO是LAD中指令盒的布尔能量流出端。该指令使用较少。
举例
1. 逻辑堆栈操作指令
堆栈 堆栈是一组能够存储和取出数据的暂存单元。 遵循“先进后出”的原则。 堆栈深度为“9层”。 可以存储最新的逻辑运算(中间)结果,以便后续逻辑环节使用该结果。 逻辑堆栈操作主要来完成触电复杂逻辑连接的编程。
指令1 OLD(或块指令) ALD (与块指令)
OLD(Or Load)
定时器的指令及使用 指令
定时器的指令及使用
接通延时定时器TON(On-Delay Timer) ✓ 接通延时定时器用于单一时间间隔的定时。 ✓ 上电周期或首次扫描时,定时器位为OFF,当前值为0。 ✓ 输入端接通时,定时器位为OFF,当前值从0开始计时,当前值达 到设定值时,定时器位为ON,当前值仍连续计数到32 767。 ✓ 输入端断开,定时器自动复位,即定时器位为OFF,当前值为0。

第3章 指令系统(BH)

第3章 指令系统(BH)
• 指令:是CPU根据人的意图来执行某种操作的命令。
• 程序设计语言:是实现人机交换信息的基本工具,
分为机器语言、汇编语言和高级语言。 能直接识别和执行的语言。
• 机器语言:用二进制编码表示每条指令,是计算机
• 汇编语言:是用助记符、符号和数字等来表示指令
的程序设计语言。它与机器语言指令是一一对应的。
MOV direct,Rn;
111 1rrr direct
(Rn)
direct
MOV direct, direct;
1000 0101 源 direct 目的 direct
(源 direct) 目的 direct
MOV direct,@Ri ;
1000 011i direct
((Ri))
direct
• 例如
计算机科学学院
电子信息科学教研室
12
• 例如:将片内RAM 65H单元内容47H送A,可执行 指令“MOV A,@R0”。其中R0内容为65H。如 图所示:
以指令中所指定 的R0内容(65H) ① 为指针
地址 数据存储器
R0
65H

② A
47H
将片内RAM 65H单 元内容47H送A
65H
11
计算机科学学院
电子信息科学教研室
4、寄存器间接寻址
• 寄存器间接寻址:操作数的地址事先存放在某个寄
存器中,寄存器间接寻址是把指定寄存器的内容作为 地址,由该地址所指定的单元内容作为操作数。
• 89C51规定R0或R1为间接寻址寄存器,它可寻址内部
地址RAM低位的128B单元内容。还可采用DPTR作为 间接寻址寄存器,寻址外部数据存储器的64KB空间。

第3章 8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

第3章  8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

直接寻址方式可以利用变量名的偏移地址属性来 描述操作数的偏移地址(可直接用变量名,或将 变量名置于方括号[ ]中),段寄存器默认为DS。 如果实际使用的段寄存器不是DS,则必须用段 前缀明确指出。
【例3.7】设数据段内有如下变量定义语句
VAR DB 76H,5CH,0A3H,08H
分析以下指令的执行结果。
3.1 指令系统基本概念
指令是给计算机下达的一个简单操作任务,CPU 所能执行的所有指令构成了一个计算机的指令系 统(也称指令集)。
汇编语言指令是对机器指令的符号化表示,采用 助记符来表示指令的操作功能和操作对象。
指令通常可以分为以下几类:
⑴ 数据传送类指令。 ⑵ 算术运算类指令。
⑸ 程序控制类指令。 ⑹ 处理器控制类指令。
【例3.3】要求将数据68传送给AL寄存器,写出相应的传 送指令。 分析:由于AL寄存器接收数据,所以目的操作数为AL, 采用寄存器寻址方式,而源操作数为常数68,采用立即寻 址方式
MOV AL,68 ;AL←68
【例3.4】设被加数存于寄存器DX中,加数为512,写出相 应的加法指令。 分析:因为被加数由寄存器DX提供,所以DX为目的操作 数,采用寄存器寻址方式,而加数为常数512,采用立即 寻址方式
操作数。
2. ADD指令
指令格式:ADD DST,SRC 指令功能:DST←(DST)+(SRC) 。执行加法运算。 操作数特点:两个操作数。被加数DST为目的操作数,加
数SRC为源操作数。
3. NOT指令
指令格式:NOT OPR 指令功能:OPR←(OPR) 。执行逻辑非运算。 操作数特点:一个操作数。OPR既是目的操作数,也是源
段地址由段寄存器提供,用段前缀(DS:,ES:, CS:或SS:)来指明;偏移地址(亦称有效地址) 则有多种表示形式,由此形成了不同的存储器寻 址方式。

第3章指令系统

第3章指令系统
解:程序如下: 程序如下: ORG NUM DATA STRING DATA START: CLR MOV LOOP: LOOP: CJNE SJMP NEXT: NEXT: INC INC SJMP COMP: COMP: MOV SJMP 0800H 20H 21H A R0, R0,#STRING @R0, @R0,#24H,NEXT COMP A R0 LOOP NUM, NUM,A $
单片机原理 及接口技术
第3 章
89C51单片机指 89C51单片机指 令系统
LOGO
LOGO
程序设计举例
一 二 三 四 五 六
简单程序设计举例 分支程序 循环程序 子程序设计举例 代码转换程序设计举例 运算类程序设计举例
BACK
LOGO
一、 简单程序设计举例
例1 :拆字。将片内RAM 20H单元的内容拆成两段,每段 拆字。将片内RAM 20H单元的内容拆成两段 单元的内容拆成两段, 四位。并将它们分别存入21H 22H单元中 程序如下: 21H与 单元中。 四位。并将它们分别存入21H与22H单元中。程序如下:
练习: 练习: 1.将片外RAM 2000H单元开 始的20个字节,传送到片 内RAM 30H单元开始的单元 中去。 2.将片内RAM 20H单元开始 的10个字节,传送到片内 RAM 30H单元开始的单元中 去。 3.将片内RAM BK1单元开始 的COUNT个字节,传送到片 外RAM BK2单元开始的单元 中去。
Back
LOGO
3.4
思考题与习题
1. 简述下列基本概念: 指令、指令系统、机器语言、汇编语言、高级 语言。 2. 什么是计算机的指令和指令系统? 3. 简述89C51汇编指令格式。 4. 简述89C51的寻址方式和所能涉及的寻址空间。 5. 要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式?

第三章MCS51系列单片机指令系统及汇编语言程序设计

第三章MCS51系列单片机指令系统及汇编语言程序设计
AJMP addr11 绝对转移指令为2K地址范围内的转移指令,对转移目的地址的要求与 ACALL指令中对子程序入口地址的要求相同。 【3】短转移指令
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)

第3章 8086指令系统及汇编语言程序设计

第3章 8086指令系统及汇编语言程序设计

图3-7 立即数寻址
第3章 8086指令系统及汇编语言程序设计
注意: (2)寄存器寻址方式 ● 寄存器寻址方式的指令操作在CPU 定义:操作数放在寄存器内,由指令直接给出某个 内部执行,不需要执行总线周期,执行速 寄存器的名字,以寄存器的内容作为操作数。寄存器可以 度快。 是16位的 AX、BX、CX、DX、SI、DI、SP、BP寄存器, ● 寄存器寻址方式既适用于指令的源 也可以是8位的 AH、AL、BH、BL、CH、CL、DH、DL 寄存器。 操作数,也适用于目的操作数,并且可同 时用于源操作数和目的操作数。 【例3-2】 MOV AX,CX ;(AX)←(CX) INC AL ;(AL)←(AL)+1 指令执行结果如图3-8 所示
图3-8 寄存器寻址
第3章 8086指令系统及汇编语言程序设计
(3)直接寻址方式 定义:操作数在存储器中,指令中直接给出操作数所在存 注意: 储单元的有效地址。有效地址( EA)也称为偏移地址,它代表 ●直接寻址方式的操作数所在存储单元的段地址一 操作数所在存储单元距离段首址的字节数。有效地址是一个无 般在数据段寄存器DS中。 符号的16位二进制数。 ●如果操作数在其他段,则需要在指令中用段超越 【例3-3】 前缀指出相应的段寄存器名。 ● VALUE是一种符号表示法,此内容将在伪指令中 MOV AH, [1234H ] ;将DS段中1234H单元的内容送给AH 给予讲解。 MOV AH ,VALUE ;将DS段中VALUE单元的内容送给AH ●在实地址方式下,物理地址=16*段地址(DS) MOV AX, [2100H] ;将DS段中2100H单元的内容送给AL, +偏移地址(EA) 2101H单元的内容送给AH MOV BX,ES:【2000H】 ;段超越,操作数在附加段。即 物理地址=(ES)*16+2000H

第3章 指令系统

第3章 指令系统

第3章 指令系统3.1 指令系统的概述及符号约定指令是CPU执行某种操作的命令。

微处理器(MPU)或微控制器(MCU)所能识别全部指令的集合称为指令系统或指令集。

指令系统是制造厂家在设计CPU时所赋予它的功能,用户必须正确的书写和使用指令。

因此学习和掌握指令的功能与应用非常重要,是程序设计的基础。

本章将详细的介绍SPCE061A指令系统的寻址方式和各种指令。

µ’nSP™单片机指令按其功能可划分为:1) 数据传送指令,包括立即数到寄存器、寄存器到寄存器、寄存器到存储器存储器到寄存器的数据传送操作;2) 算术运算,包括加、减、乘运算;3) 逻辑运算,包括与、或、异或、测试、移位等操作;4) 转移指令,包括条件转移、无条件转移、中断返回、子程序调用等操作;5) 控制指令,如开中断、关中断、FIR滤波器的数据的自由移动等操作。

按寻址方式划分,可分为以下几类:立即数寻址这种寻址方式是操作数以立即数的形式出现,例如:R1 = 0x1234,是把16进制数0x1234赋给寄存器R1。

存储器绝对寻址这种寻址方式是通过存储器地址来访问存储器中的数据,例如:R1 =[0x2222],访问0x2222单元的数据。

寄存器寻址这种寻址方式是操作数在寄存器中,例如:R1 = R2,是把寄存器R2 中的数据赋给寄存器R1。

寄存器间接寻址这种寻址方式是操作数的地址由寄存器给出,例如:R1 = [BP],是把由BP指向的内存单元的数据送寄存器R1。

变址寻址这种寻址方式下,操作数的地址由基址和偏移量共同给出,例如:R1 =[BP+0x34]。

表3.1中的符号是在指令系统叙述过程中所要用到的,在此统一进行约定。

表3.1 符号约定R1,R2,R3,R4,R5(BP) 通用寄存器PC 程序计数器CS,DS SR寄存器中的代码段选择字段和数据段选择字段NZSC SR寄存器中的四个标志位(请参考下面几行)SR 段寄存器,其中BIT15~BIT10对应DS;BIT9~BIT6对应NZSC标志位; BIT5~BIT0对应CSIM6 6位(BIT)的立即数IM16 16位(BIT)的立即数A6 6位地址码A16 16位地址码Rd 目的(destination)寄存器或存储器指针Rs 源寄存器或存储器指针→数据传送符号MR 由R4,R3组成的32位结果寄存器(R4为高字节,R3为低字节)&,|,^,逻辑与记号,逻辑或记号,逻辑异或记号{} 可选项[] 寄存器间接寻址标志++,- - 指针单位字增量,字减量ss,us 两个有符号数之间的操作,无符号数与有符号数之间的操作Label 程序标号FIR Finite Impulse Response(有限冲击响应),数字信号处理中的一种具有线性相位及任意幅度特性的数字滤波器算法。

微机原理第3章-指令系统

微机原理第3章-指令系统

▲按给出偏移地址方式的不同,分为以下5种: 寄存器间接寻址 寄存器相对寻址 基址加变址寄存器 相对基址加变址寄存器 MOV AL, [ BX ] MOV AL, [ BX + 10H ] MOV AL, [ BX + SI ] MOV AL, [ BX + SI + 10H ]
(1)寄存器间接寻址
寄存器寻址方式的操作数是寄存器的值,指令中直接 使用寄存器名,包括8位或16位通用寄存器和段寄存器。可 使用的16位寄存器:AX、BX、CX、DX、SI、DI、SP、 BP;其中:AX、BX、CX、DX可分成两8位使用。
例: MOV AX,CX
;(AX)
(CX)
INC CX
;(CX)
(CX)+1
3.直接寻址(Direct Addressing)
0002
AH
AL
默认段寄存器的关系: ① 使用BX、SI、DI,默认段寄存器为DS
(BX)
PA = ( DS )×10H + (SI) (DI)
② 使用BP,默认段寄存器为SS PA = ( SS )×10H + ( BP )
使用BX、SI、DI的寄存器寻址,默认段寄存器为DS
寄存器组 AH AL BH BL CH CL DH DL SI DI BP SP AX BX CX DX DS ES SS CS IP 地 址 加 法 器
运 算 器
控制总线CB


PSW标志 寄存器
执行部件控制电路
CPU
总线
内存
例: MOV AX , [ BX + SI ]
若 ( DS ) = 4000H
( BX ) = 2000H ( SI ) = 100H 则内存操作数的物理地址为:

第3章_MCS-51单片机指令系统及汇编语言程序设计2

第3章_MCS-51单片机指令系统及汇编语言程序设计2

3. 汇编语言的语句格式是什么?使用标号有什么限制?注释段起什么作用? 答案: MCS-51汇编语言的语句格式应符合下列结构: 【标号:】 操作码 【操作数】【;注释】 标号位于语句的开始,由以字母开头的字母和数字组成,它代表该语句的地址。 标号与操作码之间要用“:”隔开,标号与“:”之间不能有空格,“:”与操 作码之间可以有空格。 注释在语句的最后,以“;”开始,是说明性的文字,与语句的具体功能无关。 4. MCS-51汇编语言有哪几条常用伪指令?各起什么作用? 答案: ORG:汇编程序起始地址,用来说明其后程序段在存储器中存放的起始地址; EQU:赋值指令,用来给变量标号赋予一个确定的数值; DB:定义数据字节,指令按字节数的形式把数据存放在存储单元中; DW:定义数据字,按字(双字节)的形式把数据存放在存储单元中; DS:定义存储区,从指定的地址单元开始,保留一定数量的存储单元; BIT:位定义,其功能是把位地址赋给字符名称; END:汇编结束,表明汇编语言程序结束。
2.顺序程序
顺序程序是指程序中没有使用转移类指令的程序段,机器执行这 类程序时也只需按照先后顺序依次执行,中间不会有任何分支、循环, 也不需要调用子程序。 例:将一个单字节十六进制数转换成BCD码。 解:算法分析。单字节十六进制数在0~255之间,将其除以100后, 商为百位数;余数除以10,商为十位数,余数为个位数。 设单字节数存放在40H,转换后,百位数存放在R0中,十位数存 放在R1中,个位数存放在R2中,具体程序如下: ORG 0030H MOV A, 40H ;将单字节十六进制数送入A中 MOV B,#64H ;将100送入B中, #64H可直接写成#100 DIV AB MOV R0,A ;百位数送R0,余数在B中 XCH A,B ;余数送入A中 MOV B,#0AH ;将10送入B中, #0AH可直接写成#10 DIV AB ;商为十位数,余数为个位数 MOV R1,A MOV R2,B SJMP $

汇编语言程序设计_第3章 80x86指令系统

汇编语言程序设计_第3章 80x86指令系统

3.3.2 算术指令
1. 加法
一般形式:
ADD dest, src ; dest = dest + src
ADC dest, src ; dest = dest + src + CF
INC
dest
; dest = dest + 1
语法格式:
ADD reg/mem, reg/mem/imm
ADC reg/mem, reg/mem/imm
movsx ax, al ; 等价于cbw movsx eax, ax ; 等价于cwde movsx eax, al ; 等价于顺序执行cbw与cwde
2019/8/26
80x86汇编语言程序设计
3.3.1 数据传送指令
(3)MOVZX 一般形式: MOVZX dest, src ; src零扩展为dest;386新增 语法格式: MOVZX reg16, reg8/mem8 MOVZX reg32, reg8/mem8/reg16/mem16
2019/8/26
80x86汇编语言程序设计
3.3.1 数据传送指令
5. 堆栈操作指令
80x86系统的堆栈具有如下特点: 堆栈是在内存的堆栈段中,具有“先进后出”的特点。 堆栈只有一个出入口,即当前栈顶。当堆栈为空时,栈顶和栈底指向同一内存单
元。 堆栈有两个基本操作:PUSH(进栈)和POP(出栈)。PUSH操作使栈顶向低地
INC
reg/mem
对标志位的影响:
ADD、ADC:按一般规则影响CF、OF、SF和ZF。 INC:不影响CF,其它同ADD。 说明:ADD与ADC的2个操作数必须类型匹配,且不能同时是内存操作数。
2019/8/26

第3章--Cortex-M3-指令系统

第3章--Cortex-M3-指令系统

3.2.2指令的可选后缀
(2)!后缀 如果指令地址表达式中不含!后缀,则基址寄存器中的地址值不会发生变化。 指令中的地址表达式中含有!后缀时,指令执行后,基址寄存器中的地址值将发 生变化,变化的结果如下: 基址寄存器中的值(指令执行后)=指令执行前的值+地址偏移量
例 3.3 分别执行下面两条指令有何区别?
18
3.3 指令的寻址方式
• 3.3.1 立即数寻址 • 3.3.2 寄存器寻址 • 3.3.3 寄存器间接寻址 • 3.3.4 寄存器移位寻址 • 3.3.5 基址变址寻址 • 3.3.6 多寄存器寻址 • 3.3.7 相对寻址 • 3.3.8 堆栈寻址
3.3.1立即数寻址
• 立即数寻址也叫立即寻址,操作数本身就在指令中给出,取出指令也就
第3章 Cortex-M3 指令系统
1
第3章 Cortex-M3 指令系统
• 3.1 指令基础 • 3.2 汇编语言 • 3.3 寻址方式 • 3.4 指令集
2
3.1 指令基础
• 3.1.1 程序设计语言的层次结构 • 3.1.2 程序的执行过程 • 3.1.3 Cortex M3寄存器
3.1.1程序设计语言的层次结构
S后缀通常用于对条件进行测试,例如是否有溢出,是否进位等;根据 这些变化,就可以进行一些判断,如是否大于,是否相等;从而可能影响 指令执行的顺序。
✓ 条件后缀和S后缀的关系如下: 如果既有条件后缀又有S后缀,则书写时S排在后面, 如:ADDEQS R1,R0,R2 该指令在Z=1时执行,将R0+R2的值放入R1,同时刷新条件标志位。
无法表示的32位数, 只有通过逻辑或算术运算等其它途径获得了. 比如0xffffff00, 可以通过0x000000ff按位取反得到.

第3章单片机指令系统

第3章单片机指令系统

寄存器寻址 寻址方式 寄存器间接寻址
基址加变址寄存器间接寻址 相对寻址 位寻址
1.立即寻址

操作数直接由指令给出,通常紧跟指令操作码之 后的字节是操作数,该操作数被称为立即数。

立即寻址所对应的寻址空间为:ROM 立即数:8/16位二进制数
如:MOV MOV A,#7AH DPTR, #1234H
注意:
① 适当选择SFR。寻址SFR时,可以用直接地址,也可以 用寄存器名,但后者更容易理解和阅读 如: MOV A,0D0H ; (A)←(D0H) MOV A,PSW ; (A)←(PSW)
② 适当选择累加器的表达式
累加器A表达方式 A → 寄存器寻址 ACC 直接寻址 E0H ;04H 单字节
如:
INC A INC ACC INC 0E0H
;05E0H 双字节
③ 注意地址的区别(位地址与字节地址)
如: MOV A,30H MOV C,30H ; (A)←(30H) ;(C)←(30H) 字节操作 位操作
3. 寄存器寻址

操作数在寄存器中
可用寄存器有: (1)四组工作寄存器R0~R7共32个工作寄存器 (2)SFR中有A、AB、DPTR及CY 如: MOV R3,#12H MOV A,R3
注意:① 立即数前加“#”号 ② 立即寻址方式的指令是双字节的(第1个字节为 操作码,第2个字节是操作数) ③ 操作数是放在ROM内的常数
2. 直接寻址

指令中直接给出操作数所在的单元地址或位地址
直接寻址可访问的存储空间: (1)内部RAM低128个单元 在指令中直接以单元地址形式给出,地址范围00H~7FH (2)特殊功能寄存器SFR 直接寻址是SFR惟一的寻址方式,SFR可以用单元地址给出, 也可用寄存器符号形式给出(但A、AB、DPTR除外) (3)211个位地址空间 内部RAM中可位寻址的20H~2FH单元对应的128个位地址空间 11个SFR中83个可用的位地址空间

第3章 MCS-51指令系统

第3章 MCS-51指令系统

16
MCS-51单片机指令系统
MCS-51单片机指令系统包括111条指令 按功能可以划分为以下5类:
1. 数据传送和交换指令(29条)
2. 算术运算指令(24条) 3. 逻辑运算指令(24条) 4. 控制转移指令(17条) 5. 位操作指令(17条)
17

数据传送和交换类指令主要有以下几种:
1. 2. 3.

30H
Eg:MOV 30H,#33H 33H
30H
XX 30H
33H
30H
31H
Eg:MOV 30H,31H
55H
XX
55H
25
A

30H XX
地址
30H 33H
Eg:MOV 30H, A
33H
R0
Eg:MOV 30H,@R0
55H
取出
30H 78H 30H
55H
R3
78H
30H XX

55H
MOV A , 30H
XX 55H
30H
A
6
3、寄存器寻址
寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄 存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR等。 数据存放在R0~R7中的某个通用寄存器内,或者放在某个专用 寄存器中。 e.g.: MOV A,R7 ADD A,R0
DPTR
2000H
DPTR 2000H
XXXX
Eg:将数据指针DPTR指向存于ROM中的表格首地址。
MOV DPTR,#TABLE
27
三、片外数据传递指令
使用DPTR和Ri进行间接寻址 MOVX A, @DPTR ;A ←((DPTR))片外 MOVX A,@Ri ;A ←((Ri))片外 MOVX @DPTR,A ;(DPTR)片外←(A) MOVX @Ri,A ;(Ri)片外←(A) 注意: 该指令用于在单片机和外部RAM、扩展I/O的数据传送; 使用Ri时,只能访问低8位地址为00H~FFH地址段; 使用DPTR时,能访问0000H ~ FFFFH地址段。

指令系统及汇编语言程序设计

指令系统及汇编语言程序设计

第3章指令系统及汇编语言程序设计一、简答题1、80C51系列单片机的指令系统有何特点?2、80C51单片机有哪几种寻址方式?各寻址方式所对应的寄存器或存储器空间如何?3、访问特殊功能寄存器SFR可以采用哪些寻址方式?4、访问内部RAM单元可以采用哪些寻址方式?5、访问外部RAM单元可以采用哪些寻址方式?6、访问外部程序存储器可以采用哪些寻址方式?7、为什么说布尔处理功能是80C51单片机的重要特点?8、对于80C52单片机内部RAM还存在高128字节,应采用何种方式访问?9、试根据指令编码表写出下列指令的机器码。

(1)MOV A,#88H(2)MOV R3,50H(3)MOV P1.1,#55H(4)ADD A,@R1(5)SETB 12H10、完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操作的指令序列。

(1)将R0的内容传送到R1;(2)内部RAM单元60H的内容传送到寄存器R2;(3)外部RAM单元1000H的内容传送到内部RAM单元60H;(4)外部RAM单元1000H的内容传送到寄存器R2;(5)外部RAM单元1000H的内容传送到外部RAM单元2000H。

11、11、若(R1)=30H,(A)=40H,(30H)=60H,(40H)=08H。

试分析执行下列程序段后上述各单元内容的变化。

MOV A,@R1MOV @R1,40HMOV 40H,AMOV R1,#7FH12、若(A)=E8H,(R0)=40H,(R1)=20H,(R4)=3AH,(40H)=2CH,(20)=0FH,试写出下列各指令独立执行后有关寄存器和存储单元的内容?若该指令影响标志位,试指出CY、AC、和OV的值。

(1)MOV A,@R0(2)ANL 40H,#0FH(3)ADD A,R4(4)SWAP A(5)DEC @R1(6)XCHD A,@R113、若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、42H单元中的内容各为多少?MOV A,50HMOV R0,AMOV A,#00HMOV @R0,AMOV A,3BHMOV 41H,AMOV 42H,41H14、试用位操作指令实现下列逻辑操作。

第3章 MCS-51 的指令系统与汇编语言程序设计1

第3章 MCS-51 的指令系统与汇编语言程序设计1

每条指令在执行时要花去一定的时间,以机器周期为单 位。按指令的执行时间来分: (1) 1个机器周期(12个时钟振荡周期)指令64条 (2) 2个机器周期(24个时钟振荡周期)指令45条 (3) 4个机器周期(48个时钟振荡周期)只有乘、 除两条指令的执行时间。 12MHz晶振:机器周期为1s。 按指令的功能分类,可分为5大类: 数据传送类(29条);算术运算类(24条) 逻辑运算及移位类(24);控制转移类(17条) 位操作类(17条)
第3章 MCS-51的指令系统与汇编语言程序设计
【学习目标】 掌握单片机的指令系统,熟悉指令功能、指令格 式以及指令的寻址方式; 理解汇编语言的特点以及与机器语言之间的区别 和联系; 掌握汇编语言程序设计的步骤、汇编语言程序的 结构; 熟练掌握汇编语言应用程序的开发
xuminxm11@ 密码:xuminxm1111
2.汇编语言 4) (4)DB(Define Byte)
汇编结果:(1000H) 汇编结果:(2000H) =25H =25H
页码 P68 P70 P73
章节或标题
(5)DW(Define Word) (4)分配内存单元
原错误
例如, ORG 1000H
更正为
例如, ORG 2000H
分配内存工作单元,确 定层序和数据的真实地 址
; 取高位 ; 两数高位相加 ; 存“和”的高位
【例3.11】 有一数据块存放起始地址为DATA1的片外RAM 区,数据块以“0”为结束标志,要求将其传送到DATA2为 起始地址的片内RAM区。编写程序如下: MOV DPTR, #DATA1 MOV R0,#DATA2 LOOP:MOVX A, @DPTR JZ ENDO MOV @R0,A INC DPTR INC R0 AJMP LOOP ENDO: SJMP $ ;设置片外RAM数据块地址指针 ;设置片内RAM数据块地址指针 ;取数 ;检测是否为0?为0,转ENDO ;不为0,传送 ;修改地址指针

第03章 MCS - 51单片机指令系统

第03章 MCS - 51单片机指令系统
这里源操作数不能进行寄存器间接寻址, 也就是MOV Rn , @Rn 这个指令是不能用 的。
第 二 节 数 据 传 送 指 令
第3章 MCS-51单片机指令系统
(2)将数据传送到工作寄存器Rn的指令(3条) 例:已知累加器A的内容为30H,寄存器R7的内容 为50H,内部RAM30H单元的内容为40H,内部 RAM50H单元的内容为10H,请指出下列每条指令 执行以后相应单元内容的变化.
第 一 节 指 令 格 式 与 寻 址 方 式
第3章 MCS-51单片机指令系统
(6) 相对寻址:
在MCS -51 指令系统中设有转移指令, 分 为直接转移和相对转移指令, 在相对转移 指令中采用相对寻址方式。这种寻址方式 是以PC的内容为基本地址, 加上指令中给 定的偏移量作为转移地址,也就是目的地 址(用来修改PC的值)。指令中给出的偏 移量是一个 8 位带符号的常数, 可正可负, 其范围为-128~+127。
第3章 MCS-51单片机指令系统
(1) 立即寻址:
立即寻址方式是将操作数直接存放在指令字 节中,作为指令的一部分存放在代码段里。 比如:MOV A, #3AH 跟在指令操作码后面的数就是参加运 算的数, 该操作数称为立即数。立即数有一字 节和二字节两种可能, 如指令: MOV DPTR, #0DFFFH 上述两条指令均为立即寻址方式, 第 一条指令的功能是将立即数 3AH送累加器A中, 第二条指令的功能是将立即数 0DFFFH送数据 指针DPTR中(DPH, 0FFH→DPL)。
第 二 节 数 据 传 送 指 令
第3章 MCS-51单片机指令系统
3.2数据传送指令
程序中使用最多的指令,主要用于内部RAM、 寄存器、外部RAM以及程序存储器之间的数据 传送、保存以及交换。 工作原理:将源操作数简单地传给目的 操作数,而源操作数的内容不变,PSW的内容 不改变。 分类:内部数据传送指令、外部传送指 令、查表指令、交换指令和堆栈指令。

第三章MCS-51指令系统及汇编语言程序设计

第三章MCS-51指令系统及汇编语言程序设计

指 令 系 统 的 寻 址 方 式
MCS-51指令系统及一般说明 MCS-51指令系统及一般说明
在介绍指令之前, 在介绍指令之前 , 先对指令中使用的一些符号意义进行简单 的说明。 的说明。 direct---直接地址, ---直接地址 ① direct---直接地址,即8位的内部数据存储器单元或特殊 功能寄存器的地址。 功能寄存器的地址。 #data--包含在指令中的8位常数。 --包含在指令中的 ② #data--包含在指令中的8位常数。 #datal6--包含在指令中的16位常数 包含在指令中的16位常数。 ③ #datal6--包含在指令中的16位常数。 rel-- 位的带符号的偏移量。用于SJMP --8 SJMP及所有的条件转移 ④ rel--8位的带符号的偏移量。用于SJMP及所有的条件转移 指令中。 指令中 。 偏移量按相对于下一条指令的第一个字节地址与跳转 后指令第一个字节地址之差计算, 范围内取值。 后指令第一个字节地址之差计算,在-128~+127范围内取值。 128 +127范围内取值 DPTR--数据指针,可用作16位的地址寄存器。 --数据指针 16位的地址寄存器 ⑤ DPTR--数据指针,可用作16位的地址寄存器。
指 令 系 统 的 寻 址 方 式
寄存器间接寻址
寄存器间接寻址方式可用于访问内部RAM 或外部数据存储器 寄存器间接寻址方式可用于访问内部 RAM或外部数据存储器 。 RAM 或外部数据存储器。 这种寻址方式是由指令指定某一寄存器的内容作为操作数的 地址。 地址。 其中(Ri)=40H (Ri)=40 例如 MOV A,@Ri ;(i=0或1),其中(Ri)=40H 这条指令表示从Ri中找到源操作数所在单元的地址, Ri中找到源操作数所在单元的地址 这条指令表示从Ri中找到源操作数所在单元的地址,把该地 址中的内容传送给A 即把内部RAM 40H单元的内容送到累加器A RAM中 址中的内容传送给A。即把内部RAM中40H单元的内容送到累加器A 中。

第3章指令系统0917

第3章指令系统0917
3. 指令表中的两个参数: 指令字节数和机器周期数 只有指令表中的指令才有对应指令代码,计算机才能执行。编程
时,不能随意创造发明指令。
3.3 指令分类介绍
二 外部数据存储器读写传送指令: (MOVX)
实现外部数据存储器和累加器A之间的数据传送。 指令格式:MOVX 目的操作数,源操作数 寻址方式:通过A并使用寄存器间接寻址方式。
单片机原理及应用
第3章 指令系统
本章学习要求:
1.掌握指令格式和寻址方式 2.理解每条指令的含义 3.熟练运用每条指令编写程序 4.掌握汇编语言程序编译环境
3.1 AT89C51程序设计语言介绍
3.1 AT89C51程序设计语言介绍
有三类
机器语言(Machine Language) 汇编语言 (Assemble) 高级语言 (High Level Language)
1. DPTR作间接寻址寄存器: MOVX A,@DPTR ;A←((DPTR)) MOVX @DPTR,A ;(DPTR)←(A)
(读) (写)
2. Ri作间接寻址寄存器(了解):
MOVX A,@Ri MOVX @Ri,A
;A←((P2Ri)) ;(P2Ri)←A
(读) (写)
3.3 指令分类介绍
2005
DB 32H
2005H 32H
……
2004H 31H
2011
机器语言:
用二进制代码表示的指令,也是CPU唯一能够接受的指令形式. 如:MOV A,R0;机器语言(机器码)为:1110_1000b
MOV R1,A;机器码为:1111_1001b
汇编语言:
汇编语言就是用助字符表示的指令,与机器语言指令一一对应。
如:两个寄存器相加汇编语言指令:ADD A,R0
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

直接寻址
直接给出内部RAM地址。 例如指令MOV A,3FH;机器码为E5H 3FH, 表示把内部RAM 3FH单元的内容传送给A。 对于特殊功能寄存器,在助记符指令中可直接 用符号来代替地址,如MOV A,P0表示把P0 口(地址为80H)的内容传送给累加器A。这种写 法与MOV A,80H等同。但更容易理解和阅读。
使用的空间 内部 RAM 和特殊功能寄存器 内部 RAM 外部 RAM 与 I/O 口 程序存储器 程序存储器 程序存储器 内部 RAM 的 20H~2FH 及部 分特殊功能寄存器
寄存器寻址
可访问选定寄存器区的8个工作寄存器R0~R7。 寄存器A、B、DPTR和也可作为寻址的对象。 如指令MOV A,Rn(n=0~7)表示把寄存器Rn 的内容传送给累加器A。 例如,指令MOV A,R7 ;机器码为EFH
RAM 24H 1 1 0 0 1 0 1 1
C 1
变址寻址
用于访问程序存储器的一个单元,该单元的地址 是基址寄存器(DPTR或PC)的内容与变址寄存器 A的内容之和。 例如指令MOVC A,@A+DPTR;机器码为93H。
ROM 10010011 A 05H DPTR 4000H
PC PC+1
3.1.1指令格式
指令格式:指令的表示方法。内容包括指令 的长度和指令内部信息的安排等。 一条指令通常由操作码和操作数两部分组成。 操作码:规定指令进行什么操作。 操作数:指令操作的对象。 8051系列单片机的指令系统有单字节、双字 节和三字节的指令。
单字节指令: 操作码和地址码 操作码和操作数同在一个字节中。如 MOV
指令系统符号器。 Bit:内部RAM或特殊功能寄存器中的直接寻址位。 Cy:进位位,或位处理机中的累加器。 @:间址寄存器或基址寄存器的前缀。 (X):X中的内容。 ((X)):由X寻址的单元中的内容。
指令系统符号意义
Addr11:低11位目标地址。只限于在 ACALL和AJMP指令中使用。 Addr16:16位目标地址。只限于在LCALL 和LJMP指令中使用。 $:当前指令地址。 A:累加器。 B:B寄存器。 /:位地址的前缀标志,表示对该位操作数 取反。
操作码
4005H


ALU PC
相对寻址
访问程序存储器,出现在相对转移指令中。 相对寻址是将程序计数器PC中的当前值与指令第二字节 所给出的偏移量相加,其和为跳转指令的转移地址。 偏移量范围为-128~+127。 例如SJMP 20H;机器码为80H 20H。
ROM PC PC+1 PC+1 2100H 2101H 2102H 10000000 00100000 20H 2102H
ALU 2122H PC
3.1.3
MCS-51指令系统符号意义
Rn:n=0~7,表示当前寄存器组的8个通用寄存器 R0~R7 中的一个。 Ri:i=0,l,可用作间接寻址的寄存器,只能是R0、 R1 两个寄存器中的一个。 Direct:直接地址,内部的8位地址。 #data:包含在指令中的8位常数。 #datal6:包含在指令中的16位常数。 Rel:相对转移指令中的偏移量, 8位的带符号数。 用于SJMP及所有的条件转移指令中。转移范围为相 对于下一条指令笫一字节地址的-128~+127。
第3章 指令系统及程序设计
指令:能完成特定功能的命令。 指令系统:CPU所能执行的各种指令的集 合。 汇编语言程序设计:利用汇编语言设计程 序。 MCS-51系列单片机的指令系统功能完善, 使用灵活方便。
3.1 MCS-51指令系统简介
MCS-51的基本指令共111条,其指令系统是 一个具有255种操作码 (00H至FFH,除A5H 外) 的集合。 用汇编语言表达操作代码时,只要熟记42种 助记符。同一种指令所对应的操作码可以多 至八种 (如指令中Rn对应寄存器R0-R7) 。 MCS-51的指令系统按指令功能分为五大类: ① 数据传送类 ② 算术运算类 ③ 逻辑运算类 ④ 控制转移类 ⑤ 位操作类
寄存器间接寻址
寄存器间接寻址方式可用于访问内部RAM 或外部数据存储器。指令指定某一寄存器的 内容作为操作数的地址。 访问内部RAM或外部RAM的低256个字节 时,可采用R0或R1作为间址寄存器。访问 外部RAM,还可用数据指针DPTR作为间址 寄存器。 例如指令ANL A,@R1;机器码为57H。
立即寻址
双字节指令。第一个字节是操作码,第二 字节就是操作数。
例如指令MOV A,#5AH;机器码为74H 5AH。
位寻址
位寻址:对片内RAM的位寻址区和SFR的寻址位 进行寻址。操作数直接给出该位的地址。 例如指令MOV C,24H.0;机器码为A2H 20H, 相当于MOV C,20H
A,Rn
数据或地址码 双字节指令: 操作码和地址码 操作码占1个字节,操作数占1个字节。 如MOV #data
A,
数据或地址码 三字节指令: 操作码 数据或地址码 操作码占1个字节,操作数占2个字节。 如ANL direct ,#data
3.1.2 寻址方式
寻址方式:CPU寻找操作数或操作数地 址的方法。 寻址方式越多,计算机指令功能越强, 灵活性越大,但是指令系统也越复杂。 MCS-51采用7种寻址方式。
序号 1 2 3 4 5 6 7
方式 寄存器寻址 直接寻址 寄存器间接寻址 立即寻址 变址寻址 相对寻址 位寻址
利用的变量 R0~R7, B, DPTR 片内 A, Cy, Direct , SFR @R0,@R1,SP @R0,@R1,@DPTR @A+DPTR pc+偏移量 bit @A+PC
相关文档
最新文档