汇編语言程序设计 第3章指令系统和寻址方式 汇编指令格式 寻址方式 8086指令系统 ◆80X86及 Pentium扩展指令
汇编语言 程序设计 第3章 指令系统和寻址方式 ◆ 汇编指令格式 ◆ 寻址方式 ◆ 8086指令系统 ◆ 80X86及Pentium扩展指令
汇編语言程序设计 3.1汇编指令格式 计算机中的一条指令通常包含两部分 操作码‖操作数 依据操作数的个数划分,80X86CPU指令 系统中的指令格式最常用的有:双操作数指 令、单操作数指令和元操作数指令
汇编语言 程序设计 3.1 汇编指令格式 计算机中的一条指令通常包含两部分: 依据操作数的个数划分,80X86CPU指令 系统中的指令格式最常用的有:双操作数指 令、单操作数指令和无操作数指令。 操作码 操作数
汇編语言程序设计 1、双操作数指令汇编格式及操作规定 格式:[标号:]操作爸OPD,OPS[;注释] 操作规定: (1)OPD与0PS应为同种操作类型且类型明确,即同为 字节类型或字类型。 (2)OPD不能是文即数。 (3)OPS和OPD不能同时为夺储器操作数,即:或者是 OPS和OPD中至少有一个为寄存器操作数。或者 是0PD为存储器操作数,OPS为立即数。 (4)操作结東后,运算结果存入OPD中,OPS内容不变
汇编语言 程序设计 1、双操作数指令汇编格式及操作规定 格式:[标号:] 操作符 OPD,OPS [;注释] 操作规定: (1)OPD与OPS应为同种操作类型且类型明确,即同为 字节类型或字类型。 (2)OPD不能是立即数。 (3)OPS和OPD不能同时为存储器操作数,即:或者是 OPS和OPD中至少有一个为寄存器操作数,或者 是OPD为存储器操作数,OPS为立即数。 (4)操作结束后,运算结果存入OPD中,OPS内容不变
汇編语言程序设计 2、单操作数指令汇编格式及操作规定 格式:[标号:]蠊作0PD[;注释] 操作规定 (1)OPD类型必须明确即为字节类型或字类型,不能 是模糊类型。 (2)操作对隶为目的操作数,操作结束后结果存入 OPD中。 (3)OPD不能是立即数,只能是寄存器操作数或存储 器操作数
汇编语言 程序设计 2、单操作数指令汇编格式及操作规定 格式:[标号:] 操作符 OPD [;注释] 操作规定: (1)OPD类型必须明确即为字节类型或字类型,不能 是模糊类型。 (2)操作对象为目的操作数,操作结束后结果存入 OPD中。 (3)OPD不能是立即数,只能是寄存器操作数或存储 器操作数
汇編语言程序设计 3、无操作数指令汇编格式及操作规定 格式:[橛号:]操作符[;注释] 操作规定:指令中只冇操作码,不含操作数,这 种指令有两种可能: (1)无卿任何操作数。如停机指令、空操作指令等。 (2)所操作数是隐含指定的,操作时取固定操作 數进行操作
汇编语言 程序设计 3、无操作数指令汇编格式及操作规定 格式:[标号:] 操作符 [;注释] 操作规定:指令中只有操作码,不含操作数,这 种指令有两种可能: (1)无需任何操作数。如停机指令、空操作指令等。 (2)所需操作数是隐含指定的,操作时取固定操作 数进行操作。 返回
汇編语言程序设计 3.2寻址方式 寻找指令中所需操作数存放地址的方式或程序 转移时寻找转移地址的方式称为寻址方式,因而寻 址方式分为两大类,一类是数据寻址方式,另一类 是转移地址寻址方式。 由于80X86指令涉及四种操作数:立即操作数、 寄存器操作数、存储器操作数和隐含操作数.因此 数据寻址方式叉可对应四种寻址方式,即:立即寻 址、寄存器寻址、存储器寻址和固定寻址
汇编语言 程序设计 3.2 寻址方式 寻找指令中所需操作数存放地址的方式或程序 转移时寻找转移地址的方式称为寻址方式,因而寻 址方式分为两大类,一类是数据寻址方式,另一类 是转移地址寻址方式。 由于80X86指令涉及四种操作数:立即操作数、 寄存器操作数、存储器操作数和隐含操作数,因此, 数据寻址方式又可对应四种寻址方式,即:立即寻 址、寄存器寻址、存储器寻址和固定寻址
汇編语言程序设计 1、立即寻址 此寻址方式所提供的操作数直接包含在指令中 它紧跟在指令操作码后面,存放在存储器代码段中。 立即操作数可以是8位,也可以是16位。 汇编格式:n(n是用8位或16位二选制补码表示的有号数) 例3.1】 MOV AX,1234H 立即寻址方式用來表示常数。它常用于给寄存器 赋初值。需要强调的是,立即寻址只能用于源操作 数,不能用于目的操作数
汇编语言 程序设计 1、立即寻址 此寻址方式所提供的操作数直接包含在指令中, 它紧跟在指令操作码后面,存放在存储器代码段中。 立即操作数可以是8位,也可以是16位。 汇编格式:n (n是用8位或16位二进制补码表示的有符号数) 【例3.1】 MOV AX,1234H 立即寻址方式用来表示常数,它常用于给寄存器 赋初值。需要强调的是,立即寻址只能用于源操作 数,不能用于目的操作数
汇編语言程序设计 2、寄存器寻址 此寻址方式的操作数直接存放在由指令指明的岢存器中 在沁编指令中直接书写岢存器名,如16位寄存器操作教可以 是AⅩ、BX、CX、DX、SI、DI、BP、SP、DS、ES、SS、CS眷; 讧岢存器操作数可以是A、AL、B、BL、CH、CL、DH、DL。 汇编格式:R(其中R表示寄存器名) 此寻址方式由于存取操作数直接从CPU內部岢存器中获得 不辯访问存储器,因而指令执行的速度快。 岢存器寻址既可用于源操作教。又可用于目的操诈数,应用 频率高。 例3.2】 MOV DS,AX ADD CL. AH
汇编语言 程序设计 2、寄存器寻址 此寻址方式的操作数直接存放在由指令指明的寄存器中。 在汇编指令中直接书写寄存器名,如16位寄存器操作数可以 是AX、BX、CX、DX、SI、DI、BP、SP、DS、ES、SS、CS等;8 位寄存器操作数可以是AH、AL、BH、BL、CH、CL、DH、DL。 汇编格式: R (其中R表示寄存器名) 此寻址方式由于存取操作数直接从CPU内部寄存器中获得, 不需访问存储器,因而指令执行的速度快。 寄存器寻址既可用于源操作数,又可用于目的操作数,应用 频率高。 【例3.2】 MOV DS,AX ADD CL,AH
汇編语言程序设计 3、存储器寻址 存储器寻址方式的操作数都是存放在存储器中,一般是 数据段、附加段、堆栈段中的存储单元。指令中给出的是存 储单元的地址或产生存储单元地址的表达式。在汇编语言源 程序中。存储单元地址是采用逻辑地址的形弌表示的,即 段首址∶段内偏簃地址。段首址存放在棊个段岢存器中,段 內偏移地址是指夺放操作数的存储单元与段起始地址(段首 址)之间的距离(字节数),又可称为“有效地址”,记作 EA。有效地址EA是由3个地址分量的棊种组合求得,这3个地 址分量是:位移量、基址、变址。 这3个地址分量的不同组合,使形成有效地址EA的方法不同, 相应有以下5种不同的存储器操作数寻扯方式
汇编语言 程序设计 3、存储器寻址 存储器寻址方式的操作数都是存放在存储器中,一般是 数据段、附加段、堆栈段中的存储单元。指令中给出的是存 储单元的地址或产生存储单元地址的表达式。在汇编语言源 程序中,存储单元地址是采用逻辑地址的形式表示的,即: 段首址:段内偏移地址。段首址存放在某个段寄存器中,段 内偏移地址是指存放操作数的存储单元与段起始地址(段首 址)之间的距离(字节数),又可称为“有效地址”,记作 EA。有效地址EA是由3个地址分量的某种组合求得,这3个地 址分量是:位移量 、基址 、变址 。 这3个地址分量的不同组合,使形成有效地址EA的方法不同, 相应有以下5种不同的存储器操作数寻址方式
汇編语言程序设计 (1)直接寻址 直接寻址是最筒单的存储器寻址。这种寻址。操作教的有效地址EA 由指令直接给出。它主要用于存取简单变量。 汇編格式:(a)[常量](b)变量或含有变量的表达式 【例3.3】 MOv AL,[1000 MOV VAL BX 对使用直接寻址方式卿说明以下几点: 操作数默认夺放在数据段中,段岢夺器DS在指令格式无须指定。 若操作数在代码段、堆棁段或附加段中,则在指令格式中必须指定相 应的段岢存器名。在操作数地址之前使用缀指出段岢存器名,这种前缀 称为段超越前綴。 指令中操作数的EA即可以是一个数字,也可以是一个符号地址。当EA 是一个数时,一定要注意立即寻址方式与直接寻址方式的区别。 ●直接寻方式适合于处理存储器的单个存储单元
汇编语言 程序设计 (1)直接寻址 直接寻址是最简单的存储器寻址,这种寻址,操作数的有效地址EA 由指令直接给出。它主要用于存取简单变量。 汇编格式:(a)[ 常量 ] (b)变量 或 含有变量的表达式 【例3.3】 MOV AL,[ 1000H ] MOV VAL,BX 对使用直接寻址方式需说明以下几点: ● 操作数默认存放在数据段中,段寄存器DS在指令格式无须指定。 ● 若操作数在代码段、堆栈段或附加段中,则在指令格式中必须指定相 应的段寄存器名。在操作数地址之前使用前缀指出段寄存器名,这种前缀 称为段超越前缀。 ● 指令中操作数的EA即可以是一个数字,也可以是一个符号地址。当EA 是一个数字时,一定要注意立即寻址方式与直接寻址方式的区别。 ● 直接寻址方式适合于处理存储器的单个存储单元