8086的指令系统1

上传人:第*** 文档编号:49659810 上传时间:2018-08-01 格式:PPT 页数:35 大小:277KB
返回 下载 相关 举报
8086的指令系统1_第1页
第1页 / 共35页
8086的指令系统1_第2页
第2页 / 共35页
8086的指令系统1_第3页
第3页 / 共35页
8086的指令系统1_第4页
第4页 / 共35页
8086的指令系统1_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《8086的指令系统1》由会员分享,可在线阅读,更多相关《8086的指令系统1(35页珍藏版)》请在金锄头文库上搜索。

1、第三章第三章 80 808686的指令系统的指令系统I I8086指令格式和寻址方式 8086指令系统*13-1 8086的指令格式和寻址方式指令通常包含操作码和操作数两部分,操作码指出操作的性质,操作数给出操作的对象。 指令格式OpcodeOpcode表明指令的操作性表明指令的操作性 质,质,1212个字节。个字节。 必需的部分。必需的部分。地址码地址码表明参加操作的数的表明参加操作的数的 位置,位置,0404个字节。个字节。 可能隐含在操作码中可能隐含在操作码中 ,或由相关联的其他,或由相关联的其他 指令给出。指令给出。操作码操作数Date2寻址方式就是指令中说明操作数所在地址的方式。1.

2、 指令有单操作数、双操作数和无操作数之分。如果是双操作数指令,要用逗号将两个操作数分开。例: MOVAX,CX ;数据传送指令;CX为源操作数,AX为目的操作数。XLAT ;表转换指令8086的寻址方式说明Date31)单操作数指令 例 INC AXINC AXINC BX INC BX2)双操作数指令 例 MOV AL , 04 MOV AX , 043)三个操作数指令8086指令系统中,大多数指令中只有1-2个操 作数,但也有少数指令中有3个操作数,不过 有一操作数隐含在操作码中。 例 ADC AX , BX该指令完成操作数AX、BX和CF位相加。请问这是在哪个 寄存器?含义?Date42

3、. 8086指令中的操作数三种可能的存放位置1.操作数包含在指令中,即指令的操作数部分就是操作 数本身。这种操作数叫做立即寻址。对应的指令寻址 方式称为立即寻址。 2.操作数包含在CPU的某个内部寄存器中。这时指令 的操作数部分是CPU内部寄存器的一个编码,这种指 令寻址方式称为寄存器寻址。 3.操作数在内存的数据区中。这时指令的操作数部分包 含着此操作数所在的内存地址,这种指令寻址方式称 为存储器寻址。由存储器提供操作数的寻址方式更应被重视,因为 程序中大量数据处理的情况较多。 立即寻址和寄存器寻址在实际应用中有局限。Date5一、立即寻址方式(Immediate Addressing)立即

4、数寻址: 操作数(一个8位或16位)常数直接包含在指令中。该指令常用来给寄存器赋初值。例 MOV AL,07H表示将一个8位立即数07H送到AL寄存器中立即数只能是源操作数,不能作目的操作数。 07HAL目的操作数源操作数Date6MOV CX,2A50H ;表示将立即数2A50H送到CX寄存器中。操作码码50H2AH代码段CHCL20001H20002H50H2AH立即数作为指令的一部分紧跟在操作码之后,存放在代码 段,执行时直接从指令队列中取数,执行速度较快。Date7二.寄存器寻址方式(Register Addressing)操作数包含在指令规定的寄存器中。寄存器16位:AX, BX,

5、CX, DX, SI, DI, SP, BP8位:AH, AL, BH, BL, CH ,CL, DH, DL.例 MOV DX, AX设执行前AX=3A68H, DX=18C7H,则执行后DX=3A68H, AX=3A68H(内容保持不变)例 MOV CL, AH ;表示将AH中的8位数送到CL中。注意: 源操作数的长度必须与目的操作数一致。 该方式是CPU内部操作,不要使用访问总线周期,故指令 执行速度快。 除上述2种方式,以下方式中操作数都放在存储器中,需要 用不同的方式求出操作数的物理地址。Date8三、 存储器寻址方式 1.直接寻址方式存储单元的有效地址(EA)直接由指令给出,并存放

6、在 CS段中指令的操作码之后。把操作数的偏移地址称为有效地址EA。 例 MOV AX, 2000H设DS=3000H,则操作数的物理地址:10HDS+EA=10H3000H+2000H=32000H上述指令的操作数默认在DS段中。 例 MOV AL, 2000H 段超越前缀 例 MOV AX, ES: 500H;该指令的源操作数的物理地址=10HES+500H方括号中给出被访问内存单 元的逻辑偏移地址;区别于 立即数;逻辑段地址隐含在 DS中。Date9 操作码 00H 20H34H 12H数据段代码段物理地址的计算DS*10H+ EA3000H *10H+ 2000H=?32000H 320

7、01HAHAL12H34HDate10注意:在8086系统中,数据通常在数据段中,但 若需要,数据也可存放在代码段,堆栈段以及附 加段中,这种情况就是段超越。应用时,需在指 令中加以说明。MOV ES:1234H , BL ;:是修改属性运算符在没有声明的情况下,逻辑段地址是指寄存器 DS,如使用其它段寄存器,则需在指令中给出 。 段寄存器与表示逻辑偏移地址的寄存器的隐式 关系:CS:IP SS:SP DS:DX DS:SI DS:DI DS:直接偏移地址 Date11存储器寻址时的段约定存储器操作类型默认段寄存器允许超越的段偏移地址寄存器取指令代码码CS 无 IP堆栈栈操作SS 无 SP源串

8、数据访问访问DS CS ES SS SI目的串数据访访 问问ES 无 DI通用数据访问访问DS CS SS ES 偏移地址用BP为为基址SS CS DS ES 偏移地址Date12符号地址-事先定义的符号,表示逻辑偏移地址,实际编 程中经常使用。例 MOV AX , AREA1从形式上看 AREA1 既可表示为符号地址,亦可表示为一个16位的立即数,应事先用伪指令来加以说明。 例 AREA1 EQU 0867H ;AREA1代表立即数: MOV AX , AREA1 ;执行后 AX=0867HMOV AX , AREA1段超越: MOV AX, ES:AREA1Date132. 寄存器间接寻址

9、方式指令中给出的寄存器中的值不是操作数本身 ,而是操作数的有效地址,并在寄存器外面 加方括号以示区别。有效地址EA= 寄存器寄存器有: BX, SI, DI (默认在DS段中)BP (默认在SS段中) 例 MOV BX, SI设DS=1000H, SI=2000H, (12000H)=318BHDate14可使用寄存器有: BX, SI, DI (默认在DS段中) BP (默认在SS段中)MOV AX, BPMOV AX, ES:SI ;可以使用段超越MOV BX, DS:BP物理地址=16*DS+BX或=16*DS+SI或=16*DS+DI物理地址=16*SS+BP 提供了一种方便的访问堆栈

10、 数据的方法。Date15 操作码 00H 20H8BH 31H数据段代码段物理地址的计算DS*10H+ EA1000H *10H+SI=?12000H12001HBHBL31H8BH例 MOV BX,SI 设DS=1000H, SI=2000H, (12000H)=318BHDate163、寄存器相对寻址 (Register Relative Addressing)这种寻址方式中提出位移量的概念,即在寄存器 间接寻址给出的偏移地址基础上,加上一个相对 位移量。位移量是一带符号的8/16位16进制数。 当使用BX或BP寄存器时,称基址寻址; 当使用SI或DI寄存器时,称变址寻址。 例: MOV

11、 CX, 36HBXMOV 20BP, ALDate17物理地址=16*DS + BX + COUNT(偏移量)或=16*DS + SI + COUNT(偏移量)或=16*DS + DI + COUNT(偏移量)物理地址=16*SS + BP + COUNT(偏移量) Date18 操作码 00H 40H78H 56H数据段代码段 DS*10H+ EA=?36000H 36001H3000H *10H+BX+4000HBHBL56H78H例 MOV BX,COUNT BX 设DS=3000H,BX=2000H,位移量COUNT=4000H,(36000H)=5678H等价于 MOV BX, C

12、OUNT+BX Date194. 基址变址寻址方式操作数的有效地址是一个基址寄存器(BX或 BP)和一个变址寄存器(SI或DI)的内容之和。EA=基址寄存器 变址寄存器 若为BX时,段寄存器用DS则物理地址=16 DS+BX+SI或=16 DS+BX+DI若为BP时,段寄存器用SS则物理地址=16 SS+BP+SI或=16 SS+BP+DIDate20 操作码 操作码CDH ABH数据段代码段 DS*10H+ EA31700H 31701H=?3000H *10H+BX+SIAHALABHCDH例 MOV AX,BXSI设DS=3000H,BX=1200H,SS=2000HSI=0500H,

13、(31700H)=0ABCDH等价于 MOV AX, BX+SIDate21基址加变址寻址的3个注意l当一种寻址方式中基址、变址寄存器默认的段寄 存器不同时,一般由基址寄存器来决定默认哪一 个段寄存器作段基址指针。l若规定了段超越,则可以由其他段寄存器作为段 基址。l基址加变址寻址主要用于二维数组操作(检索数 组元素)和双重循环等。Date225、相对基址变址寻址方式若为BX时,段寄存器用DS则物理地址=16 DS+BX+SI + 8位或16位位移量或=16 DS+BX+DI + 8位或16位位移量若为BP时,段寄存器用SS则物理地址=16 SS+BP+SI + 8位或16位位移量或=16 S

14、S+BP+DI + 8位或16位位移量 例 MOV AX,MASKBXSI 设:DS=2000H,BX=1500H,SI=0300H,MASK=0200H,(21A00H)=26BFH,SS=2000H 上述指令也可写成 MOV AX,MASK+BX+SIMOV AX,200HBX+SIMOV AX,MASKBX+SIDate23 操作码 00H 02H34H 12H数据段代码段 DS*10H+ EA=?21A00H 21A01H2000H *10H+BX+SI+MASKAHAL26HBFH例 MOV AX,MASKBXSI设DS=2000H,BX=1500H, MASK=200H, SI=0

15、300H, (21A00H)=26BFH,SS=2000HDate24四、其它 (1)隐含寻址指令中不指明操作数,但有隐含规定的寻址方式。例如 DAA ;十进制调整指令(2)I/O 端口寻址a. 直接端口寻址方式端口地址是一个8位的立即数,00FFH例 IN AL, 63Hb. 间接端口寻址方式端口的地址由寄存器DX提供,端口号为0000FFFFH例 MOV DX, 213HIN AL, DXDate25(3) 上面介绍的寻址方式都是针对源操作数,目的 操作数均用寄存器来表示。而目的操作数也可以用除立即寻址方式以外的所有寻址方式。例 MOV BX,AL设:BX=3600H,DS=1000H,AL=05H则:目的操作数的物理地址 =16*DS+BX=10000H+3600H=13600H执行结果为(13600H)=05HDate26 的作用常常在指令

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

当前位置:首页 > 办公文档 > 解决方案

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