,第3章寻址方式和指令系统 第章寻址方式和指令系统 3.1寻址方式 32指令系统 BACK
第3章 寻址方式和指令系统 第3章 寻址方式和指令系统 3.1 寻址方式 3.2 指令系统
,第3章寻址方式和指令系统 3.1寻址方式 3. 寻址方式和有效地址概念 操作数地址的表示有3种情况: (1)直接放在指令中。指令的操作数部分就是操作数本身 这种操作数叫做立即数,对应的指令寻址方式称为立即数寻址。 (2)放在CPU的某个内部寄存器中。指令的操作数部分是CPU 的一个寄存器。这种指令寻址方式称为寄存器寻址 (3)放在某个存储单元中,指令的操作数部分包含着该操作 数所在的内存地址。这种指令寻址方式称为存储器寻址
第3章 寻址方式和指令系统 3.1 寻 址 方 式 3.1.1 寻址方式和有效地址概念 操作数地址的表示有3种情况: (1) 直接放在指令中。指令的操作数部分就是操作数本身。 这种操作数叫做立即数,对应的指令寻址方式称为立即数寻址。 (2) 放在CPU的某个内部寄存器中。指令的操作数部分是CPU 的一个寄存器。这种指令寻址方式称为寄存器寻址。 (3) 放在某个存储单元中,指令的操作数部分包含着该操作 数所在的内存地址。这种指令寻址方式称为存储器寻址
第3章寻扯方式和指令系统 每个存储单元在存储器中所具有的地址称为存储单元的物理 地址,段基地址(简称段地址)是指每一段的起始地址,单元与段 基地址的距离称为段内偏移地址,也叫偏移量。物理地址是由存 储单元所在段的基地址和段内偏移地址这两个部分组成。以MOV 指令为例,若有 Mov dS: BUFFER, AL 这里,DS: BUFFER表示内存的某一单元地址,称为逻辑地址。DS 对于实地址方式就是段基址,对于保护方式则可通过段管理部件 形成段基址。 BUFFER为段内偏移地址,段内偏移地址有16位和32 位两种。段基址和段内偏移地址相加,形成线性地址,对实地址 方式而言,该线性地址就是物理地址。对保护方式而言,线性地 址经管理部件再变换成32位物理地址
第3章 寻址方式和指令系统 每个存储单元在存储器中所具有的地址称为存储单元的物理 地址,段基地址(简称段地址)是指每一段的起始地址,单元与段 基地址的距离称为段内偏移地址,也叫偏移量。物理地址是由存 储单元所在段的基地址和段内偏移地址这两个部分组成。以MOV 指令为例,若有: MOV DS∶BUFFER,AL 这里,DS∶BUFFER表示内存的某一单元地址,称为逻辑地址。DS 对于实地址方式就是段基址,对于保护方式则可通过段管理部件 形成段基址。BUFFER为段内偏移地址,段内偏移地址有16位和32 位两种。段基址和段内偏移地址相加,形成线性地址,对实地址 方式而言,该线性地址就是物理地址。对保护方式而言,线性地 址经管理部件再变换成32位物理地址
,第3章寻址方式和指令系统 段内偏移地址可以由基址寄存器内容、变址寄存器内容、 比例因子和位移量这4个基本部分组合而成。由4个基本部分组 合而成的偏移地址称为有效地址EA( Effective Address),比 例因子可取1、2、4、8中的任一个,基址寄存器内容、变址寄 存器内容和位移量可为正数也可为负数。有效地址EA的组合及 计算方法是 有效地址EA=基址+(变址×比例因子)十位移量
第3章 寻址方式和指令系统 段内偏移地址可以由基址寄存器内容、变址寄存器内容、 比例因子和位移量这4个基本部分组合而成。由4个基本部分组 合而成的偏移地址称为有效地址EA(Effective Address),比 例因子可取1、2、4、8中的任一个,基址寄存器内容、变址寄 存器内容和位移量可为正数也可为负数。有效地址EA的组合及 计算方法是: 有效地址EA=基址+(变址×比例因子)+位移量
,第3章寻址方式和指令系统 可用作基址、变址的寄存器和比例因子、位移量的取值规 定是: ●工作于实地址方式下的16位寻址:基址寄存器可以是BX 或BP寄存器,变址寄存器可以是SI或D寄存器,比例因子或者 没有或者为1。位移量可以是0、8位或16位 ●工作于保护方式下的32位寻址:基址寄存器可以是任何 32位通用寄存器中的一个,变址寄存器可以是除ESP外的任何32 位通用寄存器中的一个,比例因子可以是1、2或4或8,位移量 可以是0、8位或32位
第3章 寻址方式和指令系统 可用作基址、变址的寄存器和比例因子、位移量的取值规 定是: ● 工作于实地址方式下的16位寻址:基址寄存器可以是BX 或BP寄存器,变址寄存器可以是SI或DI寄存器,比例因子或者 没有或者为1。位移量可以是0、8位或16位。 ● 工作于保护方式下的32位寻址:基址寄存器可以是任何 32位通用寄存器中的一个,变址寄存器可以是除ESP外的任何32 位通用寄存器中的一个,比例因子可以是1、2或4或8,位移量 可以是0、8位或32位
,第3章寻址方式和指令系统 3.1.2数据寻址方式 1.立即数寻址 直接出现在指令中的操作数称为立即数,它紧跟在操作码的 后面,其本身就是代码的一部分,这种寻址方式叫做立即数寻址 立即数可以是8位、16位或32位。 例3-1 MOV AL, 20 MOV BX, 2568H MOV ECX, 25685678H 这3条指令中的立即数依次是8位、16位和32位,对应的寄存器也 分别是8位的AL、16位的BX和32位的ECX。执行指令 MOV BX, 2568H的结果是(BX)=2568H,执行过程见图3-1
第3章 寻址方式和指令系统 3.1.2 数据寻址方式 1.立即数寻址 直接出现在指令中的操作数称为立即数,它紧跟在操作码的 后面,其本身就是代码的一部分,这种寻址方式叫做立即数寻址。 立即数可以是8位、16位或32位。 例3-1 MOV AL, 20 MOV BX, 2568H MOV ECX,25685678H 这3条指令中的立即数依次是8位、16位和32位,对应的寄存器也 分别是8位的AL、16位的BX和32位的ECX。执行指令MOV BX, 2568H的结果是(BX)=2568H ,执行过程见图3-1
,第3章寻址方式和指令系统 说明: ①立即数只能作源操作数,不能作为目的操作数,一般用 于给寄存器赋初值; ②立即数既可以是二进制数、十进制数,也可以是十六进 制数; ③低位字节数存放在存储单元的低地址字节,高位字节数 存放在存储单元的高地址字节,如: MOV AX,im中的立即数im, 其低8位字节im1存储在低地址字节单元中,高8位字节im存储在 高地址字节单元中,指令的存储与执行过程如图3-2所示
第3章 寻址方式和指令系统 说明: ① 立即数只能作源操作数,不能作为目的操作数,一般用 于给寄存器赋初值; ② 立即数既可以是二进制数、十进制数,也可以是十六进 制数; ③ 低位字节数存放在存储单元的低地址字节,高位字节数 存放在存储单元的高地址字节,如:MOV AX,im中的立即数im, 其低8位字节iml存储在低地址字节单元中,高8位字节imh存储在 高地址字节单元中,指令的存储与执行过程如图3-2所示
,第3章寻址方式和指令系统 CS段 BX 操作码 25H 68H 68H 25H 高 图3-1例3-1立即数寻址示意图
第3章 寻址方式和指令系统 图3-1 例3-1立即数寻址示意图 25H 68H 操 作 码 68H 25H BX … … CS段 低 高
,第3章寻址方式和指令系统 CS段 低 AX 操作码 Ah AL iml imh 高 图3-2立即数寻址及数据存储示意图
第3章 寻址方式和指令系统 图3-2 立即数寻址及数据存储示意图 AH AL 操 作 码 iml imh AX … … CS段 低 高
,第3章寻址方式和指令系统 2.寄存器寻址 寄存器寻址又称寄存器直接寻址。操作数直接存放在寄存 器中,由指令指定的寄存器进行寻址,即操作数包含在指令规 定的8位、16位或32位寄存器中。如: INC DL MOV DS, AX Mov EBX, ECX 三条指令表明操作数分别存于8位D、16位的AX和32位的ECX中
第3章 寻址方式和指令系统 2.寄存器寻址 寄存器寻址又称寄存器直接寻址。操作数直接存放在寄存 器中,由指令指定的寄存器进行寻址,即操作数包含在指令规 定的8位、16位或32位寄存器中。如: INC DL MOV DS,AX MOV EBX,ECX 三条指令表明操作数分别存于8位DL、16位的AX和32位的ECX中