80x86的指令系统和寻址方式
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2 80x86的寻址方式 与数据有关的寻址方式 与转移地址有关的寻址方式
第3章 80x86的指令系统和寻址方式
20
3.2.1 与数据有关的寻址方式
以 MOV 指令为例 1. 立即寻址方式* —— 操作数在指令中给出 MOV AL, 5 MOV AX, 3064H * 只能用于SRC字段
* SRC 和 DST的字长一致
汇编格式指令与机器指令一一对应
用汇编语言编好的程序,
必须翻译成机器码表示的程序,计算机才能运行。 汇编程序是将汇编语言程序翻译成机器语言的一种系统程序。
第3章 80x86的指令系统和寻址方式 9
汇编语言和机器语言编写的程序: 面向机器,反映机器运行的实际过程, 与计算机的硬件结构和指令系统密切相关 算法是用计算机的指令, 寄存器等描述,
用于取指
所有堆栈的进栈与出栈 任何用ESP或EBP作为基址寄存器的访问 除相对于堆栈以及串处理指令的目的串以 外的所有数据访问 串处理指令的目的串
局部数据 目的 串
第3章 80x86的指令系统和寻址方式
25
段跨越前缀
用于改变系统所指定的默认段选择规则 有三种情况不允许使用段跨越前缀: 1、串处理指令的目的串必须用ES 2、PUSH指令的目的和POP指令的源必须用SS段 3、指令必须存放在CS段中
② 操作数在寄存器中,称寄存器操作数
指令中给出用符号表示的寄存器名。
如 MOV AL , 9
③ 操作数在内存单元中,称存储器操作数或内存操作数
指令中给出该内存单元的地址。用[ ]表示存储器操作数 如 MOV AL , [ 2000H ]
第3章 80x86的指令系统和寻址方式 13
操作数个数 按指令格式中,操作数个数的多少分为四类: 无操作数: 指令只有一个操作码,没有操作数 单操作数: 指令中给出一个操作数 双操作数: 指令中给出两个操作数。 三操作数:指令中给出两个操作数。
第3章 80x86的指令系统和寻址方式
26
段寄存器的使用规定
访问存储器的方式
取指令
堆栈操作 一般数据访问 BP作为基址的寻址 串操作的源操作数
默认的 段寄存器
CS
SS DS SS DS
可跨越的 段寄存器
无
无
偏移地址
IP
SP
CS ES SS 有效地址EA CS DS ES CS ES SS BP SI
* CS不能用MOV指令改变
运算速度快
MOV CS, AX
第3章 80x86的指令系统和寻址方式
22
存储器寻址(除代码段) 四种成分的组合 EA=基址+(变址*比例因子)+位移量
位移量:存放在指令中的一个8位、16位或32位的数, 通常是个地址
基 址: 基址寄存器中的内容,通常用来指向数组或字符串的首地址
数据传送 算术运算 逻辑运算 串操作 控制转移 处理机控制
操作码 ADD
操作数
...
操作数
AL,10H
按功能 指令分六类
(2) 操作数 指明参与操作的数据或数据所在的地方。 了解操作数的来源、个数、类型。
第3章 80x86的指令系统和寻址方式 12
操作数来源
有三种来源:
指明操作数所在的地方
① 操作数在指令中,称立即数操作数 如 MOV AL , 9
7Hale Waihona Puke Baidu
A0 00 20 02 06 01 20 A2 02 20
控制电路
第3章 80x86的指令系统和寻址方式
(3) 助记符和汇编语言
助记符是有助记忆、并能描述指令功能的符号。 通常是指令功能的英文单词的缩写。 例 数的传送指令用助记符MOV 加法用ADD,转移用JMP等 用助记符等表示的指令称为汇编格式指令 例 MOV AL, 0 汇编语言是汇编格式指令、伪指令及其使用的一组规则。 用汇编语言编写的程序称汇编语言程序。
MOV AX, [CX]
* SRC 和 DST的字长一致 MOV DL, [BX] MOV DX, [BX]
; [BX]指示一个字节单元 ; [BX]指示一个字单元
* 适于数组、字符串、表格的处理
第3章 80x86的指令系统和寻址方式
32
5. 寄存器相对寻址方式(直接变址寻址)*
第3章 80x86的指令系统和寻址方式 6
例 将地址为2000H和2001H 的两内存单元内容相加,
结果存在地址2002H单元中,程序如下: A0 00 20 MOV AL , [2000H] 02 06 01 20 ADD AL , [2001H] A2 02 20 MOV [2002H], AL
串操作的目的操作数
ES
无
DI
第3章 80x86的指令系统和寻址方式
27
3. 直接寻址方式* —— 有效地址EA由指令直接给出
有效地址EA:操作数的偏移地址 物理地址PA = 16d (DS) + EA
例:MOV AX, [2000H]
EA=2000H, 假设(DS)=3000H, 那么(PA)=32000H
有两种可能: ▲有些操作只需要一个操作数 如 INC AL ; (AL) ← (AL)+ 1
▲有些操作将另一个操作数隐含在指令中
如
MUL BL
; (AX) ← (AL)×(BL)
第3章 80x86的指令系统和寻址方式
16
③ 双操作数: 指令中给出两个操作数。
如
ADD
AL , BL
;(AL) ← (AL) + (BL)
编程工具
第三章 80x86指令系统和寻址方式 第四章 汇编语言程序格式
第3章 80x86的指令系统和寻址方式
1
第3章 80x86的指令系统和寻址方式
3.1 3.2 3.3 3.4 程序语言简介 80x86的寻址方式 程序占有的空间和时间 80x86的指令系统
第3章 80x86的指令系统和寻址方式
* 使用变量时,要注意变量的属性
VALUE DB 10 MOV AX, VALUE MOV AX, WORD PTR VALUE * 适于处理单个变量
第3章 80x86的指令系统和寻址方式 29
80x86规定:
双操作数指令中,只能有一个操作 数使用存储器方式,因此,经常有一个 变量要送到寄存器。
要了解CPU的编程结构、寻址方式、指令系统才能设计程序
占内存少,执行速度快 编写繁琐、调试困难 汇编语言相对于机器语言编写的程序: 汇编语言程序,易读易懂,便于修改。
第3章 80x86的指令系统和寻址方式 10
(4) 高级语言
高级语言是独立于机器、面向过程或对象的语言。 算法是按照人的思维方式给出,比较接近人的自然语言。 上例 高级语言程序段为: var3 = var1 + var2 由翻译程序将高级语言源程序翻译目标程序, 即用机器码表示的程序,机器才能执行。
AH AL
30
50
32000
50 30
(AX) = 3050H
例:操作数地址可由变量(符号地址)表示 MOV AH, VALUE ( VALUE DB 10 )
28
第3章 80x86的指令系统和寻址方式
3. 直接寻址方式* * 隐含的段为数据段 DS * 可使用段跨越前缀 MOV AX, ES :[2000H]
寄存器组 AX BX CX DX SI DI BP SP 运 算 器 DS ES SS CS IP
地 址 加 法 器
地址总线AB
地 址
数据暂存器 指 令 队 列 总线 接口 控制 电路
数据总线DB
译 码
控制总线CB
器
指令译码器
PSW标志 寄存器
1010 0000 0000 0000 0010 0000 0000 0010 0000 0110 0000 0001 0010 0000 1010 0010 0000 0010 0010 0000
2
3.1 程序语言简介
(1) 指令、指令系统和程序 (2) 机器码和机器语言 (3) 助记符和汇编语言
(4) 高级语言
(5) 8086/8088指令格式简介
第3章 80x86的指令系统和寻址方式
3
(1) 指令、指令系统和程序
CPU是一个可以完成一些基本操作的电子器件。 用编码表示CPU的一个基本操作,称为一条指令。 全部指令集称为指令系统。
变 址: 变址寄存器中的内容,通常用来指向数组中的某个元素或字 符串中的某个字符
比例因子:386+,值可为1,2,4,8,与变址相乘用于访问元素长度
为2、4、8字节的数组
第3章 80x86的指令系统和寻址方式
23
16位/32位寻址时有效地址的四种成分的组成 四种成分 16位寻址 32位寻址
位移量
0 , 8 , 16位 0 , 8 , 32位
第3章 80x86的指令系统和寻址方式
14
① 无操作数: 指令只有一个操作码,没有操作数。
有两种可能: ▲ 有些操作不需要操作数。 如 HLT,NOP等处理机控制指令。 ▲ 操作数隐含在指令中。 如 AAA , DAA等调整指令。
第3章 80x86的指令系统和寻址方式
15
② 单操作数: 指令中给出一个操作数。
MOV AX, [BX] MOV AX, ES:[BX]
PA = 16d (DS) + (BX) PA = 16d (ES) + (BX)
MOV AX, [BP]
PA = 16d (SS) + (BP)
31
第3章 80x86的指令系统和寻址方式
4. 寄存器间接寻址方式*
* 不允许使用AX、CX、DX存放EA
第3章 80x86的指令系统和寻址方式
30
4. 寄存器间接寻址方式* ——EA在基址寄存器(BX/BP)
或变址寄存器(SI/DI)中 BX, SI, DI (DS)
(BX) (SI) (DI)
物理地址 = 16d (DS) +
BP (SS) 物理地址 = 16d (SS) + (BP)
第3章 80x86的指令系统和寻址方式
8
上例 将地址为2000H和2001H 的两内存单元内容相加, 结果存在地址2002H单元中。 用机器码编程: A0 00 20 02 06 01 20 用汇编语言编写的确程序段为: MOV AL , var1 ADD AL , var2
A2 02 20
MOV var3 , AL
任何32位通用寄存器(包括ESP) 除ESP以外的32位通用寄存器 1 ,2 ,4 ,8
基址寄存器 BX ,BP 变址寄存器 SI,DI 比例因子 无
第3章 80x86的指令系统和寻址方式
24
默认段选择规则
访问类型 所用段及段寄存 器 缺省选择规则
指
堆
令
栈
代码段 CS
堆栈段 SS 数据段 DS 附加段 ES
(不同类型机器由于指令系统不同,它们的编译程序不同)
Fortran、 Basic、 C等均是高级语言。
使用高级语言编程,效率高,可读性、可移植性强。
第3章 80x86的指令系统和寻址方式 11
(5)8086/8088指令格式简介
指令格式 例 (1) 操作码 指明CPU要执行什么样的操作。 是一条指令必不可少的部分,用助记符表示。
适用于给寄存器赋初值
MOV AH, 3064H
第3章 80x86的指令系统和寻址方式
21
2. 寄存器寻址方式* —— 操作数在指定的寄存器中
MOV AX, BX
MOV AL, BH
* 字节寄存器只有 AH AL BH BL CH CL DH DL * SRC 和 DST的字长一致 MOV AH, BX
第3章 80x86的指令系统和寻址方式
5
(2) 机器码和机器语言
用二进制数编码表示的指令,称为机器指令或机器码。 机器语言是机器码及其使用的一组规则。
用机器语言编写的程序称为目标程序。
机器语言特点:CPU能直接识别的唯一语言
面向机器,可直接被计算机执行
执行速度快,占用内存空间小 编程效率低、可读性差、可移值性差 应用:显示设备简单的单片机 家用电器、固化在ROM上的程序等
目的操作数
源操作数
操作后的结果通常存放在目的操作数中。
第3章 80x86的指令系统和寻址方式
17
④ 三操作数: 指令中给出三个操作数。
如
IMUL BX, DX, 6
目的操作数
;(BX) ← (DX) *6
源操作数 立即数
操作后的结果通常存放在目的操作数中。
第3章 80x86的指令系统和寻址方式
18
指令系统反映 CPU的基本功能,
是硬件设计人员和程序员能见到的机器的主要属性,
是硬件构成的计算机系统向外部世界提供的直接界面。
第3章 80x86的指令系统和寻址方式
4
一个CPU的指令系统是固定的, 不同类型的CPU其指令系统不同; 同一系列向上兼容。 程序是为要解决的问题编写出来的指令集合 用户为解决自己的问题所编写的程序称为源程序。