指令系统1(寻址方式)(楼俊君.ppt

上传人:max****ui 文档编号:8579353 上传时间:2020-03-30 格式:PPT 页数:36 大小:345KB
返回 下载 相关 举报
指令系统1(寻址方式)(楼俊君.ppt_第1页
第1页 / 共36页
指令系统1(寻址方式)(楼俊君.ppt_第2页
第2页 / 共36页
指令系统1(寻址方式)(楼俊君.ppt_第3页
第3页 / 共36页
点击查看更多>>
资源描述
1 第4章指令系统 2 主要内容 指令系统的一般概念对操作数的寻址方式六大类指令的操作原理操作码的含义指令对操作数的要求指令执行的结果 3 4 1概述 指令 控制计算机完成指定操作的命令机器指令 指令的二进制代码形式 例如 CD21H汇编指令 助记符形式的指令 例如 INT21H指令系统 CPU所有指令及其使用规则的集合 8088 8086指令系统 1 指令向后兼容 x86系列 2 应用广泛 资料易于寻找 4 指令按功能分为六大类 92种 1 数据传送类 2 算术运算类 3 逻辑运算和移位 4 串操作 5 控制转移类 6 处理器控制 5 4 2指令的寻址方式 操作码 操作数 操作数 说明要执行的是什么操作 操作对象 可以有0个 1个或2个 目的 源 指令的基本构成如下 6 指令举例 ADDAX SI 6 MOVAX BX 操作码操作数 INC BX HLT 7 部分8088 8086常用指令 8 8088 8086的操作数分为3类 1 立即数 常数 源操作数就是参加操作的数据本身 它们可以是8位或16位 取值范围如下表 立即数只能用作源操作数 如 MOVAX 0FA00H 正确MOV8000H DX 错误 操作数 数据 立即数 地址 寄存器 名称 存储器单元 地址 9 2 寄存器操作数 放在8个通用寄存器或4个段寄存器中的操作数 表示参加运算的数存放在指令给出的寄存器中 可以是16位或8位 10 只能存放字操作数 段寄存器存放当前操作数的段基地址 可作为源或目的操作数 但CS不作为目的操作数 不允许将立即数传送到段寄存器 可通过某个通用寄存器传递改变 SI DI BP SP CS DS ES SS 11 3 存储器操作数 存储器操作数 字节字双字 124 类型 存储单元个数 一般不允许两个操作数同时为存储器操作数 Flags标志寄存器 仅有个别指令可用它作为操作数IP不能用指令指针寄存器 它作为操作数 顺序执行时它自动加1 跳转执行时自动会跳转 表示当前参加运算的数存放在存储器的某1 2 4个单元中 12 存储单元的物理地址 段基地址 16 偏移地址 若指令中没有指明所涉及的段寄存器 CPU就采用默认的段寄存器来确定操作数所在的段 下表是段寄存器使用的一些基本约定 8086规定了访问存储器段的规则 此规则定义了段地址寄存器和偏移地址寄存器的组合方式 其默认规则如下表 13 存储器操作数的偏移地址 也称有效地址EA 要用 EA 方括号括起来 它可以通过不同的寻址方式由指令给出 存储器操作数的段基地址 也称段头地址 一般省去 按隐含规则确定它们 也可直接给出进行段超越 例如若 BX 2000H SI 0A00H DI 2A00H 则以下指令的结果是一样的 MOVAL 2A00H 隐含段头为DS 直接寻址MOVAL BX 0A00H 隐含段头为DS 寄存器相对寻址MOVAL BX SI 隐含段头为DS 基址 变址寻址MOVAL DI 隐含段头为DS 寄存器间接寻址但MOVAL ES 2A00H 段超越 段头为ES 与前4条不同 存储单元的物理地址 段基地址 16 偏移地址 注意 存储器数据表示形式 地址值或寄存器 14 寻址方式 寻找操作数的方法寻找操作数的地址 一般指源操作数 寻找要执行的下一条指令的地址在8086指令系统中 操作数所在地址的寻址方式可分为8种 立即寻址 寄存器相对寻址 直接寻址 基址 变址寻址 寄存器寻址 相对的基址 变址寻址 寄存器间接寻址 隐含寻址 4 28086的寻址方式 15 操作数 为一常数 直接由指令给出 此操作数称为立即数 立即寻址只能用于源操作数例 MOVAX 1C8FHMOVBYTEPTR 2A00H 8FH错误例 MOV2A00H AX 错误 1立即寻址 16 立即数 操作码 低8位 高8位 存储器 MOV操作码 02H 31H AH AL 代码段 代码段 立即寻址指令在存储器中的存放形式 AX 指令操作例 MOVAX 3102H AX3102H执行后 AH 31H AL 02H 用途 直接给出操作数据 立即数存放在内存的代码段中 17 2寄存器寻址 操作数放在某个寄存器中源操作数与目的操作数字长要相同寄存器寻址与段地址无关例 MOVAX BXMOV 3F00H AXMOVCL AL错误例 MOVAX BL 字长不同 MOVES AX DX 寄存器与段无关 18 AX SI 2233H 2233H 指令操作例 MOVSI AX SI AX 指令执行前 AX 2233H指令执行后 AX 2233H SI 2233H 用途 操作数存放在寄存器中 根据寄存器名称寻找寄存器里面的数据 19 3直接寻址 指令中直接给出存储器操作数的16位偏移地址或I O接口仅8位端口地址存储器偏移地址也称为有效地址 EA EffectiveAddress 存储器默认的段寄存器为DS 但也可以显式地指定其他段寄存器 称为段超越前缀存储器偏移地址也可用符号地址来表示 如ADDR VAR例 MOVAX 2A00H 段头隐含为DSMOVDX ES 2A00H 段超越MOVSI TABLE PTR 段头隐含为DS还有 INAL 90H 括号要省去OUT 85H AL 括号要省去 20 例 MOVAX 3102H AL 3102H AH 3103H 如果 DS 2000H 23102H CDH 23103H ABH则操作数的物理地址为 20000H 3102H 23102H指令执行后 AX ABCDH MOV操作码 02H 31H AH AL 23102H CDH ABH 存储器 代码段 数据段 23103H 用途 用于操作数存放在存储器单元中或I O接口地址仅为8位的的端口中 21 4寄存器间接寻址 操作数的偏移地址 有效地址EA 放在寄存器中只有SI DI BX和BP可作间址寄存器例 MOVAX BX MOVCL CS DI INAL DX 括号省去OUT DX AL 括号省去错误例 MOVAX DX MOVCL AX EA BX BP SI DI 22 指令操作例 MOVAX SI 若 DS 6000H SI 1200H 61200H 44H 61201H 33H则指令执行后 AX 3344H 用途 操作数存放在存储器或I O接口地址为16位的的寻址 23 5寄存器相对寻址 EA 间址寄存器的内容 8 16位的位移量 寄存器相对寻址常用于存取表格或一维数组中的元素 把表格的起始地址作为位移量 元素的下标值放在间址寄存器中 或反之 EA BX BP SI DI 8位16位 位移量 24 例 MOVAX BX 8 MOVCX TABLE SI MOVAX BP 1000H 默认段寄存器为SS指令操作例 MOVAX DATA BX 若 DS 6000H BX 1000H DATA 2A00H 63A00H 66H 63A01H 55H则物理地址 60000H 1000H 2A00H 63A00H指令执行后 AX 5566H 见下页图示 25 操作码 00偏移量低 2A偏移量高 DS60000 BX1000 DATA2A00 63A00 63A00H AH AL AX 代码段 数据段 66H 55H MOVAX DATA BX 用途 操作数存放在存储器地址指定的单元中 26 6基址 变址寻址 若操作数的偏移地址 由基址寄存器 BX或BP 给出 基址寻址方式由变址寄存器 SI或DI 给出 变址寻址方式 由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的偏移地址 称为基址 变址寻址 EA BX BP SI DI 同一组内的寄存器不能同时出现 基址寄存器 变址寄存器 27 例 MOVAX BX SI MOVAX BX SI MOVAX DS BP DI 错误例 MOVAX BX BP MOVAX DI SI 用途 操作数存放在存储器地址指定的单元中 28 83000 操作码 DS80000 BX2000 SI1000 83000H AH AL AX 代码段 数据段 YY XX 指令操作例 MOVAX BX SI 假定 DS 8000H BX 2000H SI 1000H则物理地址 80000H 2000H 1000H 83000H指令执行后 AL 83000H AH 83001H 29 7相对的基址变址寻址 在基址 变址寻址的基础上再加上一个相对位移量注意事项同基址 变址寻址 EA BX BP SI DI 8位16位 位移量 例 MOVAX BASE SI BX MOVAX BX BASE SI MOVAX BX SI BASE MOVAX BX BASE SI MOVAX BX SI BASE 基址 变址 用途 操作数存放在存储器地址指定的单元中 30 指令操作例 MOVAX DATA DI BX 若 DS 8000H BX 2000H DI 1000H DATA 200H则指令执行后 AH 83021H AL 83020H 83200 83200H AH AL AX DATA0200 操作码 代码段 数据段 YY XX DS80000 BX2000 DI1000 31 使用相对的基址 变址寻址方式可以很方便地访问二维数组 基址寄存器 数组首地址 变址寄存器 数组元素行址 位移量 数组元素列址 偏移地址 二维数组例 内存图示 按行存储 行位移地址 行内元素下标 32 8隐含寻址 指令操作数是隐含的 在指令中未显式地指明 例 MULBL指令隐含了被乘数AL及乘积AX类似的指令还有 XLAT DIV CBW MOVS等 AL BL AX 用途 操作数存放在寄存器或存储器地址指定的单元中 33 如何寻找指令的地址呢 1 程序中将要执行的指令的地址由CS IP指向 2 程序的第一条指令的地址 首地址 由操作系统OS分配产生 3 一般程序是一条接着一条的顺序执行的 所以CS IP自动加1即可实现 4 当程序跳转执行时 CS IP采用直接方式或间接方式改为跳转到的指令地址 34 小结 指令由 和 构成 如何取得操作数 称为 操作码 操作数 寻址方式 35 寻址方式可分8种 立即寻址 直接寻址 针对M I O 寄存器相对寻址 针对M 寄存器寻址 针对R 基址 变址寻址 针对M 基址 变址相对寻址 针对M 寄存器间接寻址 针对M I O 隐含寻址 针对R M 36 寄存器间接 寄存器相对 基址变址 相对基址变址4种寻址方式的比较 寻址方式指令操作数形式寄存器间接只有一个寄存器 BX BP SI DI之一 寄存器相对一个寄存器加上位移量基址 变址两个不同类别的寄存器相对基址 变址两个不同类别的寄存器加上位移量
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!