第3章 指令系统
第03章 MCS-51指令系统

三、指令系统支持的寻址方式(4-2)
► 寄存器间接寻址的三种用法: ► ⑴可以借助于 R0 或 R1 这 2 个工作寄存器用 MOV 指
令进行寄存器间接寻址来寻址片内RAM区的通用寄 存器; ► ⑵可以借助于R0或R1这2个工作寄存器用MOVX指 令进行寄存器间接寻址来寻址片外 64K数据存储器 R0R1片外 区的低256单元; ► ⑶还可以借助于16位的数据指针DPTR用MOVX指 令进行寄存器间接寻址来寻址整个片外64K数据存 DPTR片外 储器区中的任一单元。
► 4、寄存器间接寻址:
操作码中包含着R0或R1这2 个工作寄存器中某一个的序号,而该工作寄存器中 的内容为存放操作数的地址。
E7H MOV A,@R1 ► 若指令执行前 ► PSW.4=0(RS1)、PSW.3=0(RS0)、 ► (01H)=30H(R1)、(30H)=33H; ► 则执行指令后累加器A即(E0H)=33H。 ► 必须注意的是 52 子系列片内 RAM 中高 128 单元的 通用寄存器只能用此方式寻 变址寻址
位寻址
PC+偏移量 @+PC,@+DPTR
程序存储器 程序存储器
片内RAM中的位寻址 区,可以位寻址的特 殊功能寄存器位
四、指令系统支持的辅助结果(1)
► 指令操作的辅助结果存放在程序状态字PSW(D0H)
之中,其一个字节的 8 位内容除 D1 位未用外,其 余各位的定义分别为: ► 1、进位标志C(D7): ► 加、减法运算有进、借位时C=1,否则C=0; ► 位处理时,作位累加器用,即存放第一操作 数与结果; ► 2、辅助进位标志AC(D6): ► 加、减法运算时低半字节的 D3 位有进、借位 时AC=1,否则AC=0; ► 3、软件标志 F0(D5): 由软件置位或复位, 归用户定义使用;
第3章指令系统

单片机原理 及接口技术
第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. 要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式?
第三章 MCS-51指令系统

3-1 指令格式 3-2 寻址方式 3-3 数据传送指令 3-4 算术运算指令
3-5 逻辑运算指令
3-6 位操作指令
3-7 控制转移指令
3-8 调用和返回指令
1
第三章 MCS-51指令系统
3-1 指令格式
一、 汇编语言指令格式 [标号:] 操作码 [操作数1],[操作数2][;注释] 例: LOOP: MOV A,#40H ;40H -> A
3-2 指令寻址方式
寻找操作数的方法叫寻址方式。
一、立即寻址方式 指令中给出实际操作数据(立即数), 一般用于为寄存器或存储器赋常数初值。
例:
8位立即数: MOV A,#40H ;A40H 16位立即数: MOV DPTR,#2100H ;DPTR2100H
9
第三章 MCS-51指令系统 二、直接寻址方式
24
第三章 MCS-51指令系统
(四)堆栈操作指令 入栈指令:PUSH n ;SPSP+1,(SP)(n) 出栈指令:POP n ;(n)(SP),SPSP-1 例:设 A=02,B=56H,执行下列指令后,SP= 30H , ? A= ? ,B= ? 30H 30H
SBR: MOV SP,#30H ;设栈底 PUSH A PUSH B MOV A,#0 B, #01
Y1,Y2,…,Yn
5
第三章 MCS-51指令系统
3-1 指令格式
二、 伪指令
汇编时不产生机器码,仅供汇编识别控制。
5.定义空间伪指令:DS 表达式 例3-6 ORG DS DB 0F00H 10H 20H,40H
汇编后,从0F00H开始,保留16个字节的内存单元, 然后从0F10H开始,按照下一条DB伪指令给内存单元赋值, 得(0F10H)=20H,(0F11H)=40H。
第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章.指令系统控制程序转移类指令new下

;3字节指令
同样地,使用时,可以将rel理解成标号,即: CJNE A,#data, 标号 CJNE A,direct,标号 CJNE Rn,#data,标号 CJNE @Ri,#data,标号
⑵比较(不相等)转移指令
① CJNE A,#data,rel
;先(PC)+3→PC
若(A)>#data,则(PC)+rel→PC,且0→CY; 若(A)<#data,则(PC)+rel→PC,且1→CY; 若(A)=#data,则顺序执行,且0→CY。
② rel为负数时,范围为:-128~-1 (80H~FFH)。
③相对转移指令“SJMP rel”
★正向跳转时: rel=目的地址-源地址-2
=地址差-2。
例如:
0157H
0100H:SJMP rel
设转移的地址为0157H,则: rel=0157H-0100H-2=55H。故该指令可写成:
0100H:SJMP 55H 其机器码为: 80H 55H
⑵位置1指令
SETB C SETB bit
; 1→ CY。 1字节指令 ;1→bit 。 2字节指令
2. 位修正指令
⑶位取反指令
CPL C
;(C)→C, 1字节指令
CPL bit ;(bit) → bit。 2字节指令
3. 位逻辑运算指令 ⑴位逻辑“与”指令 ANL C, bit ;(C) ∧ (bit)→C。 2字节指令 ANL C, /bit ;(C) ∧ (bit) →C。 2字节指令
; 否则顺序执行。
JNZ rel ;(PC)+2→PC。若A≠0,则转移到(PC)=(PC)+rel ;
;否则顺序执行。
第3章 PIC单片机指令系统

第3章 指令系统3.1 3.2 3.3 3.4 汇编语言 寻址方式 PIC18F452指令系统 程序设计举例3.1汇编语言• 指令:是 指令:是CPU CPU根据人的意图来执行某种操作的命令。
根据人的意图来执行某种操作的命令。
• 程序设计语言:是实现人机交换信息的基本工具,分为机 器语言、汇编语言和高级语言。
• 机器语言:用二进制编码表示每条指令 机器语言:用二进制编码表示每条指令,是计算机能 ,是计算机能直接 直接 识别和执行的语言。
识别和执行 的语言。
• 汇编语言:是用助记符、符号和数字 汇编语言:是用助记符、符号和数字等来表示指令的程序 等来表示指令的程序 设计语言。
它与机器语言指令是一一对应的。
设计语言。
它与机器语言指令是一一对应的。
? 汇编语言编写的程序能否直接被计算机执行? • 高级语言:面向问题和计算过程的语言,可通用于各种不 同的计算机。
用户编程时不必了解所用计算机的指令系统。
Why study assembly language?• Many critical programs are written in assembly language • To better understand the functions and architecture of a computer system • To better understand the working of high level languages • To design efficient programs • A tool for writing system programs • Embedded systems development– Mixed languages programming3• PIC18F452 PIC18F452汇编语言指令格式 汇编语言指令格式 标记段: 标记段 :操作码 [目的 目的操作数 操作数][, ][,源 源操作数 操作数][ ][; ;注释 注释] ]MOVLW BTFSS BCF GOTO 0x7F WREG, 7 WREG, 0 Stop ;load test data ;clear bit 0Stop:• 其中操作码 其中操作码是必不可少的。
第3章 AT89S51的指令系统

(1) CLR A A清“0”,不影响Cy、Ac、OV等标志位。
2. 累加器A 求反指令
(2) CPL A A的内容按位逻辑取反,不影响标志位。
3.2.3 逻辑运算指令(25条)续
3.左环移指令
(3)RL A A7 A6 A5 A4 A3 A2 A1 A0
A向左循环移位,位7循环移入位0,不影响标志位。 4.带进位左环移指令
3.2.4 控制转移类指令(17条)续 4.条件转移指令(2条)
(4)JZ rel ;若A内容为“0”,则转移 (5)JNZ rel ;若A内容非“0”,则转移
规定的条件满足,则进行转移,条件不满足 则顺序执行下一条指令。
3.2.4 控制转移类指令(17条)续
5.比较不相等转移指令(4条)
举例: CJNE A,direct,rel
•不影响标志位:Cy、Ac和OV • 影响标志位:P(仅当A为目的操作数时)
3.2.1 数据传送类指令(28条)续
举例: MOV A,70H ;(70H)→A
MOV A,#70H ;70H→A
MOV A,R0 MOV A,@R0
;(R0)→A ;((R0))→A
3.2.1 数据传送类指令(28条)续
累加器A与外部数据存储器传送指令(4条) ;((DPTR))→A,读外RAM/IO MOVX A,@DPTR ;((Ri))→A,读外RAM/IO MOVX A,@Ri
MOVX @DPTR,A MOVX @Ri,A ;(A)→((DPTR)),写外RAM/IO ;(A)→((Ri)),写外RAM/IO
ACALL addrll ;短调用指令
2KB范围内的调用子程序的指令。
•与AJMP指令相类似,是为了与MCS-48中的CALL 指令兼容而设的。
第3章 8086(8088)CPU指令系统

20H 00H
00H 34H 12H
3000H:0000H
注: ◆基址因子BP访问默认为堆栈段 ◆不能同时取两个基址因子;也不 能同时去两个变址因子
16
+
3000H:3000H
AH
AL
第3章 8086/8088CPU指令系统
4.1.4 操作数寻址方式
●存储器寻址之相对基址加变址寻址(Base
9
第3章 8086/8088CPU指令系统
3.1.3 操作数寻址方式
4.1操作数寻址方式
所谓操作数的寻址方式,是在指令格式中怎样有效的表示出操 作数的存放位臵,CPU在执行该指令时,按照指令格式中的表示找 到并对数据进行存取。 1.立即寻址(Immediate Addressing) 立即寻址中的操作数作为指令的一 部分存放在代码段中,在取指阶段数据 随指令一起被取到CPU,这种数据在指 令格式中的直接表现为常数。 如:MOV AL,34H
2
第3章 8086/8088CPU指令系统
汇编语言指令或符号指令:用字母和其它一些符 号组成的“助记符”与操作数等表示的指令称为汇编 语言指令或符号指令。 例如: MOV AX, BX ; AX←BX 而其二进制代码(机器代码)为89D8H,就是 1000 1001 1101 1000 B 不易理解,不易记忆。助记符是MOV。
操作码
操作数
4
第3章 8086/8088CPU指令系统
3.1.1 8086/8088指令格式
4.1操作数寻址方式
8086/8088机器指令格式通常1-6个字节组成。典型的指令格式 由2个字节组成,如下图所示。
操作码 D W MOD REG R/M
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【例3-2】指令中所给的地址码EA为“2001H”,按照 存储器直接寻址方式读取操作数。主存中部分地址 与相应单元存储的操作数之间的对应关系如下: • 地址 存储内容 • 2000H 3BA0H • 2001H 1200H • 2002H 2A01H • 解:因为存储器直接寻址方式中,指令中的有效地 址即主存中存储操作数的地址,所以地址为 “2001H”的存储单元中的内容“1200H”即操作数。 M • 本例实现了:操作数地址 操作。
基址:指令提供位移量(不变) 较短,R提供基准量(可变); 用于扩大有限字长指令的访 存空间。
39
● 基址加变址
指令给出两个寄存器号和一个地址量,寄存器内 容与地址量之和为有效地址。
格式
操作码θ
RX
Rb
D
位移量
变址寄存器号 基址寄存器号
S =((RX)+(Rb)+ D)
便于处理两维数组。
40
● 相对寻址
(5) 在某个I/O接口R中(非CPU中的R)
22
执行一条指令所进行的步骤: ① 取指令 ② 取源操作数 ③ 取目的操作数 ④ 执行运算操作 ⑤ 存放结果
23
1、立即寻址
指令直接给出操作数。
定长格式:操作码θ 立即数S 变长格式:基本指令 立即数S
操作数在指令 中,其长度固 定、有限。
操作数在基本指令之 后,其长度可变。
S =((RX)+ D)
修改量(可变) 基准地址(不变)
35
例. 用变址方式访问一组连续区间内的数组元素。 D为存储区首址;(RX)为所 访单元距离首址的长度; RX初值为0,每访问一个单 元,(RX)+1。 D=首址 D+1 D+2 D+n-1 ... ...
0 1 2 n-1
为了能覆盖全部存储区间,形式地址D的必须 足够长。但由于D的位数有限,会使访存空间受 到限制。
立即寻址主要用来提供常数、设置初值等。
24
2 、直接寻址
指令直接给出操 作数地址。
存储单元号(数在M中) 寄存器号 (数在R中)
● 存储器直接寻址 (直接寻址)
定长格式 操作码θ 有效地址D 变长格式 基本指令 DL DH D的位数可覆盖 整个存储空间 D的位数有限, 访存范围受限
操作数S =(D)
28
● 寄存器间址
格式 操作码θ 寄存器号R
地址指针 M
S =((R))
R=02 0040 0040
... ... S ...
R所占位数少;R可提供全字长地址码;
修改R内容比修改M内容快。
书P64, 例3-5结合讲
寄存器号 R 操作数地址
M
操作数
29
特点:
① 指针不变(由指令指定),指针内容可变,使同一 指令可指向不同存储单元,以实现程序的循环、共 享,并提供转移地址。 ② 比存储器间址方式少访问一次主存储器.速度快.
32
主存
00000H 堆栈的一端是固定的,称为 栈底。栈底是堆栈存储区的最大 地址单元(自底向上生长)。 栈顶
...
另一端是浮动的,称为栈顶。 栈底 在任何时刻,栈顶是最后存入信 息的存储单元。栈顶随着堆栈中 存放信息的多少而改变。
已 存 放 堆栈 数 据
为了指示当前堆栈中存放数据位置,通常设置一 个寄存器来指示栈顶位置。其内容就象一个指针一 样,因此被称为堆栈指针SP(Stack Pointer)。 SP的内容始终指向栈顶单元 堆栈中数据进/出都由SP来控制
36
...
● 基址寻址 指令给出一个寄存器号和一个地址量,寄存 器内容与地址量之和为有效地址。
格式 操作码θ Rb D
Rb
基址寄存器号 位移量 M
S =((Rb)+ D)
基准地址 相对于基址的位移 (可变) (不变)
4K
... …...
(D的位数只需覆盖一 个较小的存储区间)
改变Rb的内容,程序能访问存储 空间中任何一个定长区间(如指令中 位移量D的位数为12位,可访4K)。
注意: ●二地址结构指令 1) 这里1----代表1条指 令的字节数 θ D1 D2 格式: 2) 后继指令地址是隐 源/目的 目的/源 含地址, PC内容增量 (D1)θ (D2) D2/D1 计数也是隐含约定的
功能: (PC) + 1
PC
11
●一地址结构指令 格式: θ D1
2---1/2
隐含约定
2
3.1 指令格式与指令系统设计
3.1.1 指令格式 一条指令一般应包含以下信息:
1、操作码:指示操作的类型,即要求计算机执行的操作, 如加、减、乘、除等。 2、操作数或操作数地址:指令中应给出参与运算的数 据或指出这些数据的存放位置。
3、存放结果的地址:运算完成后所得结果的存放位置。
3
4、后续指令地址:在一个由指令序列构 成的程序中,执行完一条指令后,需要指出 下一条要执行指令的存放位置。 在一条指令中应包含一个操作码和一个或 多个地址码。
显地址方式 : 指令中明显指明地址。
隐地址方式 : 地址隐含约定,不出现在指令中。
9
使用隐地址可以减少指令中的地址数,简化 注释: 寄存器级的 地址结构。 (2) 地址结构的简化 ● 四地址结构指令 格式: θ D1 D2
操作数 地址
D3
传送形式表示 (D1)表示按D1地址 所读取的内容(即操 作数)
③ 指令中寄存器号位数比主存地址码位数少. 两种变形: • 自增型寄存器间址
• 自减型寄存器间址
30
1) 自增型寄存器间址
R M R
寄存器号
操作数地址
操作数
内容加1
2) 自减型寄存器间址
寄存器号
R
R内容先减1, 减后的结果为 操作数地址
M
操作数
31
● 堆栈寻址 堆栈的基本概念
堆栈是一种特殊的存储器,访问堆栈必须按 照指定的规则进行操作。 用途:主要用于暂存数据以及在过程调用或处 理中断时保存断点信息。 堆栈一般分为:专用堆栈存储器 和 软件堆栈 按堆栈的工作方式专门设计的存储器 专用堆栈存储器: 软件堆栈: 由程序设计人员用软件在主存储器中划出的 一块存储区作为堆栈来使用。
Z
1110 X 1111 0000
... ... ...
1111 1110 Y 1111 1111 0000
...
1111 1111 1110 Z 1111 1111 1111 0000
...
... ...
...
Z Z
...
Z Z
...
一地址指令
零地址指令
15条
16条
7
1111 1111 1111 1111
(2)扩展操作码
各指令θ 的位置、位数不固定,根据需要变化。
关键在设置扩展标志。
6
例. 指令字长16位,可含有3、2、1或0个地址, 每个地址占4位。(书P45 例2-35)
操作码
15~ 12 11~ 8
地址码
0000
... ... ...
X
7~ 4
Y
Y Y
3~ 0
操作码扩展标志 (可以有多种分配方案) 三地址指令 二地址指令 15条 15条
33
...
堆栈中存取数据的规则是:“先进后出FILO” (First-In-Last-Out)。即最先送入堆栈的数据要到 最后才能取出,而最后送入堆栈的数据,最先取出。
堆栈寻址格式: 操作码θ 堆栈指针SP SP 0070
栈顶
M
S ...
... ...
S =((SP))
SP自动减1,再存数。-(SP),自减型间址。 压栈: 先取数,SP再自动加1。 (SP)+,自增型间址。 出栈: SP既可出现在指令中,也可隐含约定。
34
若把SP寄存器改为其它寄存器,则就是自减型寄 存器间址,-(R); 自增型寄存器间址 (R)+ 。
(图示: P64 图3-11)
(4)变址、基址寻址及其变化 (书P64)
● 变址寻址 指令给出一个寄存器号和一个地址量,寄存 器内容与地址量之和为有效地址。
格式 操作码θ RX D
形式地址
变址寄存器号
26
● 寄存器直接寻址 (寄存器寻址 书P62)
格式 操作码θ 寄存器号R • R号的字段所占 位数少; • 访问R比访问M快
S =(R )
用于访问固定的存储单元或寄存器。 R 例3-3 实现了: 寄存器号 操作数
3 、间接寻址
指令给出操作数的间接地址。
存储单元号 (数在
功能: 双操作数:(D1)θ (A) A (PC) + 1 PC 单操作数: θ (D1) D1 (PC) + 1 PC
比如: 有些机型CPU中设置累加 器AC, 其中一个操作数(目 的操作数)由AC提供, 运算 结果也存于AC中.
12
●零地址结构指令 格式: θ
功能:① 无需操作数,如:NOP, HALT等
27
● 存储器间址
格式 操作码θ 间接地址D
间址单元 地址指针 M
D=0030
0060
... 0060 S
S =((D)) 书P63, 例3-4
间址单元地址
M
操作数地址
M
操作数
特点: ① 间址单元内容的修改可以使同一 条指令指向不同存储单元中的操作数,实现 程序的循环和程序的共享. ② 增加访问次数,减慢速度.
寻址方式是指寻找操作数或操作数 地址的方式。
18
3.2.1 指令的寻址方式
1、顺序寻址方式 通常采用一地址计数器如PC(PC=PC+1)完成。
计算机的工作过程是:取指令—分析(解释)---执行。