微机原理-CH3-1-8086CPU寻址方式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014年3月24日星期一
23
2014年3月24日星期一
24
例题:立即寻址
西北师大计算机系
索国瑞:suogr @ foxmail.com
MOV BL,8 功能:立即寻址,将指令中的立即数8送入寄 存器BL中。 即:BL←08H。
一般以 DATA8/IMM8 表示8位立即数,DATA16/IMM16 表示16位立即数, DATA32/IMM32 表示32位立即数。 在实际应用中要注意立即数位数和目的操作数位数相 匹配。 例: ADD CL,37H 功能:立即寻址,CL←(CL)+37H 错例:MOV AL,1000H MOV 18H,20H MOV AL,ABH MOV AL,9C
西北师大计算机系
索国瑞:suogr @ foxmail.com
西北师大计算机系
索国瑞:suogr @ foxmail.com
具体的寻址方式
立即寻址 寄存器寻址 直接寻址 寄存器间接寻址 基址寻址 变址寻址 比例变址寻址(IA-32) 基址变址寻址 基址加比例变址寻址(IA-32) 隐含寻址 串寻址
西北师范大学计算机科学与工程学院
微机原理及汇编语言
西北师大计算机系 微机原理及汇编语言
8086CPU寻址方式
指令格式 基本数据类型 寻址方式概述 数据寻址方式 指令寻址方式 隐含寻址 串寻址 机器语言指令编码
8086CPU寻址方式
索国瑞 2014秋选课班
suogr@foxmail.com
2014年3月24日星期一 3
基本格式
80X86 的指令由操作码和操作数组成,常见的有 〈操作码〉 ; 无操作数指令
〈操作码〉〈操作数〉 ; 单操作数指令 〈操作码〉〈操作数1〉,〈操作数2〉 ;两操作数指令 <操作码> <操作数1>,<操作数2>,<操作数3> ;三操作数指令
2014年3月24日星期一
数据来源
80X86体系中,数据来源主要有以下四项 立即数:操作数在指令中 寄存器:操作数保存在寄存器中 存储器:操作数保存在存储器中,一般就指内存 端口: 操作数在端口
2014年3月24日星期一
5
2014年3月24日星期一
6
西北师大计算机系
索国瑞:suogr @ foxmail.com
例: MOV AL,ES:[2000H] 例: MOV SS:[3000H],AH 例: MOV CS:[SI],BH 有三种情况不允许段超越前缀: 串处理指令的目的串必须使用ES段 PUSH指令的目的和POP指令的源必须使用SS段 指令必须存放在CS段中
2014年3月24日星期一
18
西北师大计算机系
索国瑞:suogr @ foxmail.com
西北师大计算机系
索国瑞:suogr @ foxmail.com
寻址方式概述
寻址:找操作数 寻址方式:就是确定操作对象的方式 依据操作对象的不同性质,寻址方式可分为: 与数据有关的寻址方式 与转移有关的寻址方式 隐含寻址 串操作寻址 学习时注意区别不同数据来源,注意混合型寻址方式
直接寻址
即存储器直接寻址方式。不涉及寄存器,操作数有效 地址直接出现在指令中,紧跟在操作码之后,是指令 的一部分,与指令码一起存放在代码段中,且遵循低 前高后的原则。 操作数本身看具体 如何规定,一般在 数据段中。
2014wk.baidu.com3月24日星期一
33
2014年3月24日星期一
34
西北师大计算机系
索国瑞:suogr @ foxmail.com
4
西北师大计算机系
索国瑞:suogr @ foxmail.com
西北师大计算机系
索国瑞:suogr @ foxmail.com
为方便起见,简记操作码为OP;操作数1为OPD1, 也记为SRC-源操作数;操作数2为OPD2,也记为 DST-目的操作数。 操作数在标记时也可以按照从左到右出现的次序依次 标记为第一操作数,第二操作数,…… 操作数有些时候也可以理解为地址码,即存放操作数 的位置,这包括内存地址,也包括端口地址(外设)
19 2014年3月24日星期一 20
2014年3月24日星期一
西北师大计算机系
索国瑞:suogr @ foxmail.com
西北师大计算机系
索国瑞:suogr @ foxmail.com
EA四分量 有效地址分量 基址寄存器 变址寄存器 比例因子 位移量
2014年3月24日星期一
数据寻址方式
16位寻址方式 BX,BP SI,DI 不用该分量, 默认为1 0,8,16 32位寻址方式 所有32位通用寄 存器 除ESP外的所有 32位通用寄存器 1,2,4,8 0,8,32
例题:寄存器寻址
MOV AL,BL 功能:AL←(BL)
2014年3月24日星期一
27
2014年3月24日星期一
28
西北师大计算机系
索国瑞:suogr @ foxmail.com
西北师大计算机系
索国瑞:suogr @ foxmail.com
存储器寻址 一般约定如下:
REG8 表示8位寄存器,如AL、AH、BL、BH、CL、 这时操作数在存储单元中,在指令中直接或间接地给 CH、DL、DH 出存放操作数的地址,以存取操作数 REG16 表示16位寄存器,如AX、BX、CX、DX、SI、 需要注意以下四个问题: DI、BP 缺省的段寄存器 REG32 表示32位寄存器,如EAX、EBX、ECX、EDX、 段超越问题 ESI、EDI、EBP、ESP 有效地址 SREG 表示段寄存器,如CS、DS、ES、SS等 不同的存储器寻址方式 —— [ 和 ] EA 例: INC AX + [变址寄存器]+ 位移量(操作 = [基址寄存器] 数部分的形式地址D) 功能:AX ←(AX)+1。 注意:16位和32位CPU所不同的形式
2014年3月24日星期一 7
高址结尾和低址结尾
2014年3月24日星期一
8
西北师大计算机系
索国瑞:suogr @ foxmail.com
西北师大计算机系
索国瑞:suogr @ foxmail.com
整数
包括无符号整数和有符号整数。 无符号整数是原始二进制码,范围从0到所选择的 操作数类型能编码的最大正数 符号整数是2的补码二进制值,可表示正、负整数 值,其中符号位在操作数的最高位 整数常见的有8位、16位、32位的
2014年3月24日星期一 29
默认的段寄存器搭配
2014年3月24日星期一
30
西北师大计算机系
索国瑞:suogr @ foxmail.com
西北师大计算机系
索国瑞:suogr @ foxmail.com
段超越
如前述,缺省的段寄存器取决于指令,寻址方式和涉 及的寄存器,但有时使用缺省的段寄存器并不合适。 多数情况下,允许程序自行选择段寄存器,当然需要 显式指定,这种情况叫做段超越。 段超越的基本格式为 段寄存器:MEM 段超越位于需要段超越的指令之前,因此也叫段超越 前缀。MEM指存储器地址
31
2014年3月24日星期一
32
西北师大计算机系
索国瑞:suogr @ foxmail.com
西北师大计算机系
索国瑞:suogr @ foxmail.com
不同的存储器寻址方式
可以分为三种: 不涉及寄存器: 直接寻址 涉及一个寄存器:寄存器间接寻址、基址寻址、变 址寻址,IA-32中有 比例变址寻址 涉及两个寄存器:基址变址寻址 和 基址变址相对 寻址,IA-32中有基址加比例变址相对寻址 注意在16位寻址模式和32位寻址模式下的差异
2014年3月24日星期一
11
2014年3月24日星期一
12
西北师大计算机系
索国瑞:suogr @ foxmail.com
西北师大计算机系
索国瑞:suogr @ foxmail.com
指针数据类型
指针是内存单元的地址,有两种指针 近指针Near:16位,是段内的偏移量 远指针Far:32位,是一逻辑地址,含段基址和段 内偏移量。
2014年3月24日星期一
25
2014年3月24日星期一
26
西北师大计算机系
索国瑞:suogr @ foxmail.com
寄存器寻址
被访问的操作数存放在指令指定的寄存器中。 由于寄存器就在CPU内部,访问时也不需要经过外部总 线 注意:寄存器寻址中 所说的寄存器是指通用 寄存器,一般不包括 段寄存器等
21 2014年3月24日星期一 22
操作对象是指令中的数据, 数据可能出现在指令中, 可能保存在寄存器中,也可能在I/O端口中,还可能保 存在存储器中。 需要注意的是:指令中由于存在隐含寻址所指向的隐 含操作数,因此,在分析指令操作数时要注意区分显 式操作数和隐含操作数,不能拘泥于指令书写时出现 的操作数。
立即寻址
操作数作为立即数直接包含在指令中,紧跟在操作码 之后与其一起存放在代码段区域。与操作码一起被取 入CPU的指令队列,不需要在指令执行时访问存储器 立即数可以是8位,16位,32位的。16位和32位的立即 存储器寻址 数存放时遵循“低前高后”原则 立即数不能是目的操作数,只能是源操作数
西北师大计算机系
索国瑞:suogr @ foxmail.com
基本数据类型
8086CPU中的基本数据类型是字节、字和双字 字节是8位,常用于表示单个的字符 字是16位,常用于表示整数、段内偏移量等等,存 放时以字节为基本单位“低前高后” 双字是32位,常用于表示地址指针:段基址和段内 偏移量,也遵循“低前高后” 在80X86体系中,还有其他的数据类型 在8086中,某些指令允许在基本数据类型的基础上进 行其他的附加数据类型的操作。
2014年3月24日星期一
13
2014年3月24日星期一
14
西北师大计算机系
索国瑞:suogr @ foxmail.com
西北师大计算机系
索国瑞:suogr @ foxmail.com
位字段数据类型
是连续的位序列。能在内存中任何字节的任意位位置 开始,但其应用需要较高的技巧,一般不用
2014年3月24日星期一
有效地址
80X86体系中,任何内存单元的逻辑地址都是由两部分 构成 段基址 和 段内偏移地址——也叫段内偏移量 在指令中,操作数字段给出的地址码部分其实就是这 个段内偏移地址,也叫有效地址——EA 对于8086:EA = [基址寄存器] + [变址寄存器] + 位 移量(操作数部分的形式地址D) 对于IA-32:EA = [基址寄存器] + [变址寄存器]×比 例因子 + 位移量(操作数部分的形式地址D)
例: MOV AX, [1234] 例: MOV AX, x [1234] EA的计算公式 EA = MEM 此处M即指令中给出的存储器地址,缺省的段寄存 器为 DS,可段超越 直接寻址中的存储器操作数的EA也可以用变量名的形 式给出 16位寻址方式时物理地址的计算公式在默认状态下是: PA = (DS) 左移4位+位移量
suogr@foxmail.com
教9楼C区C506实验室
教学群号:31696867
QQ群 :31696867
2014年3月24日星期一
2
西北师大计算机系
索国瑞:suogr @ foxmail.com
西北师大计算机系
索国瑞:suogr @ foxmail.com
指令格式
指令的结构形式 操作码+操作数(地址码) 指令系统是CPU所能执行的各种指令的集合 80X86 CPU的指令集是在8086CPU指令系统的基础 上发展起来的 80X86 指令系统的扩展包括 基本指令集的增强 专用指令 系统控制指令
15
2014年3月24日星期一
16
西北师大计算机系
索国瑞:suogr @ foxmail.com
西北师大计算机系
索国瑞:suogr @ foxmail.com
串数据类型
是字节、字的连续序列。常用的是字节序列,一般理 解为一大块同类型的数据堆
2014年3月24日星期一
17
2014年3月24日星期一
无符号整数
2014年3月24日星期一
9
2014年3月24日星期一
10
西北师大计算机系
索国瑞:suogr @ foxmail.com
西北师大计算机系
索国瑞:suogr @ foxmail.com
有符号整数
浮点数
包括单精度、双精度和双扩展的精度浮点数 单精度:长度32位,精度是24位(阶8位) 双精度:长度64位,精度是53位 双扩展精度:长度80位,精度是64位