特点: (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)直接寻址的地址如果是数值地址,则必须用“[ ]”括起来, 以区别立即数。允许用符号地址(即程序中的标号)代替数值地 址