数据寻址方式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3 章 指令系统
• 3.1 数据寻址方式 • 3.2 数据运算指令 • 3.3 程序控制指令 • 3.4 处理机控制指令 • 3.5 块操作指令
返回
3.1 数据寻址方式
• 寻址方式指的是指令按什么方式寻找到操作数或操作指令。寻址方式 分为与数据有关的寻址方式和与转移地址有关的寻址方式。本节讨论 与数据有关的寻址方式,这种寻址方式与操作数有关,即CPU 按照 什么样的方式找到操作数。
上一页 下一页 返回
3.1 数据寻址方式
• 寄存器可以是通用寄存器,包括8 位、16 位、32 位通用寄存器;也 可以是段寄存器,但目标寄存器不能是CS。
• 使用寄存器寻址方式可以存取寄存器操作数。 • 立即寻址方式的操作数在指令中,寄存器寻址方式的操作数在寄存器
中,这两种方式在指令执行时,操作数都存储于CPU 中。除以上两 种寻址方式外,下一节介绍的寻址方式的操作数都存储于存储器中, 即访问存储器操作数时,要使用3.1.2 节介绍的寻址方式。
• 3. 寄存器相对寻址方式 • 操作数的有效地址是一个寄存器的内容和指令中给定的一个位移量(
disp)之和。对于16 位寻址,这个寄存器只能是基址寄存器BX、 BP 或变址寄存器SI、DI;对于32 位寻址,允许使用任何32 位通用 寄存器。位移量可以是8 位、16 位、32 位(只适用于32 位寻址情况 )的带符号数。即
上一页 下一页 返回
3.1 数据寻址方式
• 两种寄存器均由指令指定。默认使用段寄存器的情况由所选用的基址 寄存器决定。若使用BP、ESP 或EBP,默认与SS 配合;若使用BX 或其他32 位通用寄存器(386 以上),则默认与DS 配合。允许使用 段超越前缀。
• 即,EA =(基址寄存器)+(变址寄存器)。 • 80386 以上支持的32 位基址变址寻址方式组合如图3 − 2 所示。 • 5. 相对基址变址寻址方式 • 对于16 位寻址,操作数的有效地址是一个基址(BX、BP)和一个
• 为了讨论方便,以数据传送指令MOV 为例来说明。MOV 指令的汇编 格式为:
• MOV 目标, 源 ;把源操作数传送给目标 • 在汇编语言中,MOV 是实现数据传送功能的操作码助记符,简称为
操作码;目标和源是操作数,中间用逗号隔开;注释内容从“;”开 始。其中,源和目标都涉及寻址方式问题。
下一页 返回
பைடு நூலகம்
3.1 数据寻址方式
• 3.1.1 CPU 操作数寻址
• 参与运算的操作数来自CPU 内部,包括以下两种寻址方式。 • 1. 立即寻址方式 • 操作数直接包含在指令中,紧跟在操作码之后的寻址方式称为立即寻
址方式,把该操作数简称为立即数,也称为立即数寻址方式。 • 使用立即寻址方式可以为一个寄存器或内存单元赋初值。 • 2. 寄存器寻址方式 • 操作数直接包含在寄存器中,由指令指定寄存器的寻址方式。
上一页 下一页 返回
3.1 数据寻址方式
• EA=(基址<或变址>寄存器)+ disp • 或 EA=(32 位通用寄存器)+ disp • 与段寄存器的配合情况同寄存器间接寻址方式。即若指令中寄存器相
对寻址方式使用BP、EBP、ESP,则默认与SS 段寄存器配合;使用 其他通用寄存器,则默认与DS 段寄存器配合。这两种情况都允许使 用段超越前缀。 • 4. 基址变址寻址方式 • 对于16 位寻址,操作数的有效地址是一个基址寄存器(BX、BP) 和一个变址寄存器(SI、DI)的内容之和。对于32 位寻址,允许使 用变址部分除ESP 以外的任何两个32 位通用寄存器的组合。
• 即,EA=(基址寄存器)+(变址寄存器)+ disp • 80386 以上支持的32 位相对基址变址寻址方式组合如图3 − 4 所示。 • 6. 比例变址寻址方式 • 这种寻址方式是80386 以上的微处理器才提供的。
• 3.1.2 存储器操作数寻址
• 参与运算的操作数来自存储器(RAM),包括以下6 种寻址方式。
上一页 下一页 返回
3.1 数据寻址方式
• 1. 直接寻址方式 • 操作数的有效地址Effective Address(EA)直接包含在指令中的寻
址方式称为直接寻址方式。操作数保存在内存中,直接寻址方式可以 存取单个内存变量。 • 由本节所介绍的寻址方式得到的只是EA。EA 就是操作数地址的偏移 量部分,其物理地址是通过把有效地址与段基址相加得到的。对于内 存分段管理情况,若80x86 工作在实模式下,段基址为段寄存器中的 内容乘以16 得到的值;若工作在保护模式,则通过段寄存器(存放 段选择符)中的描述符索引,从描述符表中得到描述符,再从描述符 中得到段基址。
变址寄存器(SI、DI)的内容与指令中给定的一个位移量(disp)之 和。
上一页 下一页 返回
3.1 数据寻址方式
• 对于32 位寻址,允许使用变址部分除ESP以外的任何两个32 位通用 寄存器及一个位移量的组合。两种寄存器均由指令指定。位移量可以 是8 位、16 位、32 位(只适合于32 位寻址情况)的带符号数。默认 使用段寄存器的情况由所选用的基址寄存器决定。若使用BP、EBP 或ESP,默认与SS 配合;若使用BX 或其他32 位通用寄存器,默认 与DS 配合。允许使用段超越前缀。
上一页 下一页 返回
3.1 数据寻址方式
• 当计算操作数的物理地址时,要注意段基址和有效地址的来源,表3 − 1 给出了它们的配合情况。
• 段超越前缀格式为:段寄存器名:存储器寻址方式。 • 2. 寄存器间接寻址方式 • 操作数的有效地址在寄存器而操作数本身在存储器中的寻址方式称为
寄存器间接寻址方式。对于16 位寻址,这个寄存器只能是基址寄存 器BX、BP 或变址寄存器SI、DI;对于32位寻址,允许使用任何32 位通用寄存器。
上一页 下一页 返回
3.1 数据寻址方式
• 若指令中使用的是BX、SI、DI、EAX、EBX、ECX、EDX、ESI、 EDI,则默认操作数在数据段,即它们默认与DS 段寄存器配合;若 使用的是BP、EBP、ESP,则默认操作数在堆栈段,即它们默认与 SS 段寄存器配合。这两种情况都允许使用段超越前缀。
• 3.1 数据寻址方式 • 3.2 数据运算指令 • 3.3 程序控制指令 • 3.4 处理机控制指令 • 3.5 块操作指令
返回
3.1 数据寻址方式
• 寻址方式指的是指令按什么方式寻找到操作数或操作指令。寻址方式 分为与数据有关的寻址方式和与转移地址有关的寻址方式。本节讨论 与数据有关的寻址方式,这种寻址方式与操作数有关,即CPU 按照 什么样的方式找到操作数。
上一页 下一页 返回
3.1 数据寻址方式
• 寄存器可以是通用寄存器,包括8 位、16 位、32 位通用寄存器;也 可以是段寄存器,但目标寄存器不能是CS。
• 使用寄存器寻址方式可以存取寄存器操作数。 • 立即寻址方式的操作数在指令中,寄存器寻址方式的操作数在寄存器
中,这两种方式在指令执行时,操作数都存储于CPU 中。除以上两 种寻址方式外,下一节介绍的寻址方式的操作数都存储于存储器中, 即访问存储器操作数时,要使用3.1.2 节介绍的寻址方式。
• 3. 寄存器相对寻址方式 • 操作数的有效地址是一个寄存器的内容和指令中给定的一个位移量(
disp)之和。对于16 位寻址,这个寄存器只能是基址寄存器BX、 BP 或变址寄存器SI、DI;对于32 位寻址,允许使用任何32 位通用 寄存器。位移量可以是8 位、16 位、32 位(只适用于32 位寻址情况 )的带符号数。即
上一页 下一页 返回
3.1 数据寻址方式
• 两种寄存器均由指令指定。默认使用段寄存器的情况由所选用的基址 寄存器决定。若使用BP、ESP 或EBP,默认与SS 配合;若使用BX 或其他32 位通用寄存器(386 以上),则默认与DS 配合。允许使用 段超越前缀。
• 即,EA =(基址寄存器)+(变址寄存器)。 • 80386 以上支持的32 位基址变址寻址方式组合如图3 − 2 所示。 • 5. 相对基址变址寻址方式 • 对于16 位寻址,操作数的有效地址是一个基址(BX、BP)和一个
• 为了讨论方便,以数据传送指令MOV 为例来说明。MOV 指令的汇编 格式为:
• MOV 目标, 源 ;把源操作数传送给目标 • 在汇编语言中,MOV 是实现数据传送功能的操作码助记符,简称为
操作码;目标和源是操作数,中间用逗号隔开;注释内容从“;”开 始。其中,源和目标都涉及寻址方式问题。
下一页 返回
பைடு நூலகம்
3.1 数据寻址方式
• 3.1.1 CPU 操作数寻址
• 参与运算的操作数来自CPU 内部,包括以下两种寻址方式。 • 1. 立即寻址方式 • 操作数直接包含在指令中,紧跟在操作码之后的寻址方式称为立即寻
址方式,把该操作数简称为立即数,也称为立即数寻址方式。 • 使用立即寻址方式可以为一个寄存器或内存单元赋初值。 • 2. 寄存器寻址方式 • 操作数直接包含在寄存器中,由指令指定寄存器的寻址方式。
上一页 下一页 返回
3.1 数据寻址方式
• EA=(基址<或变址>寄存器)+ disp • 或 EA=(32 位通用寄存器)+ disp • 与段寄存器的配合情况同寄存器间接寻址方式。即若指令中寄存器相
对寻址方式使用BP、EBP、ESP,则默认与SS 段寄存器配合;使用 其他通用寄存器,则默认与DS 段寄存器配合。这两种情况都允许使 用段超越前缀。 • 4. 基址变址寻址方式 • 对于16 位寻址,操作数的有效地址是一个基址寄存器(BX、BP) 和一个变址寄存器(SI、DI)的内容之和。对于32 位寻址,允许使 用变址部分除ESP 以外的任何两个32 位通用寄存器的组合。
• 即,EA=(基址寄存器)+(变址寄存器)+ disp • 80386 以上支持的32 位相对基址变址寻址方式组合如图3 − 4 所示。 • 6. 比例变址寻址方式 • 这种寻址方式是80386 以上的微处理器才提供的。
• 3.1.2 存储器操作数寻址
• 参与运算的操作数来自存储器(RAM),包括以下6 种寻址方式。
上一页 下一页 返回
3.1 数据寻址方式
• 1. 直接寻址方式 • 操作数的有效地址Effective Address(EA)直接包含在指令中的寻
址方式称为直接寻址方式。操作数保存在内存中,直接寻址方式可以 存取单个内存变量。 • 由本节所介绍的寻址方式得到的只是EA。EA 就是操作数地址的偏移 量部分,其物理地址是通过把有效地址与段基址相加得到的。对于内 存分段管理情况,若80x86 工作在实模式下,段基址为段寄存器中的 内容乘以16 得到的值;若工作在保护模式,则通过段寄存器(存放 段选择符)中的描述符索引,从描述符表中得到描述符,再从描述符 中得到段基址。
变址寄存器(SI、DI)的内容与指令中给定的一个位移量(disp)之 和。
上一页 下一页 返回
3.1 数据寻址方式
• 对于32 位寻址,允许使用变址部分除ESP以外的任何两个32 位通用 寄存器及一个位移量的组合。两种寄存器均由指令指定。位移量可以 是8 位、16 位、32 位(只适合于32 位寻址情况)的带符号数。默认 使用段寄存器的情况由所选用的基址寄存器决定。若使用BP、EBP 或ESP,默认与SS 配合;若使用BX 或其他32 位通用寄存器,默认 与DS 配合。允许使用段超越前缀。
上一页 下一页 返回
3.1 数据寻址方式
• 当计算操作数的物理地址时,要注意段基址和有效地址的来源,表3 − 1 给出了它们的配合情况。
• 段超越前缀格式为:段寄存器名:存储器寻址方式。 • 2. 寄存器间接寻址方式 • 操作数的有效地址在寄存器而操作数本身在存储器中的寻址方式称为
寄存器间接寻址方式。对于16 位寻址,这个寄存器只能是基址寄存 器BX、BP 或变址寄存器SI、DI;对于32位寻址,允许使用任何32 位通用寄存器。
上一页 下一页 返回
3.1 数据寻址方式
• 若指令中使用的是BX、SI、DI、EAX、EBX、ECX、EDX、ESI、 EDI,则默认操作数在数据段,即它们默认与DS 段寄存器配合;若 使用的是BP、EBP、ESP,则默认操作数在堆栈段,即它们默认与 SS 段寄存器配合。这两种情况都允许使用段超越前缀。