80x86的指令系统和寻址方式

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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其指令系统不同; 同一系列向上兼容。 程序是为要解决的问题编写出来的指令集合 用户为解决自己的问题所编写的程序称为源程序。
相关文档
最新文档