第二节寻址方式 是指寻找操作数地址或操作数的方式。 321常见寻址方式 1.立即寻址 指令直接给出操作数。 数在指令中, 其长度固定、 定长格式:操作码0立即数S|有限 变长格式:基本指令 立即数S 数在基本指令之 后,其长度可变 ·用来提供常数、设置初值等
第二节 寻址方式 是指寻找操作数地址或操作数的方式。 操作码θ 立即数S 1. 立即寻址 指令直接给出操作数。 3.2.1 常见寻址方式 定长格式: 变长格式:基本指令 立即数S 数在指令中, 其长度固定、 有限。 数在基本指令之 后,其长度可变。 用来提供常数、设置初值等
2.直接寻址 指令直接给出操作数地址。 存储单元号(数在M中) 寄存器号(数在R中) °(1)存储器直接寻址(直接寻址 ∫定长格式|操作码0有效地址D7D的位数有限 限制访存范围 变长格式基本指令 DL D的位数可覆盖 DH 整个存储空间 s=(D)
操作码θ 有效地址D 2. 直接寻址 指令直接给出操作数地址。 存储单元号 寄存器号 (数在M中) (数在R中) (1)存储器直接寻址(直接寻址) 定长格式 D的位数有限, 限制访存范围 变长格式 基本指令 DL DH D的位数可覆盖 整个存储空间 S =(D)
●(2)寄存器直接寻址(寄存器寻址) 格式操作码日寄存器号R1R所占位数少 ●S=(R) 访问R比访问M快 用于访问固定的存储单元或寄存器。 ●3.问接寻址 指令给出操作数的间接地址。 存储单元号(数在M中) 间址单元 寄存器号(数在M中) 址指针 °(1)存储器间址 D=0030L0060 °格式操作码间接地址D 0060S S=((D))
操作码θ 寄存器号R 存储单元号 寄存器号 (数在M中) (数在M中) (2)寄存器直接寻址(寄存器寻址) 格式 R所占位数少; 访问R比访问M快 格式 S =(R) 用于访问固定的存储单元或寄存器。 3.间接寻址 指令给出操作数的间接地址。 (1)存储器间址 操作码θ 间接地址D D=0030 0060 ... 0060 S... S =((D)) M 间址单元 地址指针
●(2)寄存器间址 地址指针 R=02 格式操作码θ寄存器号R[0040 S=(R) 0040 R所占位数少;R可提供全字长地址码; 修改R内容比修改M内容快。 °指针不变(由指令指定),指针内容可变,使同一指 冷可指向不同存储单元,以实现程序的循环、共享 并提供转移地址。 ●(3)堆栈寻址 SP 格式操作码日堆栈指针SP[0070 栈顶 ●S=((SP)
操作码θ 寄存器号R (2)寄存器间址 格式 R所占位数少;R可提供全字长地址码; 修改R内容比修改M内容快。 格式 S =((R)) 指针不变(由指令指定),指针内容可变,使同一指 令可指向不同存储单元,以实现程序的循环、共享, 并提供转移地址。 (3)堆栈寻址 操作码θ 堆栈指针SP SP ... S... S =((SP)) M R=02 M 0040 0040 S... ... ... 地址指针 0070 ... 栈顶
堆栈向上生成 低 栈顶 压栈:$P自动减1,再存数。SP (SP),自减型间址。 出栈:先取数,SP再自动加1。 高 (sP)+,自增型间址。 SP既可出现在指令中,也可隐含约定。 4.变址、基址寻址及其变化 争(1)变址寻址 指令给出一个寄存器号和一个地址量,寄存 器内容与地址量之和为有效地址 格式操作码日RxD
格式 SP既可出现在指令中,也可隐含约定。 (1)变址寻址 4.变址、基址寻址及其变化 SP 栈顶 M S... ... ... 低 高 堆栈向上生成 压栈:SP自动减1,再存数。 -(SP),自减型间址。 先取数,SP再自动加1。 (SP)+,自增型间址。 出栈: 指令给出一个寄存器号和一个地址量,寄存 器内容与地址量之和为有效地址。 操作码θ RX D
格式|操作码0RxD 变址寄存器号形式地址 S=((Rx)+D) 修改量 基准地址 例用变址方式访问一组连续区间内的数组元素 D为存储区首址; a(RX为所访单元距离 D=首址 D+1 首址的长度; D+2 ●Rx初值为0,每访问 D+n-1 n-1 个单元,(RX)+1。 D的位数有限,若不能提供全字长地址码,会使 访存空间受到限制
D的位数有限,若不能提供全字长地址码,会使 访存空间受到限制。 变址寄存器号 例. 用变址方式访问一组连续区间内的数组元素。 S =((RX)+ D) D=首址 D为存储区首址; (RX)为所访单元距离 首址的长度; RX初值为0,每访问一 个单元,(RX)+1。 格式 操作码θ RX D 形式地址 修改量 基准地址 n-1 ... 0 1 2... D+1 D+2 D+n-1
●(2)基址寻址 器内容与地址量之和为有效地址。寄存 争格式操作码0RbD 基址寄存器号位移量Rb S=((Rb)+ D 4K D=2 基准地址相对于基址的位移 改变Rb的内容,程序能访问 存储空间中任何一个定长区R 间(4K)。 4K ●改变Rb的内容,程序能访问 ●存储空间中任何一个与基址 一争保持相同距离的单元
格式 改变Rb的内容,程序能访问 存储空间中任何一个定长区 间(4K)。 (2)基址寻址 基址寄存器号 Rb 4K 指令给出一个寄存器号和一个地址量,寄存 器内容与地址量之和为有效地址。 操作码θ Rb D 位移量 S =((Rb)+ D) 基准地址 相对于基址的位移 M... ... …... …... Rb 4K 改变Rb的内容,程序能访问 存储空间中任何一个与基址 保持相同距离的单元。 D=2 D=2
便于访问两维数组中某类Rb M 学生姓名 指定的元素。 性别 4K{年龄 基址方式的一种变化一 80X86计算物理地址: Rb 实模式:将段寄存器提供 生姓名 的16位基地址左移4位,与4K[年 D=2 16位偏移相加,得到20位 物理地址。 保护模式:将段表提供的 32位基地址与32位偏移相 加,得到32位物理地址
便于访问两维数组中某类 指定的元素。 实模式:将段寄存器提供 的16位基地址左移4位,与 16位偏移相加,得到20 位 物理地址。 基址方式的一种变化—— 80X86计算物理地址: 4K 4KRb M... ... …... …... R b D=2 D=2 学生姓名 性别 性别 年龄 年龄 学生姓名 保护模式:将段表提供的 32位基地址与32位偏移相 加,得到32位物理地址
●变址与基址的区别: 变址:指令提供基准量(不变),R提供修改量(可 1变);适于分地理一维数组 基址:指令提供位移量(不变),R提供基准量(可 变);用于扩大有限字长指令的访存空间。 (3)基址加变址 指令给出两个寄存器号和一个地址量,寄存 器内容与地址量之和为有效地址 ●格式操作码θRx|RbD 变址寄存器号基址寄存器号位移量 ●S=((RX)+(Rb)+D)便于处理两维数组
S =((RX)+(Rb)+ D) 格式 (3)基址加变址 变址寄存器号 指令给出两个寄存器号和一个地址量,寄存 器内容与地址量之和为有效地址。 位移量 变址与基址的区别: 变址:指令提供基准量(不变),R提供修改量(可 变);适于处理一维数组。 基址:指令提供位移量(不变),R提供基准量(可 变);用于扩大有限字长指令的访存空间。 操作码θ RX Rb D 基址寄存器号 便于处理两维数组
●S=((RX)+(Rb)+D)便于处理两维数组。 ●例.访问二维表格。 (RX) 令 Rb)+D (Rb)+D指向各行起始; s(RX)指向一行中各元素。 ●D为表格首址 ●Rb初值为0,每访问一行,Rb)+4; 争RX初值为0,每访问一列,(RX)+1。 (4)相对寻址 指令给出位移量,P0内容与位移量之和为有 效地址。 或隐含指定位移量 格式|操作码θPc|±D 有效地址相对 PG上下浮动,给 ●S=((PC)±D) 编程带来方便
S =((RX)+(Rb)+ D) 便于处理两维数组。 例. 访问二维表格。 格式 (4)相对寻址 指令给出位移量,PC内容与位移量之和为有 效地址。 位移量 操作码θ PC ±D 或隐含指定 令: (Rb)+D指向各行起始; (RX)指向一行中各元素。 (Rb)+D (RX) D为表格首址 Rb初值为0,每访问一行,(Rb)+4; RX初值为0,每访问一列,(RX)+1。 S =((PC)±D) 有效地址相对 PC上下浮动,给 编程带来方便