第3章8086的寻址方式和指令系统 概述 3.180868088寻址方式 32指令的机器码表示方法 338086指令系统_
第3章 8086的寻址方式和指令系统 概述 3.1 8086/8088寻址方式 3.2 指令的机器码表示方法 3.3 8086指令系统
指令:让计算机完成某种操作的命令称为指令 2.指令系统:指令的集合即为指令系统。 3.指令的一般格式: 「标号:操作码[操作数][,操作数];[注释 计算机中的指令由标号、操作码字段和操作数字段组成。 I1:任选项。 标号字段:是一个任选字段,性质为符号偏移量,一般用于标记 跳转指令的目的地址.在汇编过程中标号会被替换为一个16位的 数值偏移量.标号必须位于语句开头,结尾必须使用冒号。 操作码字段:也称为指令助记符,指令助记符是必不可少的,指 计算机所要执行的操作,或称为指出操作类型,是一种助记符
1. 指令:让计算机完成某种操作的命令称为指令。 2. 指令系统:指令的集合即为指令系统。 3. 指令的一般格式: [标号:] 操作码 [操作数] [,操作数] ;[注释] 计算机中的指令由标号、操作码字段和操作数字段组成。 [ ]:任选项。 标号字段:是一个任选字段,性质为符号偏移量,一般用于标记 跳转指令的目的地址.在汇编过程中标号会被替换为一个16位的 数值偏移量.标号必须位于语句开头,结尾必须使用冒号。 操作码字段:也称为指令助记符,指令助记符是必不可少的,指 计算机所要执行的操作,或称为指出操作类型,是一种助记符
操作数字段:指在指令执行操作的过程中所需要的操作数。该 字段除可以是操作数本身外,也可以是操作数地址或是地址的 一部分,还可以是指向操作数地址的指针或其它有关操作数的 信息。 注释字段:是一个任选字段,用于说明程序片段或指令的功能 汇编过程中不处理这样的字段,它只是用于提高源程序的可读 性.注释必须使用分号作为开始。注释是对该条或该段程序的 解释,可选项。 不同的计算机有不同的指令系统,汇编语言的指令语句都与 机器指令一一对应,汇编语言通过汇编程序将其翻译成机器指令 代码(目标代码),让CPU执行某种操作。 BVCK
操作数字段:指在指令执行操作的过程中所需要的操作数。该 字段除可以是操作数本身外,也可以是操作数地址或是地址的 一部分,还可以是指向操作数地址的指针或其它有关操作数的 信息。 注释字段:是一个任选字段,用于说明程序片段或指令的功能, 汇编过程中不处理这样的字段,它只是用于提高源程序的可读 性.注释必须使用分号作为开始。注释是对该条或该段程序的 解释,可选项。 不同的计算机有不同的指令系统,汇编语言的指令语句都与 机器指令一一对应,汇编语言通过汇编程序将其翻译成机器指令 代码(目标代码),让CPU执行某种操作
3.18086/8088寻址方式 寻址方式:指令中用于说明操作数所在地址的方法,或者说是为 获取实际操作数地址而采取的方法称为寻址方式。8086/8088 的基本寻址方式有七种。 31立即寻址 312直接寻址 313寄存器寻址 3.1.4寄存器间接寻址 35寄存器相对寻址(直接变址寻址、变址寻址) 36基址变址寻址_ 3.17相对基址变址寻址 NEX
3.1 8086/8088寻址方式 寻址方式:指令中用于说明操作数所在地址的方法,或者说是为 获取实际操作数地址而采取的方法称为寻址方式。8086/8088 的基本寻址方式有七种。 3.1.1 立即寻址 3.1.2 直接寻址 3.1.3 寄存器寻址 3.1.4 寄存器间接寻址 3.1.5 寄存器相对寻址(直接变址寻址、变址寻址) 3.1.6 基址变址寻址 3.1.7 相对基址变址寻址
311立即寻址 定义:操作数直接由指令提供的寻址方式称为立即寻址方式 在立即寻址方式中所提供的操作数直接包含在指令中。它紧跟 在操作码的后面,与操作码一起放在代码段区城中。如图所示 例如: MOV AX,3000H 立即数:直接由指令提供的 操作码 代 AHAL 00段 具体操作数称为立即数。 30
3.1.1 立即寻址 定义:操作数直接由指令提供的寻址方式称为立即寻址方式。 在立即寻址方式中所提供的操作数直接包含在指令中。它紧跟 在操作码的后面,与操作码一起放在代码段区域中。如图所示。 例如: MOV AX, 3000H 立即数:直接由指令提供的 具体操作数称为立即数
特点: (1)立即数可以是8位的,也可以是16位的。若是16位的,则 存储时低位在前,高位在后。只能是整数,不能是小数、变量或 其它数据类型。 (2)立即数只能作为源操作数,立即寻址主要用来给寄存器或 存储器赋初值。 (3)速度快(操作数直接由指令中获得,不需要运行总线周期) (4)立即数作为指令操作码的一部分与操作码一起放在代码段 区城中。 (5)指令的长度较长,灵活性较差
特点: (1)立即数可以是8位的,也可以是16位的。若是16位的,则 存储时低位在前,高位在后。只能是整数,不能是小数、变量或 其它数据类型。 (2)立即数只能作为源操作数,立即寻址主要用来给寄存器或 存储器赋初值。 (3)速度快(操作数直接由指令中获得,不需要运行总线周期) (4)立即数作为指令操作码的一部分与操作码一起放在代码段 区域中。 (5)指令的长度较长,灵活性较差
【例3.1 MOV AX,10 执行后(AX)=? 其中:源操作数为立即寻址方式,立即数为10,存放在指令的下 单元 图形表示: 指令 执行:10→AX 执行后:(AX)=000AH BUCK
【例3.1】MOV AX, 10 执行后(AX)=? 其中:源操作数为立即寻址方式,立即数为10,存放在指令的下 一单元。 图形表示: 执行:10→AX 执行后:(AX)=000AH
3.12直接寻址 定义:操作数的有效地址EA直接由指令直接提供的寻址方式称为 直接寻址方式。 在直接寻址方式中操作数地址的16位偏移量直接包含在指令 中,它与操作码一起存放在代码段区城,操作数一般在数据段 区域中,它的地址为数据段寄 3000 操作码 存器DS加上这16位地址偏移 代码段 00偏移量低字节 量。如图所示。 200 0 20偏移量高字节 例如: MOV AX,DS: [2000H]; 32000 AHA|32000 数据段
3.1.2 直接寻址 定义:操作数的有效地址EA直接由指令直接提供的寻址方式称为 直接寻址方式。 在直接寻址方式中操作数地址的16位偏移量直接包含在指令 中,它与操作码一起存放在代码段区域,操作数一般在数据段 区域中,它的地址为数据段寄 存器DS加上这16位地址偏移 量。如图所示。 例如:MOV AX,DS: [2000H];
特点: (1)如果指令中没有指明操作数存放在哪一段,则系统默认为 数据段DS。如上例可写成: MOV AX,[2000H] 2)操作数的有效地址与操作码一起存放在代码段区域,操作 数一般在数据段区城中。 (3)直接寻址是对存储器进行访问时可采用的最简单的形式。 这种寻址方法是以数据段的地址为基础,可在多达64KB的范围 内寻找操作数 4)操作数的实际地址为数据段寄存器DS左移4位加上操作数 的有效地址(16位地址偏移量)16位地址偏移量
特点: (1)如果指令中没有指明操作数存放在哪一段,则系统默认为 数据段DS。如上例可写成: MOV AX,[2000H] (2)操作数的有效地址与操作码一起存放在代码段区域,操作 数一般在数据段区域中。 (3)直接寻址是对存储器进行访问时可采用的最简单的形式。 这种寻址方法是以数据段的地址为基础,可在多达64KB的范围 内寻找操作数。 (4)操作数的实际地址为数据段寄存器DS左移4位加上操作数 的有效地址( 16位地址偏移量)16位地址偏移量
(5)段超越前缀:如果要对除DS以外的其他段寄存器(代码段、 堆栈段和附加段)所指出的存储区进行直接寻址,应在指令中指 定段寄存器---段超越前缀。如: MOV AX,[2000H];数据段(可省略Ds) MOV BX,Es:[3000H];操作数在附加段Es(不能省略ES (6)直接寻址的地址如果是数值地址,则必须用“[]括起来, 以区别立即数。允许用符号地址(即程序中的标号)代替数值地 址
(5)段超越前缀:如果要对除DS以外的其他段寄存器(代码段、 堆栈段和附加段)所指出的存储区进行直接寻址,应在指令中指 定段寄存器-----段超越前缀。如: MOV AX,[2000H] ;数据段(可省略DS ) MOV BX,ES:[3000H] ;操作数在附加段ES (不能省略ES ) (6)直接寻址的地址如果是数值地址,则必须用“[ ]”括起来, 以区别立即数。允许用符号地址(即程序中的标号)代替数值地 址