汇編语言程序设计 其中:变址存器是EAX、EBX、BCX、EDX、ESⅠ、EDⅠ、BBP之一; 比因子可以是1、2、4、8;放移量可以是0、8位或32位 此孕扯方式操作數默认在数据段,若操作數不在默认的数据段中时, 则应使用段超越前缀明确指定。 例如: MOV EAX, COUNTI EDⅠ*2];COUN是位移量,2是比例因子 其中乘以比例因子的操作是在CPU内部由硬件完成。 (2)基扯加比例变扯寻址 由变址岢存器的内容乘以比例因子加上基扯岢存器的内容再加上 移量而得到操作数有效地扯EA的寻址方式称为基址加比例变址尋址。 即:EA=[变扯岢存器]×比例因子十[基扯岢夺器]十位移量。 若基址岢存器采用EBP、ESP时,则操作数脒认在SS段中。若基扯寄存 器采用除EBP、ESP以外的其他存器时,则操作数默认在DS段中。考 操作数不在相疝的脒认段中时,则应使用段超越前缀明确指定。 例如:MOV[ESI*+EDX],EAX ;目的操作数在DS段中
汇编语言 程序设计 其中:变址寄存器是EAX、EBX、ECX、EDX、ESI、EDI、EBP之一; 比例因子可以是1、2、4、8;位移量可以是0位、8位或32位。 此寻址方式操作数默认在数据段,若操作数不在默认的数据段中时, 则应使用段超越前缀明确指定。 例如:MOV EAX,COUNT[ EDI*2 ];COUNT是位移量,2是比例因子 其中乘以比例因子的操作是在CPU内部由硬件完成。 (2) 基址加比例变址寻址 由变址寄存器的内容乘以比例因子加上基址寄存器的内容再加上位 移量而得到操作数有效地址EA的寻址方式称为基址加比例变址寻址。 即:EA= [ 变址寄存器 ]×比例因子+[ 基址寄存器 ]+位移量。 若基址寄存器采用EBP、ESP时,则操作数默认在SS段中,若基址寄存 器采用除EBP、ESP以外的其他寄存器时,则操作数默认在DS段中。若 操作数不在相应的默认段中时,则应使用段超越前缀明确指定。 例如:MOV [ ESI*4+EDX ],EAX ;目的操作数在DS段中
汇編语言程序设计 5、转移地址寻址方式 转糁地址寻址方式确定的是转移指令或调用指令转移后的地址。 可将转移地扯寻址方弌分为四种:段内直接寻址、段内间接寻址、段 间直接寻址和段间间接寻址。 (1)段内直接寻扯 段内直接寻址又称为段内相对寻址。在此寻址方式下,转移后的指令 与转移指令本身在同一代码段中。转移后指令的有效地址EA=(IP)+ 位移量。若位移量为正,则相对本指令向后转移,若为负,则相对本指 令向前转移。 汇编格式:(a) SHORT标号 (b) NEAR PTR标号 其中:橛号是符号地扯。 例如: JMP SHORT NEXT JMP NEAR PTR Ll
汇编语言 程序设计 5、转移地址寻址方式 转移地址寻址方式确定的是转移指令或调用指令转移后的地址。 可将转移地址寻址方式分为四种:段内直接寻址、段内间接寻址、段 间直接寻址和段间间接寻址。 (1) 段内直接寻址 段内直接寻址又称为段内相对寻址。在此寻址方式下,转移后的指令 与转移指令本身在同一代码段中。转移后指令的有效地址EA=(IP)+ 位移量。若位移量为正,则相对本指令向后转移,若为负,则相对本指 令向前转移。 汇编格式:(a)SHORT 标号 (b)NEAR PTR 标号 其中:标号是符号地址。 例如:JMP SHORT NEXT JMP NEAR PTR L1
汇編语言程序设计 (2)段内间接寻址 转移有效地扯是一个宇岢存器或是一个字夺储单元的内容。这个字 岢存器或字存储单元的内容可以用数据寻址方式中的存器寻址或存储 器寻址获得。所得到的转移有效地址用来取代当前的I值实现段内接 寻址。这种寻扯方式只适用于JM和CAL指令。 汇編格式:(a)R(R为16位通用岢存器) (b)存储器寻址方式之 考P和CAL指令采用格式(a),即岢存器寻址,则指令中指定的寄 存器内容便是转移地址,当CPU执行JP或CALL指令时,就将该岢存器的 内客装入IP。 若JMP和CALL指令采用格式(b)中的一种夺储器寻址时,则转移地址便 是字存储单元的内容,当CP执行JMP或CA指令时,就将该字存储单元 的内容装入IP
汇编语言 程序设计 (2) 段内间接寻址 转移有效地址是一个字寄存器或是一个字存储单元的内容。这个字 寄存器或字存储单元的内容可以用数据寻址方式中的寄存器寻址或存储 器寻址获得,所得到的转移有效地址用来取代当前的IP值实现段内间接 寻址。这种寻址方式只适用于JMP和CALL指令。 汇编格式:(a) R (R为16位通用寄存器) (b) 存储器寻址方式之一 若JMP和CALL指令采用格式(a),即寄存器寻址,则指令中指定的寄 存器内容便是转移地址,当CPU执行JMP或CALL指令时,就将该寄存器的 内容装入IP。 若JMP和CALL指令采用格式(b)中的一种存储器寻址时,则转移地址便 是字存储单元的内容,当CPU执行JMP或CALL指令时,就将该字存储单元 的内容装入IP
汇編语言程序设计 (3)段间直接寻址 此寻址方式,转移后的指令与转移指令本身不在同一代码段中。转 移地址(即IP和CS值)由指令直接给出。 汇编格式: FAR PTR标号 它只适用于M和CA指令。例如:JPI2(标号L2与本]指令不 在同一代码段中)。 (4)段间间接寻址 此寻壮方式也只适用于JM和CALL指令。转移后的指令与转移指令本 身不在同一代码中。转移地址(即IP和CS值)由采用存储器寻址方式 之一确定的双字夺储单元内容间接给出。 汇编格式:夺储器寻址方式之一 执行JMP或CALL指令时,根据指令中指定的某种存储器寻址方式找到 内存的一个双字(32位),将高字内容装入CS,将低字内容装入IP,实 觊段间转移。 例如: JMP DWORD PTR[B]
汇编语言 程序设计 (3) 段间直接寻址 此寻址方式,转移后的指令与转移指令本身不在同一代码段中。转 移地址(即IP和CS值)由指令直接给出。 汇编格式: FAR PTR 标号 它只适用于JMP和CALL指令。例如:JMP L2(标号L2与本JMP指令不 在同一代码段中)。 (4)段间间接寻址 此寻址方式也只适用于JMP和CALL指令。转移后的指令与转移指令本 身不在同一代码段中。转移地址(即IP和CS值)由采用存储器寻址方式 之一确定的双字存储单元内容间接给出。 汇编格式: 存储器寻址方式之一 执行JMP或CALL指令时,根据指令中指定的某种存储器寻址方式找到 内存的一个双字(32位),将高字内容装入CS,将低字内容装入IP,实 现段间转移。 例如: JMP DWORD PTR [BX ] 返回
汇編语言程序设计 3.38086指令系统 8086指令系统换功能可分为六大类: (1)数据传逖类指令 (2)算术运算类指令 (3)位操作指令 (4)串操作指令 (5)控制转移指令 (6)处理器控制指令 8086指令按操作数个数可划分为三种类型 (1)双操作数指令(2)单操作数指令(3)无操作数指令 学习汇编指令应从以下几方面着重理解啪握 (1)学习指令格式; (2)掌掘指令中操作数的寻址方式及寻址方式的搭配规则 (3)掌掘指令的功能及指令执行后对条件码的影响; (4)学习如何正确运用指令
汇编语言 程序设计 3.3 8086指令系统 8086指令系统按功能可分为六大类: (1)数据传送类指令 (2)算术运算类指令 (3)位操作指令 (4)串操作指令 (5)控制转移指令 (6)处理器控制指令 8086指令按操作数个数可划分为三种类型: (1)双操作数指令 (2)单操作数指令 (3)无操作数指令 学习汇编指令应从以下几方面着重理解掌握: (1)学习指令格式; (2)掌握指令中操作数的寻址方式及寻址方式的搭配规则; (3)掌握指令的功能及指令执行后对条件码的影响; (4)学习如何正确运用指令