2019/9/11 到MOV IBPI,Ax 80000 执行前:(SS=1000H, 2000 (BP=3000H 例:MOV BX,DI 62000 (AXN=1234H 10000 (DS)=6000H A组 +000 60 执行后:PA=13000H 1000 (D0)=2000H (13000=1234H PA=62000H (62000H)-=50A0H (BX)=50A0H 存端问接导址方过 BX,[DI] 22 赛存酵相对寻址方式(Register relative addressing) 或基、变址寻址(Index Addressing). 地址对应BXS/DI寄存需默认是DS,对应BP膏存馨默 认是S$:可用段相越前服改变。 操作数的有效地址是一个基址或变址寄存器的内容和指令中指定 的8位或16位位移量(displacement)之和。 80 8位位整量 PA=16d x (DS)+ (SI) (DI) 16位位卷量 8位位移量 (EP) 队 8位位移量 (sI) 16位位移量 PA=16d x (SS)+(BP) L16位位移量 DI) 23 24 6
2019/9/11 6 例:MOV BX,[DI] (DS)=6000H (DI)=2000H PA=62000H (62000H)=50A0H (BX)=50A0H 寄存器间接寻址方式 MOV BX,[DI] 6000H 2000H DS DI 6 0 0 0 0 + 2 0 0 0 6 2 0 0 0 . AOH 50H . 62000H 50H A0H BH BL 数 据 段 例: MOV [BP], AX 执行前: (SS)=1000H , (BP)=3000H , (AX)=1234H 执行后:PA=13000H (13000H)=1234H 1000H 3000H SS BP 1 0 0 0 0 + 3 0 0 0 1 3 0 0 0 . 34H 12H . 13000H 12H 34H AH AL 堆 栈 段 寄存器间接寻址方式 MOV [BP], AX 操作数的有效地址是一个基址或变址寄存器的内容和指令中指定 的8位或16位位移量(displacement)之和。 EA = (BX) (SI) (DI) + 8位位移量 16位位移量 (BP) (五) 寄存器相对寻址方式(Register relative addressing) 或基、变址寻址 (Index Addressing) PA=16d ×(DS)+ (BX) (SI) (DI) + 8位位移量 16位位移量 PA=16d ×(SS)+ (BP) + 8位位移量 16位位移量 • 段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默 认是SS;可用段超越前缀改变。 21 22 23 24
2019/9/11 例: MOV AX,COUNT BPI 用途:这种寻址方式也用于表格处理。 或MOV AX,ICOUNT+BP ] 表格首地址COUNT 或MOV AX,COUNT+HBPI 修改基址或变址寄存器来取得表格中的值, COUNT为16位位移量. 代得表 例:某数据表的首地址为COUNT 28 指令执行前:(S9=5000H 欲读取表中第10个数据,存放到(4L)中。 (BP)=3000H. 000 第10个数据的有效地址:EA=COUNT+9 COUNT-2040H 4 (AX=1234H MOV SI,09H MOV AL,[SH+COUNT] 指令执行后:EA=5040H PA=55040H 直接变址寻址方式也可以使用段跨越前掇 (55040H=5548 寄存器相对寻址方式 MOV AX.COUNTIBPI MOV DL,ES:STRING[SI] (AX=5548H 25 26 (六)基址加变址寻址方式 (Based indexed addressing) 参有段跨越前缀之外,形成物理地址有二种方式: 作数的有效地址是 个基址寄存器 个变址寄存器的 内容之和,基址寄存器名和变址寄存器名均有指令指定。 (SI) PA=16dx(DS)+(BX) (SI) (DI) EA=(BX) (DI) (SI) (SI) PA=16dX(SS)+(BP) EA=(BP) (DH (DI) 27
2019/9/11 7 例: MOV AX, COUNT [BP] 或MOV AX, [COUNT+BP] 或MOV AX, COUNT+[BP] COUNT为16位位移量。 指令执行前: (SS)=5000H, (BP)=3000H, COUNT=2040H, (AX)=1234H 指令执行后:EA=5040H PA=55040H (55040H)=5548H (AX)=5548H 寄存器相对寻址方式 MOV AX,COUNT[BP] OP OP 40H 20H . . 48H 55H . 55H 48H 存储器 操 作 码 位移量 COUNT 代 码 段 堆 栈 段 55040H 50000H AH AL 用途:这种寻址方式也用于表格处理。 表格首地址COUNT 修改基址或变址寄存器来取得表格中的值。 例:某数据表的首地址为COUNT 欲读取表中第10个数据,存放到(AL)中。 第10个数据的有效地址: EA= COUNT + 9 MOV SI , 09H MOV AL , [SI+COUNT] * 直接变址寻址方式也可以使用段跨越前缀 MOV DL,ES:STRING[SI] 操作数的有效地址是一个基址寄存器和一个变址寄存器的 内容之和,基址寄存器名和变址寄存器名均有指令指定。 ( B P ) + ( D I ) ( S I ) E A = ( B X ) + ( D I ) ( S I ) E A = (六) 基址加变址寻址方式 (Based indexed addressing) 除有段跨越前缀之外,形成物理地址有二种方式: P A = 1 6 d× ( D S ) + ( B X ) + ( D I ) ( S I ) PA=16d× (SS)+ (BP) + (DI) (SI) 25 26 27 28
2019/9/11 MOV AX.IBXJISI 存神最 或MOV AX,IB+SI 都浦:这种址方式样用于数或表格处理。 执行指令前: 2000 (DS)=3200H 表格首地址盖址寄存露中, (BX)=045 费费 用变址等存居来齿问数血中的元素。 (S=1094H 烟 二个号存器部能修戒, 所以比直接变址方式更更, 执行指令后: EA=14EAH 这种寻址方式允许段跨越 其th蛮h计叶方式 PA=334EAH 使用段跨越前缀格式: (AX)=4567H MOVAX,ES:[BX]ISI] 29 30 (七)相对基址加变址寻址方式 (Relative based indexed addressing) 除有段跨越前凝之外,形成物理地址有二种方式: 操作数有效地址是一个基址寄存器和一个变址寄存器的内容 (SI) 8位位移量 和8位或16位位移量之和。 PA=16dX (DS)+(B)+ 8位位移量 (DI) 16位位移量 (SI) 16位位移量 8位位移量 PA=16dx (SS)+(BP)+ (SI) 8位位移量 16位位移量 EA=(BP) (Dr) 16位位移量 3 8
2019/9/11 8 例: MOV AX, [BX][SI] 或 MOV AX, [BX+SI] 执行指令前: (DS)=3200H, (BX)=0456H, (SI) =1094H (334EAH)=4567H 基址加变址寻址方式 MOV AX,[BX+SI] . . . 67H 45H 存储器 32000H 45H 67H 334EAH AH AL 数 据 段 . 执行指令后: EA=14EAH PA=334EAH (AX)=4567H 用途:这种寻址方式同样适用于数组或表格处理。 表格首地址 基址寄存器中, 用变址寄存器来访问数组中的元素。 二个寄存器都能修改, 所以比直接变址方式更灵。 这种寻址方式允许段跨越。 使用段跨越前缀格式: MOV AX,ES:[BX][SI] 操作数有效地址是一个基址寄存器和一个变址寄存器的内容 和8位或16位位移量之和 。 (BP) + (DI) (SI) + 8位位移量 16位位移量 EA= (BX) + (DI) (SI) + 8位位移量 16位位移量 EA= (七)相对基址加变址寻址方式 (Relative based indexed addressing) 除有段跨越前缀之外,形成物理地址有二种方式: (DI) PA=16d×(SS)+ (BP) + (SI) + 8位位移量 16位位移量 (DI) PA=16d×(DS)+ (BX) + (SI) + 8位位移量 16位位移量 29 30 31 32
2019/9/11 ,例: MOV AX,MASKIBX]IDI] 情语 MOV AX,MASK BX+DI 着MOV AX.IMASY+BX+DI 代药款 执行指令前: 美作有销主版 用途 (DS=3000H 这种寻址方式为堆栈处理提供方便: (BX-346 (D0-0500H 000 (BP)→栈顶(一般BP可指向栈顶) MASK=1234H 从栈顶到数组的首地址可以用位移量表示MASK). (32A7AH=4050H 变址寄存器(S)或(D)一指向数组中某个元素, ·执行代后: ·EA-2A7AH ·PA三32A7AH 相时基址加变 ·(AX)=4050H MOV AX.MASK 33 指令学习的注意事项 二.8086的指令系统 令的功能一该指令能够实现何种操作。通常指 数据传送类指令 令助记符就是指令功能的英文单词或其缩写形式。 指令支持的寻址方式一该指令中的操作数可以采 算术运算类指令 用何种寻址方式。 逻辑运算与移位指令 指令对标志的影响一该指令执行后是否对各个标 串操作指令 志位有影响,以及如何影响。 ·其他方面一该指令其他需要特别注意的地方,如 控制转移类指令 指令执行时的的定设置、必须预置的参数、隐含使 处理器控制类指令 用的寄存器等。 9
2019/9/11 9 • 执行指令后: • EA=2A7AH • PA=32A7AH • (AX)=4050H 例: MOV AX, MASK[BX][DI] MOV AX, MASK [BX+DI] MOV AX,[MASX+BX+DI] 执行指令前: (DS)=3000H (BX)=1346H (DI)=0500H MASK=1234H (32A7AH)=4050H 相对基址加变址 MOV AX, MASK+[BX+DI] OP OP 34H 12H . . 50H 40H 存储器 30000H 40H 50H 32A7AH AH AL 数 据 段 操 作 码 位移 量 MASK 代 码 段 用途: 这种寻址方式为堆栈处理提供方便: (BP) 栈顶(一般 BP 可指向栈顶) 从栈顶到数组的首地址可以用位移量表示(MASK). 变址寄存器(SI)或(DI)——指向数组中某个元素。 二. 8086的指令系统 数据传送类指令 算术运算类指令 逻辑运算与移位指令 串操作指令 控制转移类指令 处理器控制类指令 指令学习的注意事项 • 指令的功能——该指令能够实现何种操作。通常指 令助记符就是指令功能的英文单词或其缩写形式。 • 指令支持的寻址方式——该指令中的操作数可以采 用何种寻址方式。 • 指令对标志的影响——该指令执行后是否对各个标 志位有影响,以及如何影响。 • 其他方面——该指令其他需要特别注意的地方,如 指令执行时的约定设置、必须预置的参数、隐含使 用的寄存器等。 33 34 35 36
2019/9/11 数据传送类指令 道用数据传送类指令 一、通用数据传送类指令 1. MOV传送指今 二、输入输出数据传送指令IN/OUT 2. 堆栈操作指令PS/POP 三、地址传送指令 3. 交换指令XCH0 四、标志位传送指令 4. 查表转换指令ⅪAI(或称换码指今) 37 38 .一般传送指令MOV 。注意:立即最和段寄存毒CS不能作为目标操作教 一般传送指令具有数据复制的性质,即数 立即数不能直接传必到段寄存器: 据从源地址传送到目的地址,而源地址中的内容 两个存情单元之间不能直按传送数据 保持不变。 两个段膏存暴之间不能直按传送数据。 ·根据激据传送的源和目的的不同,又可分为: ()主存单元之间的传送。 段寄存器□ (2)从主存单元传送到寄存器。 DS,ES,SS,(CS) 通用寄存器 (3)从寄存器传送到主存单元。 立即数 AX,BX,X,DX (④寄存器之间的传送。 BP SPSI.DI 存储器 MOV指令允许传送兼据的地径 39 40 10
2019/9/11 10 数据传送类指令 一、通用数据传送类指令 二、输入输出数据传送指令IN/OUT 三、地址传送指令 四、标志位传送指令 一、通用数据传送类指令 1. MOV传送指令 2. 堆栈操作指令PUSH/POP 3. 交换指令XCHG 4. 查表转换指令XLAT(或称换码指令) • 1.一般传送指令MOV • 一般传送指令具有数据复制的性质,即数 据从源地址传送到目的地址,而源地址中的内容 保持不变。 • 根据数据传送的源和目的的不同,又可分为: • ⑴ 主存单元之间的传送。 • ⑵ 从主存单元传送到寄存器。 • ⑶ 从寄存器传送到主存单元。 • ⑷ 寄存器之间的传送。 注意:立即数和段寄存器CS不能作为目标操作数; 立即数不能直接传送到段寄存器; 两个存储单元之间不能直接传送数据; 两个段寄存器之间不能直接传送数据。 通用寄存器 AX,BX,CX,DX BP,SP,SI,DI 段寄存器 DS,ES,SS,(CS) 存储器 立即数 MOV指令允许传送数据的途径 37 38 39 40