第三章-80x86的寻址方式和指令系统-1

上传人:F****n 文档编号:108799473 上传时间:2019-10-25 格式:PPT 页数:50 大小:268KB
返回 下载 相关 举报
第三章-80x86的寻址方式和指令系统-1_第1页
第1页 / 共50页
第三章-80x86的寻址方式和指令系统-1_第2页
第2页 / 共50页
第三章-80x86的寻址方式和指令系统-1_第3页
第3页 / 共50页
第三章-80x86的寻址方式和指令系统-1_第4页
第4页 / 共50页
第三章-80x86的寻址方式和指令系统-1_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《第三章-80x86的寻址方式和指令系统-1》由会员分享,可在线阅读,更多相关《第三章-80x86的寻址方式和指令系统-1(50页珍藏版)》请在金锄头文库上搜索。

1、第三章,80X86的寻址方式和指令系统,3.1计算机指令的格式 符号指令的书写格式如下: 标号:操作码助记符 操作数助记符;注释 其中操作码助记符和操作数助记符是核心。 标号代表该条指令的存放地址。它为程序分支、循环、跳转提供了转移目标地址。标号与符号指令之间用冒号“:”做间隔符。 为阅读方便,每条符号指令后面,可以有注释,并用分号“;”作间隔符。 用机器指令编写的程序称为目标程序,用符号指令编写的程序称为符号程序或称汇编源程序,汇编源程序要经过汇编程序将其编辑、编译和链接才能生成CPU能识别、执行的目标程序。,3.2 机器指令格式 操作码(Op) 地址码(Ad) 操作码(Operation

2、Code) 地址码(Addressable Code),3.3 寻址方式 存放方式 包含在指令中 立即寻址(Immediate addressing) 存放在CPU中的某个寄存器 寄存器寻址(register addressing) 存放在存储器中 存储器寻址 存放在I/O接口电路的端口中 I/O端口寻址,一、操作数寻址 操作数在内存数据区,操作数字段包含着此操作数地址。 在8086/8088中,任何内存地址是由两部分组成: 段的基地址:单元所在段的基地址 (大部分情况是数据段寄存器中); 段内偏移量:此单元与段基地址的距离。 有效地址(Effective Address): 段内偏移量为适应

3、各种数据结构的需要,可以有几个部分组成,所以也把它称为有效地址。,寻址方式不同EA的构成不同。 归纳EA可有多种情况构成: 直接寻址,寄存器间接寻址,寄存器相对寻址, 基址加变址寻址,相对基址加变址寻址。 寻址方式如何寻找内存操作数。 不同寻址方式实质上是构成它段内的偏移量的方法不同。,1. 立即寻址(Immediate Addressing) 操作数直接存放在指令中,紧跟在操作码之后,作为指令 的一部分,存放在代码段里,这种操作数称为立即数。 例:MOV AX,1234H,2.寄存器寻址(Register addressing) MOV AX,BX ;将BX寄存器中的内容送入AX寄存器中,操

4、作数在寄存器中,指令指定寄存器号。 对于位操作数,寄存器可以是: ,,,。 以及段寄存器。 对于位操作数,寄存器可以是: ,。 这种寻址方式因为操作数在寄存器中 不需要访问存储器的运算速度较高。,例: 指令执行前:(AX)3064 (SS)1234 MOV SS,AX 指令执行后: (SS)3064H (AX)保持不变。,指令执行前:,指令执行后:,寄存器寻址方式,SS,AX,3064H,3064H,1234H,3064H,3.直接寻址(Direct addressing) 操作数地址的位偏移量,直接包含在指令中,存放在代码段中指令操作码之后,但操作数一般存放在数据段中,必须先求出操作数的物理

5、地址,然后再访问存储器才能取得操作数。 或(10H) 物理地址 : PA16d(DS)+EA,例:MOV AX,1200H,直接寻址方式下,操作数的段地址默认为数据段,但允许段重设,即由指令定义段。 直接寻址方式适用于处理单个变量。 IBM PC机中规定双操作数指令必须有一个操作数使用寄存器方式,这就是常常先要把一个变量送到寄存器去的原因。,4.寄存器间接寻址方式(Register indirect addressing) 操作数在存储器中, 操作数地址的16位偏移量包含在: BP、BX、SI、DI寄存器中。 1) 若选择SI、DI、BX作为间接寻址 操作数一般在现行数据段区域中,用(DS)作

6、为段地址。 即操作数物理地址为: 物理地址PA=16 d (DS)+(BX) 物理地址PA=16 d (DS)+(SI) 物理地址PA=16 d (DS)+(DI),例: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,BL,BH,数,据,段,2) 若选择BP寄存器作为间接寻址 操作数在堆栈段区域中,用SS寄存器的内容作为

7、段地址。 操作数物理地址: PA=16d (SS)+(BP) 例: 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,AL,AH,堆,栈,段,寄存器间接寻址方式 MOV BP, AX,3 ) 用 SI、DI、BX 、BP作为间接寻址允许段跨越 指令中可以指定段跨越前缀来取得其他段中的数据。 例:MOV ES:DI, AX MOV DX

8、, DS:BP 这种寻址方法可以用于表格处理。,寄存器 间接寻址,基址寻址(间址寄存器为基址寄存 器BX,BP) 变址寻址(间址寄存器为变址寄存 器SI,DI),5. 寄存器相对寻址方式(Register relative addressing) 或变址寻址 (Index Addressing) 操作数的有效地址是一个基址或变址寄存器的内容 和指令中指定的8位或16位位移量(displacement)之和。 例:MOV AX,BX+DATA 设DS=2000H,BX=0220H,DATA=05H 则:AX=20225H,例: MOV AX, COUNT BP 或MOV AX, COUNT+BP

9、 或MOV AX, COUNT+BP COUNT为16位位移量。 指令执行前: (SS)=5000H, (BP)=3000H, COUNT=2040H, (AX)=1234H 指令执行后:EA=5040H PA=55040H (55040H)=5548H (AX)=5548H,寄存器相对寻址方式 MOV AX,COUNTBP,OP,OP,40H,20H,.,.,48H,55H,.,55H,48H,存储器,操,作,码,位移量,COUNT,代,码,段,堆,栈,段,55040H,50000H,AH,AL,用途:这种寻址方式同样用于表格处理。 表格首地址COUNT 修改基址或变址寄存器来取得表格中的值

10、。 例:某数据表的首地址为COUNT 欲读取表中第10个数据,存放到(AL)中。 第10个数据的有效地址: EA= COUNT + 9 MOV SI , 09H MOV AL , SI+COUNT,6. 基址加变址寻址方式 (Based indexed addressing) 操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和,基址寄存器名和变址寄存器名均有指令指定。 除有段跨越前缀之外,形成物理地址有二种方式:,PA=16d(DS,)+,(BX),+,(DI),(SI),例: MOV AX, BXSI 或 MOV AX, BX+SI 执行指令前: (DS)=3200H, (BX)=0

11、456H, (SI) =1094H (334EAH)=4567H 执行指令后: EA=14EAH PA=334EAH (AX)=4567H,基址加变址寻址方式 MOV AX,BX+SI,.,.,.,67H,45H,存储器,32000H,334EAH,45H,67H,AL,AH,数,据,段,.,用途:这种寻址方式同样适用于数组或表格处理。 表格首地址基址寄存器中,用变址寄存器来访问数组中的元素。二个寄存器都能修改,所以比直接变址方式更灵。,7. 相对基址加变址寻址方式 (Relative based indexed addressing) 操作数有效地址是一个基址寄存器和一个变址寄存器的内容和8

12、位或16位位移量之和 。,除有段跨越前缀之外,形成物理地址有二种方式:,例: MOV AX, MASKBXDI MOV AX, MASK BX+DI MOV AX,MASK+BX+DI 执行指令前: (DS)=3000H (BX)=1346H (DI)=0500H MASK=1234H (32A7AH)=4050H 执行指令后: EA=2A7AH PA=32A7AH (AX)=4050H,相对基址加变址 MOV AX, MASK+BX+DI,OP,OP,34H,12H,.,.,50H,40H,存储器,30000H,32A7AH,40H,50H,AL,AH,数,据,段,操,作,码,位移,量,MA

13、SK,代,码,段,用途: 这种寻址方式为堆栈处理提供方便: (BP)栈顶(一般 BP 可指向栈顶)从栈顶到数组的首地址可以用位移量表示(MASK). 变址寄存器(SI)或(DI)指向数组中某个元素。,8. 比例变址寻址 这种寻址方式为386以上处理器采用: 将第二个寄存器与比例因子相乘,比例因子可以是1、2、4、8。分别对应字节、字、双字、四字数组。 例如: MOV EBX+4*ECX MOV EAX+2*EDI+100H,CX MOV AL,EBP+2*EDI-2 MOV EAX,ARRAY4*ECX,小结:三种类型操作数 综观8086/ 8088寻址方式,其操作数有三种类型: 立即操作数、

14、寄存器操作数、存储器操作数。 三种类型操作数特点: (1)立即操作数 可以使用立即操作数指令有: 数据传送指令、算术运算指令(乘、除运算指令除外)、 逻辑运算指令等。 立即数只能作为源操作数,不能作为目标操作数。,8位和16位无符号数和带符号数的取值范围:,寄存器操作数 寄存器操作数可能存放在: 8086 /8088的通用寄存器、地址指针或变址寄存器 以及段寄存器。,通用寄存器包括4个16位寄存器: AX、BX 、 CX 、 DX。用于存放字操作数。 4个16位通用寄存器可以当作8位寄存器使用: AH 、AL、 BH 、BL、 CH、 CL、 DH 、DL存放字节操作数。 通用寄存器、地址指针

15、寄存器可以作为源操作数,也可以作为目标操作数。 与通用寄存器或存储器传送数据时,段寄存器可以作为源操作数或目标操作数. 段寄存器DS、 ES、 SS 、CS存放当前的段地址。 对段寄存器ES 、DS 、SS进行赋值,不能将立即数直接送段寄存器,要将立即数送通用寄存器,再从通用寄存器送段寄存器。CS一般不用赋值。,(3)、存储器操作数 存储器操作数可能存放在一个、二个、或四个存储器单元中。 操作数类型分别为:字节、字、双字。 存储器操作数可以作为源操作数,也可以作为目标操作数。 但不允许源操作数、目标操作数同时为存储器操作数。 存储器操作数的有效地址EA的取得方法: 直接寻址 寄存器间接寻址 相对寄存器寻址 基址加变址寻址 相对基址加变址寻址 存储器操作数的物理地址PA的取得方法: 一般存储器操作数指令中隐含段寄存器,有的指令允许段跨越, 需要在指令中标明。,存储器操作数的寻址方式 有效地址的四元素 基址寄存器内容 变址寄存器内容 比例因子(可取1、2、4、8) 位移量 逻辑地址= 段寄存器:基址寄存器+变址寄存器*比例因子+位移量,存储器操作数寻址方式 直接寻址(Direct Addressing) 寄存器间接寻址(Register

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号