第3章8086寻址方式和指令系统 (3P434版P24/67) 3.18086/8088的寻址方式 寻址方式:指出操作数的来源 1立即寻址:(如下页图3-1所示 操作数直接在指令中,紧跟在操作码之 后,作为指令的一部分放在码段中。 例: MOV AL,64H AL←64H MoV AX 2058H AX←2058H 西华大学电气信息学院
2 西华大学电气信息学院 第3章 8086寻址方式和指令系统 寻址方式和指令系统 (3版P43; 4版P24/67) 3.1 8086/8088的寻址方式 寻址方式:指出操作数的来源。 1 立即寻址:(如下页图3-1所示) 操作数直接在指令中,紧跟在操作码之 后,作为指令的一部分放在码段中。 例:MOV AL,64H ;AL←64H MOV AX,2058H ;AX←2058H
存储器 地址增加 AX 操作码 AH AL OP 58 代码段 20 图3-1立即寻址示意图 操作数 西华大学电气信息学院
3 西华大学电气信息学院 地 址 增 加 存储器 OP 58 20 代 码 段 AX 操作码 AH AL 图3-1 立即寻址示意图 操作数
我立即数只能为整数,且只能做源操作数 的操作数 源操作数 Mov AX, 2058H AX←2058H 西华大学电气信息学院
4 西华大学电气信息学院 立即数只能为整数,且只能做源操作数 立即数只能为整数,且只能做源操作数 MOV AX,2058H ;AX←2058H 目 的 操 作 数 源 操 作 数
2寄存器寻址 操作数就在CPU的内部寄存器中,寄存器 名由指令指出。 例: DEC BL;将BL的内容减1 MOV DX,AX;将AX中的值送入DX中 3直接寻址 操作数的偏移地址(常称有效地址EA)直 接包含在指令中,放在操作码之后,见下页 图2-2 西华大学电气信息学院
5 西华大学电气信息学院 2 寄存器寻址 操作数就在CPU的内部寄存器中,寄存器 名由指令指出。 例: DEC BL ;将BL的内容减1 MOV DX,AX ;将AX中的值送入DX中 3 直接寻址 操作数的偏移地址(常称有效地址EA)直 接包含在指令中,放在操作码之后,见下页 图2-2
例: MOV AX,[1000H 其示意图如图3-2所示 存储器 OP 00 代码段 10 AX AH AL 20000 21000 58 数据段 20 图3-2直接寻址示意 西华大学电气信息学院
6 西华大学电气信息学院 例:MOV AX,[1000H] 其示意图如图3-2所示 58 20 AH AL 00 10 21000 20000 存储器 OP 代 码 段 AX 数 据 段 图3-2 直接寻址示意
对此例,没有用前缀指明操作数在哪一段, 则默认在数据段中,设(DS)=2000H,则操作数 的物理地址为:2000+100021000 于是访问该存储器取出其内容送AX 又例:MoⅴBX,ES:[1000H 则是将BS段的1000及1001H两单元内容取出送BX 在汇编语言中,可用符号地址代替数值地址 如: MOV AX, BUFFER;其中 BUFFER为存放操作 数的符号地址 而MVAX,[ BUFFER]与上式等效 西华大学电气信息学院
7 西华大学电气信息学院 对此例,没有用前缀指明操作数在哪一段, 则默认在数据段中,设(DS)=2000H,则操作数 的物理地址为:20000+1000=21000H 于是访问该存储器取出其内容送AX 又例:MOV BX,ES:[1000H] 则是将ES段的1000H及1001H两单元内容取出送BX。 在汇编语言中,可用符号地址代替数值地址, 如:MOV AX,BUFFER;其中BUFFER为存放操作 数的符号地址. 而 MOV AX,[BUFFER]与上式等效
4寄存器间接寻址 利用这种寻址方式时,操作数在存储器中,而 操作数有效地址由BX、BP、S和D中的一个指出 若未用前缀指明,默认关系为: 对B、SⅠ、D默认在DS段中 对B默认在SS段中 例:M0VAX,[DI] 设(DS)=3000H,(DI)=2000H 该指令将32000和32001H两存储单元中的内容 送AX 西华大学电气信息学院
8 西华大学电气信息学院 4 寄存器间接寻址 寄存器间接寻址 利用这种寻址方式时,操作数在存储器中,而 操作数有效地址由BX、BP、SI和DI中的一个指出, 若未用前缀指明,默认关系为: 对BX、SI、DI默认在DS段中 对BP默认在SS段中 例:MOV AX,[DI] 设(DS)=3000H,(DI)=2000H 该指令将32000H和32001H两存储单元中的内容 送AX
5寄存器相对寻址 利用寄存器间接寻址时。允许在指令中指定 个8位或16位的位移量,这样有效地址EA的构 成为: [BXI EA= [BP] 8位位移量 ISII 16位位移量 IDII 例:M0VAX,[ COUNT+BP] 若(SS)==5000H,(BP)=3000,C0UNT=2040H 西华大学电气信息学院
9 西华大学电气信息学院 5 寄存器相对寻址 寄存器相对寻址 利用寄存器间接寻址时。允许在指令中指定 一个8位或16位的位移量,这样有效地址EA的构 成为: [BX] [BP] 8位位移量 [SI] 16位位移量 [DI] 例:MOV AX,[COUNT+BP] 若(SS)==5000H,(BP)=3000H,COUNT=2040H EA= +
则寻址示意图如图3-4所示 物理地址为: 存储器 50000+3000+2040 55040H OP OP 操作码代 40 位移量 码 20 COUNT 段 AX 50000 AH AL 55040 48 堆栈段 55 图3-4寄存器相对寻址示意图 西华大学电气信息学院
10 西华大学电气信息学院 则寻址示意图如图 则寻址示意图如图3-4所示 存储器 OP 48 55 AH AL 40 20 55040 50000 OP 物理地址为: 50000+3000+2040 =55040H 操作码 代 码 段 位移量 COUNT AX 堆 栈 段 图3-4 寄存器相对寻址示意图
6基址加变址寻址 操作数的有效地址是一个基址寄存器内容加 上一个变址寄存器内容,默认的段寄存器关系同 例:M0VAX,[BX+S 若(DS)=3200H,(BX)=0456H, (SI)=1094H, 其寻址示意图如下页图3-5所示 西华大学电气信息学院
11 西华大学电气信息学院 6 基址加变址寻址 基址加变址寻址 操作数的有效地址是一个基址寄存器内容加 上一个变址寄存器内容,默认的段寄存器关系同 上。 例:MOV AX,[BX+SI] 若(DS)=3200H,(BX)=0456H, (SI)=1094H, 其寻址示意图如下页图3-5所示