与数据有关的寻址方式 立即寻址方式 操作数直接存放在指令中,紧跟在操作码之后,它作 为指令的一部分存放在代码段里,这种操作数称为立 即数 立即数可以是8位的或者16位的。(386之后的机器也 可以是32位的) 立即数方式用来表示常数,它经常用来给寄存器赋初 值。只能用于源操作数字段,不能用于目的操作数字 段,且源操作数长度应与目的操作数长度一致
◼ 与数据有关的寻址方式 ◼ 立即寻址方式 ◼ 操作数直接存放在指令中,紧跟在操作码之后,它作 为指令的一部分存放在代码段里,这种操作数称为立 即数。 ◼ 立即数可以是8位的或者16位的。(386之后的机器也 可以是32位的) ◼ 立即数方式用来表示常数,它经常用来给寄存器赋初 值。只能用于源操作数字段,不能用于目的操作数字 段,且源操作数长度应与目的操作数长度一致
立即数寻址方式举例 MOV AL, 5 →指令执行后(AL)=05H MOV AX3064H-指令执行后(AX)=3064H OP 64 指令 30
◼ 立即数寻址方式举例 MOV AL, 5 ----------→ 指令执行后(AL)= 05H MOV AX, 3064H ------→ 指令执行后(AX)= 3064H 64 30 ………… ………… OP ………… 指令 AX
寄存器寻址 操作数在寄存器中,指令中指定寄存器号。 16位的操作数,寄存器可以是AX,BX,CX,DX,SI, DI,SP,BP。 8位的操作数,寄存器可以是AH,AL,BH,BL,CH, C L, Dh, DL 例:MOVA以,BX 指令执行前:(AX)=3064H(BX)=1234H 指令执行后:(AX)=1234H(BX)=1234H 这种方式中,不需要访问存储器来取得操作数, 所以这种方式可以得到较高的运算速度
◼ 寄存器寻址 ◼ 操作数在寄存器中,指令中指定寄存器号。 ◼ 16位的操作数,寄存器可以是 AX,BX,CX,DX,SI, DI,SP,BP。 ◼ 8位的操作数,寄存器可以是 AH,AL,BH,BL,CH, CL,DH,DL。 例: MOV AX , BX 指令执行前: (AX)= 3064H (BX)= 1234H 指令执行后: (AX)= 1234H (BX)= 1234H 这种方式中,不需要访问存储器来取得操作数, 所以这种方式可以得到较高的运算速度
立即数寻址 不需要计算操作数的地址 寄存器寻址 直接寻址 寄存器间接寻址 寄存器相对寻址 需要计算操作数的有效地址 基址变址寻址 相对基址变址寻址
立即数寻址 寄存器寻址 直接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址 相对基址变址寻址 不需要计算操作数的地址 需要计算操作数的有效地址
操作数的地址 段地址+□偏移地址 我们把这个偏移地址称为有效地址(EA) 有效地址(EA)=基址+变址+位移量 存放在指令中的一个8位、16位的数, 但它不是立即数,而是一个地址。 存放在变址寄存器(SI,DI)中的内容,它通常用 来访问数组中的某个元素或字符串中的某个字符 存放在基址寄存器(BXBP)中的内容,它是有效地址中的 基址部分,通常用来指向数据段中数组或字符串的首地址
操作数的地址 段地址 + 偏移地址 我们把这个偏移地址称为有效地址(EA) 有效地址(EA)= 基址 + 变址 + 位移量 存放在指令中的一个8位、16位的数, 但它不是立即数,而是一个地址。 存放在变址寄存器(SI,DI)中的内容,它通常用 来访问数组中的某个元素或字符串中的某个字符 存放在基址寄存器(BX,BP)中的内容,它是有效地址中的 基址部分,通常用来指向数据段中数组或字符串的首地址