微机原理与接口技术 西安邮电大学计算机学院 宁晓菊
第四章 80x86 指令系统(第二讲) 第一章 微型计算机系统导论(第一讲) 本讲主要内容 1 数据寻址方式之二: 存储器寻址方式
第四章 80x86 指令系统—存储器寻址方式 存储器寻址方式 存储器寻址方式的操作数存放在存储器单元中。因此,要存取操作数就必须知道其存储器的单元地址。在指令中可以直接给出或间接给出操作数的地址,以达到存取操作数的目的。
指令中给出的地址只是操作数的有效地址(EA),并且是放在方括号(“[ ]”)中。若要从存储器中存取操作数还须得到实际的地址(物理地址)。 第四章 80x86 指令系统—存储器寻址方式 指令中给出的地址只是操作数的有效地址(EA),并且是放在方括号(“[ ]”)中。若要从存储器中存取操作数还须得到实际的地址(物理地址)。 物理地址=段基址左移四位+有效地址 CS DS SS ES 物理地址= 物理地址= × 10H × 10H + EA
第四章 80x86 指令系统—存储器寻址方式 有效地址可以由以下三种地址分量组成: ● 位移量:它是存放在指令中的一个8位或16位的数。 ● 基 址:它是存放在基址寄存器BX或BP中的内容。 ● 变 址:它是存放在变址寄存器SI或DI中的内容。
第四章 80x86 指令系统—存储器寻址方式 对于某条具体指令,这三个地址分量可有不同的组合。正是因为这三种地址分量有不同的组合,才使得对存储器操作数的寻址产生了若干种不同的方式。
第四章 80x86 指令系统—存储器寻址方式 ⑴直接寻址方式 直接寻址方式的有效地址在指令中直接给出 默认的段地址在DS段寄存器,可使用段超越前缀改变 用中括号包含有效地址,表达存储单元的内容 MOV AX, [2000H] ;AX←DS:[2000H] MOV AX, ES: [2000H] ;AX←ES:[2000H]
第四章 80x86 指令系统—存储器寻址方式 MOV AL, [1064H] EA= 16位 disp AL 64 10 45 … 代 码 操作码 64 10 45 … 代 码 段 数 据 DS:20 000H 20000H + 1064H 21064H 45 21064H 45
第四章 80x86 指令系统—存储器寻址方式 ⑵ 寄存器间接寻址 有效地址存放在基址寄存器BX、BP或变址寄存器SI、DI中 段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变
第四章 80x86 指令系统—存储器寻址方式 MOV AX, [SI] … EA= (BX) (BP) (DI) (SI) 30000H DS:30000H 50 40 … M AX + SI: 2000H 32000H 40 50 32000H 50 40
第四章 80x86 指令系统—存储器寻址方式 ⑶ 寄存器相对寻址 有效地址是寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX、BP或SI、DI 有效地址=BX/BP/SI/DI+8/16位位移量 段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变
第四章 80x86 指令系统—存储器寻址方式 MOV CL, [BX+1064H] 64 10 45 … 代 码 段 数 据 CL EA= 操作码 CL EA= (BX) (BP) (DI) (SI) + 8位 disp 16位 disp DS:20000H 20000H 21000H BX: 1000H + 1064H 22064H 45 22064H 45
第四章 80x86 指令系统—存储器寻址方式 ⑷ 基址加变址寻址方式 有效地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变
第四章 80x86 指令系统—存储器寻址方式 … MOV AH, [BP][SI] EA= (BX) (BP) + (DI) (SI) SS:40000H BP: 2000H 56H … M AH + SI: 1200H 43200H 56H 43200H 56H
第四章 80x86 指令系统—存储器寻址方式 ⑸ 基址加变址相对寻址 有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和: 有效地址=BX/BP+SI/DI+8/16位位移量 段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变
第四章 80x86 指令系统—存储器寻址方式 MOV [BX+DI+1234H], AH EA= (BX) (BP) + (DI) (SI) 8位 disp 16位 disp 34 12 … 代 码 段 数 据 操作码 45 AH 40000H DS:40000H BX: 0200H DI: 0010H + 1234H 41444H 41444H 45 45
Thank you!