第3章 指令系统

合集下载

第三章 指令系统--指令

第三章 指令系统--指令

寻址方式指令系统
数据传送指令算术运算指令逻辑运算指令串操作指令
控制转移指令处理器控制指令
通用传送指令
累加器专用传送指令
地址传送指令
标志传送指令
对标志位的影响: 除SAHF和POPF指令外,其余的所有数据传送类指令
格式:
功能:
操作数类型:
DS,100H

堆栈:执行
PUSH
POP
SS指向堆栈段的起始位置SP指定栈顶
PUSH AX PUSH DS POP DS POP AX
格式:
oprd1,
立即数、段寄存器和
不影响
通用传送指令
累加器专用传送指令地址传送指令
标志传送指令
LEA (Load Effective Address)
LDS (Load pointer into register and DS) LES (Load pointer into register and ES)
LEA LEA
LEA
数据传送指令算术运算指令逻辑运算指令串操作指令
控制转移指令处理器控制指令
实现二进制
所有算术运算指令均所有算术运算指令均
四则运算是计算机经常进行的一种操作。

请注意算术运算指令对
只有一个操作数:寄存器或存储单元对操作数加
用于计数器和地址指针的调整
不影响进位
对操作数减
用于计数器和地址指针的调整不影响进位。

第三章 指令系统

第三章  指令系统

(1) 三地址双操作
50
指令
数指执令行一条三地址的加法指令需要访问514
下条指令
次主.存。
个 ( 假 单 存A显 设 元 放1号第中地指中在三单)址令,主一取地O,存第存元址次第P指放一的(双中从二令在、1A操2取5操的主第0作第0作含存二0)数一义 的 操号数存指和→为 5 作操令单,的2: 0 数A有作元第303分3号0数中四0别,取次0第指将号三令加单次,法元从第的。2二结1200000次果0从保第第1存一二号操操0到...单作作0主元数数
寄存器/存储器:直接给出寄存器或存储 器的地址码(名称)即可; 注:寄存器(CPU内部或外围设备内部) 及存储器的编址方式: 1)字编址、字节编址、位编址; 2)统一编址、非统一编址
操作数的编码方式
例:设某机主存容量为16MB ,机器 字长16 位,若最小寻址单位为字节 (按字节编址) ,其地址码为多少位? 若最小寻址单位为字(按字编址) ,其 地址码又为多少位?
共需12 条指令,其中7 条一地址的进、出栈指令, 5 条零地址的算术运算指令。进、出栈指令3 次访 存,算逻指令4 次访存,执行此程序共访存7 × 3 + 5 × 4 = 41 次。
例: 某一机器的指令系统,操作码8 位, 地址码均为16 位,CPU 与主存之间每次传 送16 位数据。A 、B 、C 、D 、E 表示字地 址,存放16 位数据。
常用指令寻址方式
顺序寻址方式 跳跃寻址方式:直接、相对、间接
栈及相关概念
1、栈的分类: 用寄存器实现堆栈(串联堆栈) 内存中开辟堆栈区
自底向上生成堆栈 自顶向下生成堆栈 2、栈的建立: 将栈顶地址传送到SP中 3、栈的操作: PUSH/POP、MOV
IA32指令系统

第3章指令系统和寻址方式

第3章指令系统和寻址方式

(6) 基址变址寻址方式 基址变址寻址方式*
(BX) 有效地址 = + (BP) 指令格式: 指令格式: MOV MOV MOV (SI) (DI)
AX, [BX] [DI] AX, [BX+DI] AX, ES:[BX] [SI]
* 适于数组、字符串、表格的处理 适于数组、字符串、 * 必须是一个基址寄存器和一个变址寄存器的组合
• 寄存器操作数
– 寄存器的内容参加运算或存放结果。 寄存器的内容参加运算或存放结果。
• 存储器操作数
– 指内存某地址的字节、字、双字等是指令的处 指内存某地址的字节、 理对象, 理对象,这时必须把处理对象取出或送入相应 地址。 地址。
有效地址和段超越
• 存储单元的物理地址由两部分组成:段 存储单元的物理地址由两部分组成: 寄存器保存的段基值,偏移地址。 寄存器保存的段基值,偏移地址。 • 在8086/8088的各种寻址方式中,寻找存 的各种寻址方式中, 的各种寻址方式中 储单元所需的偏移地址,称为有效地址, 储单元所需的偏移地址,称为有效地址, 用EA表示。 表示。 表示 • 不同的寻址方式,组成有效地址 的各 不同的寻址方式,组成有效地址EA的各 部分内容也不一样,寻址方式主要是EA 部分内容也不一样,寻址方式主要是 如何计算与寻找的问题。 如何计算与寻找的问题。
汇编指令的书写形式
• 格式
[name] operation operand [;comment] – 名字项(name):可以是标号或变量,表示本 名字项( ):可以是标号或变量 ):可以是标号或变量, 语句的符号地址。 语句的符号地址。
• 标号在代码段中定义,后跟冒号。 标号在代码段中定义,后跟冒号。 • 变量在数据段或附加数据段中定义,后面不跟冒号。 变量在数据段或附加数据段中定义,后面不跟冒号 不跟冒号。 • 名字项组成:字母打头的字符串组成。包含字符 名字项组成:字母打头的字符串组成。 (A~Z,0~9,_,?,$,@等),如MainLoop, , , , , , 等),如 , Calc_long_sum。 。 • 单独的$或?有特殊含义,不能做符号名。 单独的 或 有特殊含义,不能做符号名。 有特殊含义 • 保留字不能用在名字项。 保留字不能用在名字项。

第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. 要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式?

MCS-51_第03章 MCS-51的指令系统

MCS-51_第03章 MCS-51的指令系统

内容相互交换。
3.2.3 算术运算类指令
表 3.2 算术运算指令
表 3.2 算术运算指令
表 3.3 影响标志位的指令
表 3 3 影 响 标 志 位 的 指 令
.
一、 加法指令 1. 普通加法指令 ADD A, Rn ADD A, direct ADD A, @Ri ADD A, #data
MOV R0 30H A, @R0 内部RAM
30H
20H
A 20H
5. 基址寄存器加变址寄存器间接寻址 这种寻址方式用于访问程序存储器中的数据表格, 它以 基址寄存器DPTR或PC的内容为基本地址, 加上变址寄存器 A的内容作为操作数的地址, 例如: MOVC A, @DPTR+A JMP @A+DPTR MOVC A, @ PC+A
3.2.2 数据传送类指令
图 3 –1 MCS -51传送指令示意图
表 3.1 数据传送类指令一览表
表 3.1 数据传送类指令一览表
1. 数据传送到累加器A的指令 MOV A, Rn MOV A, direct MOV A, @Ri MOV A, #data 这组指令的功能是:把源操作数的内容送入累加器A。 例如: MOV A, #10H, 该指令执行时将立即数 10H送入累 加器A中。
这组指令的功能是:把源操作数的内容送入内部RAM 单元或特殊功能寄存器。其中第三条指令和最后一条指令 都是三字节指令。第三条指令的功能很强, 能实现内部 RAM之间、特殊功能寄存器之间或特殊功能寄存条指令是将16位的立即
数送入数据指针寄存器DPTR。
4. 累加器A与外部数据存储器之间的传送指令 MOVX A, @DPTR MOVX A, @Ri MOVX @DPTR, A MOVX @Ri, A

第3章.指令系统控制程序转移类指令new下

第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章 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章--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个可用的位地址空间

第三章 MCS--51指令系统

第三章 MCS--51指令系统

(3) 该指令使CY、OV清0。
如除数为0,则A为不定值,OV=1
第五节 逻辑运算指令 一、对A的操作 CLR A;A清0 CPL A;A取反 移位指令 RL A RLC A RR A RRC A
或 MOV R1,#20H MOV @R1, #3AH
MOV DPTR, #3020H
例3 将30H与20H内容互换
MOV A, 30H MOV 30H, 20H MOV 20H, A
(1)MOV 00H,#0FFH 或(1)MOV R0,#00H MOV @R0, #0FFH 或(1)MOV PSW, #00H MOV R0, #0FFH
INC Rn
INC direct INC @Ri
INC DPTR
例17 编程将存放在31H~33H中的数相加,其和放入30H单元 (设和不超过8位)。 MOV R0,#31H MOV A, @R0 INC R0 ADD A, @R0 INC R0 ADD A, @R0 MOV 30H, A MOV R0, #31H MOV R7, #03H MOV A, #00H LOOP:ADD A, @R0 INC R0 DJNZ R7, LOOP MOV 30H, A
第三章MCS-51单片机指令系统
基本要求: 熟记MCS-51的主要指令及简单程序的编程方法。 难点及处理: MCS-51的111条指令比较枯燥 ,需要记忆,可 多读一些例题并动手编一编。
第一节 指令及其表示方式
一、指令的基本概念 指令--让计算机做某操作所发命令
指令系统-- 一台计算机所有指令的集合。 MCS-51单片机共111条指令,分为五大类
四、堆栈操作指令 入栈:PUSH direct 出栈:POP direct

第3章 ARM指令系统

第3章  ARM指令系统

寄存器前索引寻址 (Register post-indexed)
带移位的寄存器前索引寻址 (Scaled register pre-indexed)
格 式
模 式 立即数后索引寻址 (Immediate post-indeded) 寄存器后索引寻址 (Register post-indexed) 带移位的寄存器后索引寻址 (Scaled register post-indexed)
表3-3 杂类Load/Store指令的寻址方式 格 式 模 式 立即数偏移寻址 (Immediate offset) 寄存器偏移寻址 (Register offset) 立即数前索引寻址 (Immediate pre-indexed) 寄存器前索引寻址 (Register post-indexed)
LDMDB
LDMIB STMDA STMIA STMDB STMIB
LDMEA
LDMED STMED STMEA STMFD STMFA
1
1 0 0 0 0
1
1 0 0 1 1
0
1 0 1 0 1
5.协处理器Load/Store寻址方式
协处理器Load/Store指令的语法格式如
下:
<opcode>{<cond>}{L} <coproc>,<CRd>,<addressing_mode>
1.MOV指令
MOV指令是最简单的ARM指令,执行的结 果就是把一个数N送到目标寄存器Rd,其中N可 以是寄存器,也可以是立即数。 MOV指令多用于设置初始值或者在寄存器 间传送数据。 MOV指令将移位码(shifter_operand) 表示的数据传送到目的寄存器Rd,并根据操作 的结果更新CPSR中相应的条件标志位。

第三章MCS51的指令系统

第三章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结构单片机.

第三章MCS-51指令系统

第三章MCS-51指令系统
第三章 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仅用于堆栈操作。

《单片机原理及应用》第3章 指令系统2012-2013

《单片机原理及应用》第3章 指令系统2012-2013

片内RAM单元 地址
R0
65H

② A 47H
将片内RAM 65H单 元内容47H送A
65H ┋
47H
• 5、变址寻址(基址寄存器+变址寄存器间接寻址)
• 变址寻址:以某个寄存器的内容为基地址,在这个基地址的 基础上加上地址偏移量形成真正的操作数地址。
• 89C51中采用DPTR或PC为基址寄存器,A的内容为地址偏
也可以使用它们的名字。
• 例如: • MOV A,3AH;(3AH) →A • MOV A,P1;(P1口) →A • 或: MOV A,90H; 90H是P1口的地址
• 2、寄存器寻址
• 寄存器寻址:由指令指出寄存器组R0~R7中的某一个或其他寄存器 (A,B,DPTR等)的内容作为操作数。 • 其中B寄存器仅在乘法、除法指令中为寄存器寻址,在其它指令中为 直接寻址。 • A寄存器可以寄存器寻址,又可以直接寻址(此时写作ACC)。 • 直接寻址和寄存器寻址的差别在于,直接寻址是给出操作数所在的字
第3章 指令系统
3.1 3.2 3.3 3.4 汇编语言 寻址方式 89C51指令系统 程序设计举例
3.1
汇编语言
• 指令:是CPU根据人的意图来执行某种操作的命令。 • 程序设计语言:是实现人机交换信息的基本工具,分为机 器语言、汇编语言和高级语言。 • 机器语言:用二进制编码表示每条指令,是计算机能直接 识别和执行的语言。 • 汇编语言:是用助记符、符号和数字等来表示指令的程序 设计语言。它与机器语言指令是一一对应的。
(Ri)表示Ri中的内容为指定的RAM单元地址。 MOV指令在片内存储器的操作功能如下图:
@Ri
direct
Rn
#data

第三章基本指令系统

第三章基本指令系统

注:该指令用在多字节加法运算中。
28
例:两个4字节无符号数相加,两数分别在2000H、3000H开 始的内存单元,和放在2000H开始的4个内容单元。
MOV SI, 2000H MOV AX, [SI] MOV DI, 3000H ADD AX, [DI] MOV [SI], AX MOV AX, [SI+2] ADC AX, [DI+2] MOV [SI+2], AX ;SI指向一加数首址 2000H ;AX 8423H ;DI指向另一加数首址 ;AX 8423H+7F00H ;低16位和送[2000H][2001H] ;AX 1000H 3000H ;AX 1000H+2000H+CF ;高16位和送[2002H][2003H]
4)DST、SRC长度要一致。
MOV AL, BX ()
5) DST 不能是立即数 MOV 1000H, AX () 6)DST、SRC 不能同时为存储器寻址 MOV [1000H], [3000H] () 7)MOV指令不破坏源操作数
6
一、通用传送指令——XCHG
2、XCHG 格式:XCHG OPR1, OPR2 ; OPR1 OPR2 功能:两操作数内容相交换。 例: XCHG BL, AL ;两寄存器内容交换(字节交换)
第三章基本指令系统指令系统8086指令系统什么是指令系统cpu指令系统mcs51指令系统指令系统层指令系统的作用微处理器的指令系统指令系统就是指令吗
第三章 8086CPU基本指令系统
3.1 数据传送指令 3.2 算术运算指令
3.3 十进制调整指令
3.4 逻辑运算指令和移位指令 3.5 处理器控制指令
27
一、加法指令——ADC

微机原理与接口技术第三章指令系统

微机原理与接口技术第三章指令系统
子程序名:表示某个存储单元的地址,对应存储单元为子 程序的起始位臵;
标识符的构成
符号集合 英文字母(a~Z)、数字(0~9)、特殊符号(?、@、 _、 $)。 构成规则 不可以以数字开头;
不能实用单独的“?”作为标识符;
取名尽量有含义,但不能采用汇编语言的保留字; 助记符、定义符、寄存器名称等 最大长度为31字符。 例如: ABCDH →标识符 0ABCDH →立即数
MOV AX,05C7H 汇编指令 B8C705H
一对一
机器指令
3.1.2 指令格式 汇编语言指令:由操作码和操作数两部分组成。 操作码 操作数 操作数 指令的一般格式
操作码:指示指令要执行的具体操作。用助记符(一 般为英文字母缩写)表示。 操作数:指出指令执行过程中的操作对象。用符号或 符号地址标志。
(×)MOV CS,AX
(×)MOV AH, BX
AH AL BH BL CH CL DH DL
MOV AX, BX
;AX←BX
演示
寄存器寻址方式举例
MOV BX,1234H ;AX=1234H
源操作数是立即数寻址方式
目的操作数是寄存器寻址方式 MOV AX,BX BX=AX=1234H 源操作数和目的操作数均为寄存器寻址方式
AX 88H 66H … 66H 88H … 堆栈段 33200H 33201H
……
……
MOV BX, 1100H MOV AX, [BX]
码段
AX: 0078H
堆栈段
DS:0000H
…… ……
内存内容 偏移地址
0000H 0001H …… 1100H 1101H 1102H
…… ……
78H 00H 56H

第三章指令系统总结及课后题

第三章指令系统总结及课后题

字 节 地 址
10、如何访问SFR,可采用那些寻址方式? 答:用直接寻址,位寻址,寄存器寻址 11、如何访问片外RAM,可使用那些寻址方式? 答:只能采用寄存器间接寻址(用MOVX指令) 12、如何访问片内RAM,可使用那些寻址方式? 答:低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器 寻址(R0~R7) 高128字节:直接寻址,位寻址,寄存器寻址 13、如何访问片内外程序存储器,可使用那些寻址方式? 答:采用变址寻址(用MOVC指令) 14、说明十进制调整的原因和方法? 答:压缩BCD码在进行加法运算时应逢十进一,而计算机只将 其当作十六进制数处理,此时得到的结果不正确。用DA A指令 调整(加06H,60H,66H) 15、说明8951布尔机处理机功能? 答:用来进行位操作
;被减数的低8位→A ;减数低8位→R2 ;被减数减去减数,差→A ;低8位结果→30H ;被减数的高8位→A ;减数高8位→R2 ;被减数减去减数,差→A ;高8位结果→30H
带借位减法指令(四条)
汇编指令格式 SUBB A, Rn; 机器码格式 1001 1rrr 操作 (A)-CY -(Rn) → A 注释 将工作寄存器内容与CY及 累加器A中的数相减, “差”存放于累加器A中 SUBB A,direct;1001 0101 direct SUBB A,@Ri; 1001 011i (A) -CY -((Ri)) →A (A) -CY -(direct) →A 将内部RAM单元内容与 CY及累加器A中的数相减, “差”存放于累加器A中 将间接寻址(Ri为R0或R1) 所得的片内RAM单元中内 容与CY及累加器A中的数
高128字节RAM区(SFR区,特殊功能寄存器区)
B
F0
ACC

第3章 指令系统

第3章 指令系统
跳转指令的入口处和程序的开始位置通常需要设置标号,当程 序需要转移和调用时,可直接引用此标号,将程序的执行流向 引导到设置的标号处。 标号也有三个属性:段属性、偏移属性和距离属性。 标号以字母开头,由字母、数字、特殊字符(如?,下划线等 )组成的字符串表示。标号不能与保留字相同。保留字包括寄 存器名、指令助记符等。 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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第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(有限冲击响应),数字信号处理中的一种具有线性相位及任意幅度特性的数字滤波器算法。

N 负标志,N=0时表示运算前最高有效位为0,N=1表示最高有效位为1。

(请参考2。

1节)Z 零标志,Z=0表示运算结果不为0,Z=1表示运算结果为0。

S 符号标志,S=0表示结果不为负,S=1表示结果为负数(2的补数),对于有符号运算,16位数表示的范围-32768~32768,若结果小于零,则S=1。

C 进位标志,C=0表示运算过程中无进位或有借位产生,C=1表示有进位或无借位产生。

// 注释符3.2 数据传送指令数据传送指令是把源操作数传送到指令所指定的目标地址。

数据传送操作属复制性质,而不是搬家性质。

指令执行后,源操作数不变,目的操作数为源操作数所代替。

通用格式是:<目的操作数>=<源操作数>源操作数可以是:立即数、寄存器直接寻址、寄存器间接寻址、直接地址寻址、变址寻址等。

目的操作数可以是:寄存器和直接地址寻址。

下面按寻址方式来介绍SPCE061A 的数据传送指令。

各个数据传送指令的执行周期数、指令长度等可参见0。

立即数寻址【影响标志】 N ,Z 【格式】 Rd = IM16//16位的立即数送入目标寄存器RdRd = IM6//6位的立即数扩展成16位后送入目标寄存器Rd 【举例】 设传送前 N=0,Z=1,S=0,C=1 R1=0xF001//R1的值变为0xF001,N=1,Z=0,S=0,C=1寄存器寻址【影响标志】 N ,Z 【格式】 Rd = Rs //将源寄存器Rs 的数据送给目标寄存器Rd 【举例】 设传送前 N=0,Z=1,S=0,C=1 R2=0xF001//R2的值为0xF001,N=1,Z=0,S=0,C=1R1=R2// R1的值变为0xF001,N=1,Z=0,S=0,C=1直接地址寻址 【影响标志】 N ,Z 【格式】 [A6] = Rs //将源寄存器Rs 中的数据送给以A6为地址的存储单元[A16] = Rs //把Rs 数据存储到A16指出的存储单元 Rd = [A6] //把A6指定的存储单元数据读到Rd 寄存器Rd = [A16] //把A16指定的存储单元数据读到Rd 寄存器 【举例】设传送前 N=1,Z=1,S=0,C=1R1=0x0011// R1的值为0x0011,N=0,Z=0,S=0,C=1[0x0010]=R1 //[0x0010]单元的值变为0x0011 变址寻址 【影响标志】 N ,Z【格式】 [BP + IM6] = Rs //把Rs 的值存储到基址指针BP 与6位的立即 //数之和指出的存储单元。

Rd = [BP +IM6]//把基址指针BP 与6位的立即数的和指定的存 //储单元数据读到Rd 寄存器。

【举例】 假设执行前 N=0,Z=1,S=0,C=1R1=0x0010[BP+0x0002]=R1//N=0,Z=0,S=0,C=1寄存器间接寻址 【影响标志】 N ,Z 【格式】[Rd] = Rs//把Rs 的数据存储到Rd 的值所指的存储单元。

//Rd 中存放的是操作数的地址。

【举例】 [++Rd] = Rs //首先把Rd 的值加1,而后Rs 的数据存储到Rd 的 //值所指的存储单元间接寻址的存储单元 Rd = [Rs++] //读取Rs 的值所指的存储单元的值并存入Rd ,而 //后、Rs 的值加1[例3.1]:将R3的值保存于0x25单元R3 = 0x5678 //把16位立即数0x5678赋给R3方法1:[0x25] = R3 //将R3的值存储于0x25存储单元,直接地址寻址方法2: //0x25单元的内容为0x5678R2 = 0x25 //立即数0x25送入R2中[R2] = R3 //将R3的值存储于0x25存储单元,寄存器间接寻址方法3: //0x25单元的内容为0x5678BP = 0x20 //立即数0x20送入BP中;[BP + 5] = R3 //将R3的值存储于0x25存储单元,变址寻址0x25、单元的//内容为0x5678[例3.2]:将0x25,0x26,0x27单元清空方法1:R1 = 0 //影响标志位:Z=1,N=0R2 = 0x25 //立即数0x25送入R2中[R2++] = R1 //R1的值存储于0x25存储单元,R2=R2 +1[R2++] = R1 //R1的值存储于0x26存储单元,R2=R2 +1[R2] = R1 //R1的值存储于0x27存储单元方法2:R1 = 0 //影响标志位:Z=1,N=0R2 =0x27[R2--] = R1 //R1的值存储于0x27存储单元,R2=R2 - 1[R2--] = R1 //R1的值存储于0x26存储单元,R2=R2 - 1[R2] = R1 //R1的值存储于0x25存储单元方法3:R1 = 0 //影响标志位:Z=1,N=0R2 = 0x24 //立即数0x24送入R2中[++R2] = R1 //R2=R2 +1,R2=0x25,而后R1的值存储于0x25存储单元[++R2] = R1 //R2=R2 +1,R2=0x26,而后R1的值存储于0x26存储单元[++R2] = R1 //R2=R2 +1,R2=0x27,而后R1的值存储于0x27存储单元[例3.3]:用不同方式读取存储器的值。

BP = 0x20 //将立即数0x20赋给BP;R1 = [BP + 5] //BP + 5=0x25,读取0x25单元数据到R1中R1 = [0x2345] //读取0x2345单元数据到R1中 R1 = [BP] //读取0x20单元的数据到R1中R1 = [BP++] //读取0x20单元的数据到R1中,修改BP=0x21 R1 = [BP--] //读取0x21单元的数据到R1中,修改BP=0x20 R1 = [++BP]//修改BP =0x21,读取0x21单元的数据数据传送指令一览表语法指令长度(word)影响标志周期数Rd = IM16 26/8 Rd =IM6 3 Rd = [BP +IM6] 8 Rd = [A6] 1 6/8 Rd = [A16] 29/11 Rd = Rs 3/8 Rd = [Rs] Rd = [Rs++]Rd = [++Rs] Rd = [Rs--] N,Z7/9[BP + IM6] = Rs 8 [A6] = Rs 1 6/8 [A16] = Rs 29/11[Rd] = Rs [++Rd] = Rs[Rd--] = Rs [Rd++] = Rs17/9注:若目的寄存器Rd 为 PC,则指令周期数是列表中的后者,且此时运算后所有标志位均不受影响。

除以上介绍的指令外,堆栈(stack )操作也属于一种特殊的数据传送指下面介绍SPCE061A 的堆栈操作。

堆栈指针SP 总是指向栈顶的第一个空项,压入一个字后,SP 减1,将多个寄存器同时压栈总是序号最高的寄存器先入栈,然后依次压入序号较低的寄存器,直到序号最低的寄存器最后入栈。

所以,执行指令PUSH R1,R4 TO [SP] 与 指令 PUSH R4,R1 TO [SP]是等效的。

因此,在数据出栈前SP 加1,总是先弹出入栈指令中序号最低的寄存器,而后依次弹出序号较高的寄存器。

【格式】 PUSHRx,Ry TO [SP] POPRx,Ry FROM [SP]【说明】Rx,Ry 可以是R1~R4,BP,SP,PC 中的任意两个或一个,执行后将Rx ~Ry 的序列寄存器压栈,或将堆栈中的数据弹入Rx ~Ry 序列寄存器中,压栈操作不影响标志位,出栈操作影响N,Z 标志,当Rx,Ry 中含有SR 时,所有标志位都会改变。

压栈、出栈操作的执行周期为3n + 4,若出栈操作的目的寄存器中含有PC 时,执行周期为3n+6。

其中n 是压栈数据的个数。

压栈和出栈的指令长度均为1字长。

相关文档
最新文档