第3章 指令系统
第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章 指令系统(1)
;R6=10101011B,R5=01010100B,Cy=0
思考题:如何将寄存器R6R5中的双字节数X右移一位。
二、双操作数逻辑运算指令(对位逻辑运算): ANL、ORL、XRL
例:A=01××××××B,×表示随机状态,为1或0,
下述一组指令执行后,A的值如何? XRL A,#0C0H ORL A,#03H ANL A,#0E7H ;将累加器A的内容D7、D6取反 ;将累加器A的内容D1、D0置1 ;将累加器A的内容D4、D3清0
2013-12-11
14
3.判位转移指令:
JB bit,rel ;(bit)=1转移,否则不转移
JNB bit,rel
;(bit)=0转移,否则不转移 ;(bit)=1转移,且(bit)=0, 否则不转移
4. 判位清0转移指令:
JBC bit,rel
5. 比较不相等转移指令:
CJNE
CJNE
操作数1,操作数2,rel
LJMP
之和所指向的64KB程序范围内跳转
2013-12-11
8
1. 长转移指令: LJMP addr16(d2d1)
指令机器码: 02 d2 d1 指令转移范围:64KB
;PCd2d1
2. 绝对转移指令: AJMP addr11 (2个字节)
;PCPC+2 ;PC10~0addr11 PC15~11不变
三、子程序返回指令: RET
;PC15~8(SP),SPSP-1, PC7~0 (SP),SPSP-1
指令机器码:22H RET指令从堆栈弹出保存的PC地址,实现子程序返回。
2013-12-11
18
例:子程序嵌套:
MAIN:MOV SP,#30H … LCALL SUB … SUB: … … RET ;设置栈底 ;调用子程序 ;子程序段
第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. 要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式?
第三章指令系统总结及课后题
(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,
(40H)
=40H,(48H)=38H
精选2021版课件
5
7、8951片内高128字节的地址寻址要注意什么/? 答: 用直接寻址,位寻址,寄存器寻址
8、指出些列指令的本质?
MOV MOV MOV MOV
A,DATA ;
寄存器寻址 工作寄存器R0-R7、A、B、C、DPTR
寄存器间接寻 址
片内RAM低128B、片外RAM
变址寻址
程序存储器(@A+PC,@A+DPTR)
相对寻址
程序存储器256B范围(PC+偏移量)
位寻址
片内RAM的20H-2FH字节地址、部分SFR
精选2021版课件
3
寻址方式中常用的符号注释
Rn(n=0~7):当前选中的工作寄存器组R0~R7。 Ri(I=0,1):作为地址指针的两个工作寄存器R0,R1。 #data:8位立即数。 #data16:16位立即数。 direct:8位片内RAM单元(包括SFR)的直接地址。 addr11:11位目的地址,用于ACALL和AJMP指令中。 addr16:16位目的地址。用于LCALL和LJMP指令中。 rel:补码表示的8位地址偏移量。范围:-128~+127D。 bit:片内RAM或SFR的直接寻址位地址。 @:间接寄存器的符号。 /:位操作指令中对该位先取反再参与操作,不影响原值。 (×):×中的内容。 ((×)):×指出的地址单元中的内容。 →:指令操作流程方向。
高级语言:独立于机器的,在编程时不需要对机 器结构及其指令系统有深入了解的通用性语言
精选2021版课件
2
第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章MCS1的指令系统
7.位寻址
3.4
MCS-51指令系统分类介绍
MCS-51 的指令系统,共有 111 条指令,按功能分类, 可分为下面5大类: (1)数据传送类(28条) (2)算术操作类(24条 (3)逻辑运算类(25条)
(4)控制转移类(17条)
(5)位操作类(17条)
26
3.4
MCS-51指令系统分类介绍
程序存储器 DPTR
2000H A
2010H 64H 64H(10H) 10H
2000H
变址寻址示意图
18
5.基址寄存器加变址寄存器间址寻址方式(变址寻址) 说明: (1)本寻址方式是专门针对程序存储器的寻址方式,寻址范围 可达到64KB。 (2)本寻址方式的指令只有3条: MOVC A,@A+DPTR
8
3.3
1.寄存器寻址方式
指令系统的寻址方式
以通用寄存器的内容为操作数的寻址方式。 通用寄存器指A、B 、DPTR以及R0~R7 。 寄存器寻址就是从寄存器中读取操作数或存放操作数进寄存
器。
MOV A,Rn ;(Rn)→A,n=0~7 表示把寄存器Rn的内容传送给累加器A 寻址范围: (1)4组通用工作寄存区共32个工作寄存器。 (2)部分特殊功能寄存器,例如A、B 以及数据指针寄存器 DPTR等。
在相对寻址的转移指令中,给出了地址偏移量,以“rel” 表示,即把 PC 的当前值加上偏移量就构成了程序转移的目的
地址:
目的地址=转移指令所在的地址 + 转移指令的字节数 + rel 偏移量rel是一带符号的8位二进制数补码数。 范围是:–128 - +127 向地址增加方向最大可转移(127+转移指令字节)个单元
第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
第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章单片机指令系统
寄存器寻址 寻址方式 寄存器间接寻址
基址加变址寄存器间接寻址 相对寻址 位寻址
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 指令系统
MOVC MOVC
A,@A+DPTR A,@A+PC
;A ←((A)+(DPTR)) ;A←((A)+(PC))
说明:两条指令同常用于查找程序中的数据表格 四.堆栈操作指令 堆栈是建立在内部 RAM 中,通过堆栈指示器 SP 进行 读写操作。指令格式为:
PUSH direct ;SP←(SP)+1, (SP)←(direct) POP direct ;direct←((SP)), (SP)←(SP)-1
北京交通大学 21
练习:指出下列指令中操作数的寻址方式。
(1)MOV A,#20H (2)MOV P0,@R0 (3)ADD A,40H
立即 寄存器 寄存器间接 直接寻址 直接 寄存器
;A ;P0
20H ((R0)) (A)+(40H)
;A ;P1
(4)MOV P1,#0FFH
立即
FFH
((A)+(PC))
北京交通大学 29
说明: MOVC A,@A+DPTR寻址范围64K
MOVC A,@A+PC寻址范围256B, 以PC+1为基址,从PC+1H到PC+100H
例:从1000H单元存放0—9平方值
MOV DPTR,#1000H MOV A,#09H MOVC A,@A+DPTR
若MOVC指令地址PC为0FF0H, 偏移量=1000H-(0FF0H+1)=0FH MOV A,#09H ADD A,#0FH MOVC A,@A+PC
操作数低八位00H
7
北京交通大学
二、指令分类
数据传送类指令; 算术运算类指令; 逻辑运算类指令; 控制转移类指令; 位操作指令 在上述111条指令中,64条指令执行时间为一个机器周 期,45条指令执行时间为两个机器周期,只有乘、除法指 令执行时间为四个机器周期。当主频为12MHz时,典型指令 执行时间为1us
第三章MCS51的指令系统
3.4.1 MCS-51数据传送指令
[1]. 以累加器A为目的操作数类指令(4条) 这4条指令的作用是把源操作数指向的内容送到累加器A。有直接、
立即数、寄存器和寄存器间接寻址方式:
MOV A,direct
(direct)→(A)直接单元30H
MOV A,0A2H
§3.1 概述
7种寻址方式,111条指令
指令所占用空 间(字节数)
指令执行周期 (运算速度)
单字节指令:49条 双字节指令:45条 三字节指令:17条
单周期指令:64条 双周期指令:45条 四周期指令:2 条
试问
1 如果一条指令执行时间为3个机器周 期,那么需要经历多少个时钟周期?
2 如果一条指令执行时使用了2us,而 晶振使用的是12MHz,请问执行这条指 令需要多少个机器周期?
(A)+((Ri))+(C)→(A) 累加器A中的内容与工作寄存 器Ri指向地址单元中的内容、连同进位位相加,结果存在A中
3.4.2 MCS-51算术运算指令
[3]. 带借位减法指令(4条)
这组指令包含立即数、直接地址、间接地址及工作寄存器与累加器A连同借位 位C内容相减,结果送回累加器A中。
3.4.1 MCS-51数据传送指令
[2]. 以寄存器Rn为目的操作数的指令(3条)
这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器 Rn中。有直接、立即和寄存器寻址方式:
MOV Rn, direct (data)→(Rn) 直接寻址单元中的内容送到寄存器Rn中 MOV R4,37H
**补充知识
MCS51系列单片机为复杂指令单片机CISC。目前单片机大 量使用的是精简指令集RISC结构单片机.
03.8 第三章 - 单片机指令系统(逻辑运算指令ANL、ORL、XRL、CPL、RL、RR、RRC、RLC)
0000 1001
0
9
09:42
单片机技术
6
3.8.1 逻辑“与”运算指令(ANL)
❖ 练习 ▪ 已知(A)=6EH,(R0)=9BH,执行ANL A,R0后 ?
0110 1110
∩ 1001 1010
0000 1010
0
A
09:42
单片机技术
7
3.8.1 逻辑“与”运算指令(ANL)
第三章:单片机指令系统
3.8 逻辑运算类指令
09:42
单片机技术
1
第三章:MSC-51 单片机指令系统
3.8 - 逻辑运算类指令
☺ 3.8.1 逻辑“与”运算指令 ☺ 3.8.2 逻辑“或”运算指令 ☺ 3.8.3 逻辑“异或”运算指令 ☺ 3.8.4 累加器A清0和取反 ☺ 3.8.5 “左移”循环指令(RL RLC) ☺ 3.8.6 “右移”循环指令(RR RRC)
∪ 1000 1001
1101 1111
D
F
09:42
单片机技术
12
3.8.2 逻辑“或”运算指令(ORL)
❖ 2.高考考点(ORL)
▪ 规则:有1出1,全0出0(按位) ▪ 功能:置1操作 ▪ 方法:某一位要置1则该位写1,其余不变位写0
09:42
单片机技术
13
3.8.2 逻辑“或”运算指令(ORL)
09:42
单片机技术
10
3.8.2 逻辑“或”运算指令(ORL)
❖ 1.“或” 逻辑指令(ORL)
▪ 指令格式:
ORL A ,
#data ;A ←(A)∪ data ,立即寻址 direct ;A ←(A)∪ direct ,直接寻址 Rn ;A ←(A)∪ (Rn) ,寄存器寻址 @Ri ;A ←(A)∪ (@Ri),寄间寻址
第三章MCS-51指令系统
3.1 概述
3.2
3.3
寻址方式
MCS-51的指令系统
3.4
伪指令
3.1
概述
指令:使计算机完成某种操作的命令。 指令系统 :计算机能够执行的全部操作所对应的指 令集合。 机器语言: 采用二进制编码表示指令,是计算机能够直 接识别和执行的语言。 汇编语言: 采用助记符 、符号、数字来表示指令的程序 语言,它与机器语言指令时一一对应的。
如果我们分别向DPH,DPL送数,则结果也一样。
如下面两条指令: 则就相当于执行了 MOV DPH,#35H MOV DPTR,#3512H。 MOV DPL,#12H。
(6) 累加器A与片外RAM之间的数据传递类指令(4条)
MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A 说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所 有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外 部RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接 进行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送 入另一个单元(设为0200H单元),也必须先将0100H单元中的内 容读入A,然后再送到0200H单元中去。
MOV B,R0
PUSH ACC
;R0→B,R0为寄存器寻 址,B为直接寻址。
;A的内容压入堆栈
3.2.4
寄存器间接寻址
例:MOV A, @R0
• 以寄存器中内容为地址,以该地址中内容为操作数的
寻址方式。间接寻址的存储器空间包括内部RAM和
外部RAM。 • 能用于寄存器间接寻址的寄存器有R0,R1,DPTR, SP。其中R0、R1必须是工作寄存器组中的寄存器。 SP仅用于堆栈操作。
03.10 第三章 - 单片机指令系统(条件转移类指令LJMP、AJMP、SJMP、JMP、JZ、DJNZ、CJNE、RET、RETI)
09:42
单片机技术
12
第三章:MSC-51 单片机指令系统
3.10.2 - 条件转移类指令
❖ 理解条件的概念 ❖ 掌握JZ、JNZ的特点和用法 ❖ 掌握DJNZ的特点和用法 ❖ 掌握CJNE的特点和用法
09:42
单片机技术
13
3.10.2 条件转移指令(JZ、DJNZ、CJNE)
❖ 1.判A转移指令(JZ、JNZ)
09:42
单片机技术
4
3.10 控制转移类指令 ❖ 控制转移类指令分类
▪ 无条件转移指令: 指执行此类指令,程序将无条件转移到目的地址
包括:LJMP 、AJMP 、SJMP 、JMP
Long(长-64KB)Absolutely(绝对-2KB)Short(短-256B)Jump(跳)
▪ 条件转移指令:
指程序需满足某种条件时,才转移到目的地址,否则顺 序执行下一条指令。
包括:JC、JB、JBC、JZ、DJNZ、CJNE
09:42
单片机技术
5
3.10.1 无条件转移指令(LJMP、AJMP、SJMP、JMP)
❖ 1.长转移指令(LJMP)
▪ 格式:LJMP addr16 ;PC =(PC)+ 3
;PC ← addr15~0 ▪ 范围:216B = 64KB,(0000H~FFFFH)
▪ 格式:JZ rel ;当A = 00H时转向rel,PC' =(PC)+ 2+rel ;否则顺序执行,PC' =(PC)+ 2
▪ 格式:JNZ rel ;当A ≠ 00H时转向rel,PC' =(PC)+2+rel ;否则顺序执行,PC' =(PC)+ 2
第3章 Cortex-M3 指令系统
3.2.1指令和指令格式
2. 指令的表示方法 从形式上看,ARM指令在机器中的表示格式是用32位的二进制数
表示。如ARM中有一条指令为: ADDEQS R0, R1, #8
其二进制代码形式为:
31~28 27~25 24~21 20
0000 001
0100 1
3.1.2 指令周期和时序
举例:以ARM7微处理器为例,所有存储器的传输周期都可以被 归结到以下四种类型之一:
(1)不连续周期:ARM请求传输到某个地址或者从某个地址传输 ,但这个地址跟前一个周期用到的地址没有联系,这种情况所 需的时间称为访问一个非顺序的内存位置的周期,简称为N 周 期。
(2)连续周期:ARM请求传输到某个地址或者从某个地址传输, 此地址或者同上一个周期的地址相同或者是上一个周期的地址 之后一个字。这种情况所需的时间称为访问一个顺序的内存位 置的周期,简称为S 周期。
3.2.3指令的条件执行
• 条件后缀只是影响指令是否执行,不影响指令的内容,如上
述ADDEQ指令,可选后缀EQ并不影响本指令的内容,它执 行时仍然是一条加法指令。
要的指令特征和可选后缀的编码;
第3个域是地址基址Rn,是4位[19:16],为R0~R15共16个寄存器 编码;
第4个域是目标或源寄存器Rd,是4位[15:12],为R0~R15共16个 寄存器编 码;
第5个域是地址偏移或操作寄存器、操作数区[11:0]。
3.2.1指令和指令格式
• 3. 汇编指令格式
3.2.3指令的条件执行
程序要执行的指令,均保存在存储器中,当计算机需要执行 一条指令时,首先产生这条指令的地址,并根据地址号打开 相应的存储单元,取出指令代码,CPU根据指令代码的要求 以及指令中的操作数,去执行相应的操作。
第3章 指令系统
(2) 32位寻址:任何一个32位通用寄存器可作为基址寄存器 ;除ESP之外的任一个32位通用寄存器可作为变址寄存器。 如:MOV AX,[EBX+ECX] ; 或 MOV AX,[EBX][ECX] ; DS段的字数据送AX。
17
7、带位移的基址加变址寻址:基址寄存器内容与变址 寄存器内容再加偏移量之和形成操作数的EA。即: EA=[基址寄存器]+[变址寄存器]+偏移量
:通用寄存器。长度可以是8位、16位、32位。 如reg8表示8位通用寄存器,reg16表示16位通用寄存 器。
Sreg mem imm
:段寄存器(段选择符)。
:存储器。长度可以是8位、16位、32位。如 mem8表示8位存储器。 :立即数。长度可以是8位、16位、32位。 AL,AX或EAX) 。
操作符:指令的操作符,指示CPU完成某种操作,不 可省略。 操作数:指令执行时的操作对象,可以是数据或地址 表达式。 注释:程序注解。 **方括号表示其中的内容为可选项。
START:MOV AX,DATA MOV DS,AX
;设置DS
4
数据类型
80X86主要包括以下六种数据类型: 1、无符号二进制数:
有符号二进制数以补码形式存储,地址单元分配与 无符号数类似。
3、浮点数(实数)
(从略)
6
4、BCD码 1)压缩(组合)BCD码:1字节存放两个BCD码,如图 a。 2)非压缩BCD码:1字节存放一个BCD码(低4位) ,如图b。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(5)相对基址变址寻址方式
相对基址变址寻址方式是指指令所需操作数存放在存储器单元中,指 令中给定的一个基址寄存器名(BX或BP)、一个变址寄存器名(SI或DI) 和一个8位或16位的相对位移量,三者内容之和为操作数的地址偏移量。 若基址寄存器使用BP,默认段为SS,若基址寄存器使用BX,默认段为DS 。 操作数格式:位移量[BX|BP][SI|DI]
②出栈指令POP
格式:POP 目的操作数 功能:将栈顶单元的内容弹出(复制)到目的地址中,然后修改堆栈指针SP。 具体操作过程:先将当前SP所指单元的内容弹出到目的地址的低字节,然后将SP的内 容加1,再将当前SP所指单元的内容弹出到目的地址的高字节,然后再将SP的内容加1。 说明:目的操作数除CS以外的段寄存器操作数或字类型的存储器操作数,其长度必须 是16位。
可以实现寄存器之间、寄存器与存储单元之间的数据传送,以及立即
数到寄存器或存储单元的传送。 对标志位的影响:无
(2)堆栈操作指令
堆栈是在存储器中开辟的一个特殊区域,它遵循“后进先出”的存 取原则。堆栈操作只能在栈顶进行,堆栈的操作有进栈和出栈两种。从
8086堆栈的组织形式来看,堆栈是从高地址向低地址方向生长的。最初
的物理地址,物理地址是由段基址和偏移量组成的,操作数物理地址计 算方法:
物理地址=16×段基址+偏移量
其中段基址取自段寄存器,所以指令只需提供计算偏移量所需要的 信息就可以了。在80x86中,根据对存储器单元地址偏移量的不同计算
方法,可以分为5种不同的存储器寻址方式。
需要指出的是,在80x86中,为了限制指令的长度,在同一条指令 中,不允许两个操作数同时采用存储器寻址方式。
为指令的一部分存放在代码段中。取出指令的同时也就取出了可以立即 使用的操作数,这样的操作数称为立即数。立即数可以是8位或16位数
,若是16位操作数,则低位字节存放在低地址单元中,高位字节存放在
高地址单元中。 立即寻址方式能够快速获得操作数,但适用范围有限,通常用于给寄
存器或存储器赋初值。立即寻址方式只能用于源操作数,不能用于目的
在上例中,第一条指令的源操作数和第二条指令的目的操作数采用 了相对基址变址寻址方式。
3.2 8086/8088指令系统
8086/8088指令系统中的指令按照功能可以分为六类:数据传送
指令、算术运算指令、逻辑运算指令、串操作指令、处理器控制指令
和控制转移指令。本节介绍数据传送指令、算术运算指令、逻辑运算 指令和处理器控制指令,串操作指令和控制转移指令将在第五章的相
例如:
MOV CX,1234H; 将16位立即数1234H存入寄存器CX MOV BL,AL; 将寄存器AL的内容存入寄存器BL
MOV
DS,BX;
将通用寄存器BX的内容存入段寄存器DS
3.1.5存储器寻址方式
顾名思义,存储器寻址方式就是操作数在存储器单元中。如果存储
器单元作为操作数,CPU必须通过指令提供的信息计算出该存储器单元
; 设BP内容为1000H,将DS段偏移1000H的字单元的内容存入AX
(3)寄存器相对寻址方式
寄存器相对寻址方式是指指令所需操作数存放在存储器单元中,指令中给定的一个基 址寄存器或变址寄存器名(BX、BP、SI和DI)和一个8位或16位的相对位移量,两者之 和为操作数的地址偏移量。若使用BP,默认段为SS,若使用其它寄存器,默认段为DS 。 操作数格式:位移量[BX|BP|SI|DI] 寄存器相对寻址方式如图3-7所示。
; 将AX内容存入ES中偏移100H的字单元
(2)寄存器间接寻址方式
寄存器间接寻址方式是指指令所需操作数存放在存储器单元中,其地址 偏移量由基址寄存器BX、BP或变址寄存器SI、DI给出。若使用BP,默认 段为SS,若使用BX、SI和DI寄存器,默认段为DS。
操作数格式:[BX|BP|SI|DI] 寄存器间接寻址方式如图3-6所示。
3.1.2 寻址技术
指令中的操作数字段可能直接给出操作数,也可能给出操作数的存放地
址,操作数可能存放在寄存器或存储器中。若指令中给出的是操作数的存
放地址,则在执行指令时就要根据指令中给出的地址信息来寻找操作数, 这个过程叫做寻址,寻找操作数的各种方式统称为寻址方式。
3.1.3立即寻址
立即寻址方式是指操作数直接包含在指令中,紧跟在操作码之后,作
图3-5 直接寻址方式
例如:
MOV
BL,[100H]
; 将当前数据段偏移量为100H的字节单元内容存入BL MOV AX, DA_WORD ; 将DA_WORD指向的字单元内容存入AX MOV DA_BYTE,0FFH
; 将立即数0FFH存入DA_BYTE指向的字节单元 MOV ES:[100H] ,AX
例如: MOV AL, -20H[BX][DI] ; 设BX的内容为100H,DI的内容为20H,则源操作数偏移量为 100H,将DS段偏移量为100H的字节单元内容存入AL
MOV 100H[BP][SI],AX ; 设BP的内容为1000H,DI的内容为200H,则目的操作数的偏移量
为1300H,将AX的内容存入SS段偏移量1300H的字单元
堆栈的栈顶和栈底是重叠的,随着堆栈操作的进行,栈底的位置保持不 变,而栈顶的位置却在不断地变化。进栈时栈顶向低地址方向变化,出
栈时栈顶向高地址方向变化。
①进栈指令PUSH
格式:PUSH 源操作数
功能:修改堆栈指针SP,然后将源操作数压入栈顶单元。 具体操作过程:先将SP的内容减1,然后将源操作数的高字节存入当前 SP所指单元,再将SP的内容减1,然后将源操作数的低字节存入当前SP所 指单元。 说明:源操作数可以是寄存器操作数、段寄存器操作数或存储器操作数 。其长度必须是16位。 对标志位的影响:无
3.1.5存储器寻址方式
(1)直接寻址方式 直接寻址方式是指指令所需操作数存放在存储器单元中,其地址偏移 量由指令代码中的位移量直接给出。位移量可用常数表示,也可用变量 名表示。操作数如果在数据段中,则指令中不必给出段寄存器名(即默
认使用DS);否则,必须使用段超越前缀来说明使用其他段中的数据。
操作数格式:[常数]|变量名。直接寻址方式如图3-5所示。
示机器指令,容易阅读和使用,但在执行之前,必须先翻译成等价的机
器指令。若无特殊说明,本书此后所论及的指令均指汇编指令。
3.1.1 机器指令格式
计算机指令通常由操作码字段和操作数字段(操作码)两部分组成。 指令的基本格式如图3-1所示。
操作码 操作数
图3-1 指令的基本格式
1.操作码字段
操作码字段指示计算机所要执行的操作类型。如加、减、乘、除、 数据传送等。一台计算机可能有几十条至几百条指令,每条指令都有一
3.1.1 机器指令格式
(3)零操作数指令
这类指令中只有操作码字段,没有操作数字段。其格式如图3-4所示 。操作码ຫໍສະໝຸດ 图3-4 零操作数指令格式
这类指令有两种情况,一是不需要操作数,例如停机指令HLT;二是
所需的操作数是隐含指出的,即操作数存放在固定位置,无需指令给出 。
例如:
HLT ; 停机指令,不需要操作数 CBW ; 符号扩展指令,隐含的操作数在AL和AX中
操作码 目的操作数 , 源操作数
图3-2 双操作数指令格式
3.1.1 机器指令格式
(2)单操作数指令
单操作数指令中的操作数字段只提供一个操作数。其格式如图3-3所 示。
操作码 图3-3 单操作数指令格式 操作数
这类指令有两种情况,一是只需要一个操作数,例如加1指令INC 、减1指令DEC等;二是指令中只给出一个操作数,另一个操作数是隐含 指出的,即操作数存放在固定位置,无需指令给出,例如进栈指令 PUSH、出栈指令POP等。
图3-7 寄存器相对寻址方式
例如: MOV AL,ES:VAR[SI]
;设SI的内容为100H,VAR所指存储单元的偏移量为200H,则 源操作数偏移量为
300H,将ES段偏移量为300H的字节单元内容存入AL MOV 10H[BX],1234H
;设BX的内容为100H,则目的操作数偏移量为110H,将1234H存入DS段偏移量为 110H的字单元 在上例中,第一条指令的源操作数和第二条指令的目的操作数采用了寄存器相对寻 址方式。
图3-6 寄存器间接寻址方式
例如:
MOV ; MOV [BX],1234H 设BX内容为100H,将1234H存入DS段偏移100H的字单元 [BP],BL
; 设BP内容为100H,将BL的内容存入SS段偏移100H的字节单元
MOV
AL,[SI]
; 设SI内容为100H,将DS段偏移100H的字节单元的内容存入AL MOV AX,DS:[BP]
在上例中,各指令的源操作数均采用了立即寻址方式。
3.1.4寄存器寻址
寄存器寻址方式是指操作数存放在寄存器中,指令中直接给出寄 存器名,通过寄存器名找到操作数。对于16位操作数,寄存器可 以是AX、BX、CX、DX、SI、DI、SP、BP等,对于8位操作数, 寄存器可以是AH、AL、BH、BL、CH、CL、DH、DL等。寄存器 寻址方式既可以用于源操作数,也可以用于目的操作数。
图3-8所示
例如:
MOV
AX,ES:[BX][SI]
;设BX的内容为100H,SI的内容为20H,则源操作数偏移量为 120H,将ES段偏移120H的字单元内容存入AX
MOV
[BP][DI],AL
;设BP的内容为1000H,DI的内容为50H,则目的操作数的偏移 量为1050H,将AL的内容存入DS段偏移量为1050H的字节单元 在上例中,第一条指令的源操作数和第二条指令的目的操作数采用 了基址变址寻址方式寻址方式。
高等院校信息技术规划教材
高级汇编语言程序设计 实用教程(第2版)