微机原理课件-第3章

上传人:tia****nde 文档编号:70896750 上传时间:2019-01-18 格式:PPT 页数:108 大小:1.77MB
返回 下载 相关 举报
微机原理课件-第3章_第1页
第1页 / 共108页
微机原理课件-第3章_第2页
第2页 / 共108页
微机原理课件-第3章_第3页
第3页 / 共108页
微机原理课件-第3章_第4页
第4页 / 共108页
微机原理课件-第3章_第5页
第5页 / 共108页
点击查看更多>>
资源描述

《微机原理课件-第3章》由会员分享,可在线阅读,更多相关《微机原理课件-第3章(108页珍藏版)》请在金锄头文库上搜索。

1、1,第三章 8088/8086 指令系统,8086/8087CPU的指令系统 基本指令92条,8种寻址方式。8087协处理器,25条基本运算指令,可以进行18位十进制运算、浮点运算、三角函数运算、指数运算等等运算。 80286/287指令系统 CPU 具有实地址和保护虚地址两种方式。在实地址方式下与8086兼容,8086的程序可以不经汇编而直接在80286中运行;在虚地址方式下增加了25条指令。,2,3.1 概述,8088和8086的指令系统是完全相同的; 8086的指令系统共包含92种基本指令,按照功能分为 6大类: 1、数据传送Data Transfer 2、算术运算Arithmetic

2、3、逻辑运算和移位logic 4、串操作string manipulation 5、控制转移类control transfer 6、处理器控制processor control,3,4,5,3.1.1 指令的基本构成,一条8088指令包含有操作码和操作数两部分,指令的长度在16个字节之间。,12字节,16字节,立即操作数、 寄存器操作数、 存储器操作数,8086指令格式(),8086/8088指令是由16个字节组成。 第一字节通常为指令的操作码。它表示该条指令要进行什么样的操作。,OP code为操作码,表示该指令要完成的操作。 D=0:第一个操作数是目的操作数, 1:第二个操作数是目的操作数

3、 w=0:8位操作数, 1:16位操作数 MOD指明寻址方式: MOD11 寄存器寻址 MOD11存储器寻址 00没有偏移量 01 8位偏移量 1016位偏移量 REG用编码方式指明操作中所使用的寄存器。 R/M用编码方式指出存储器有效地址计算方法。 DISP表示地址偏移量。DATA则指明立即数。,8086指令格式(2),R/M(寄存器/存储器)编码及有效地址计算方法,例:ADD DISPBXDI,DX DISP=2145H 000000 0 1 10 010 001 01000101 00100001 操作码 D W MOD REG R/M 位移量低 位移量高 D=0 源操作数是寄存器操作数

4、 W=1 操作数是16位 操作码是: 01914521H,8,立即操作数、寄存器操作数、存储器操作数,立即操作数即常数;可以是字节(8位)、字(16位); 立即操作数只能用作源操作数,不能用作目的操作数;,9,2、寄存器操作数,寄存器操作数存放在CPU的8个通用寄存器或4个段寄存器中,既可以用作源操作数也可以用作目的操作数;但CS一般不作为目的操作数; 个别指令将FLAGS作为操作数;,通用寄存器中AX、BX、CX、DX、SI、DI、BP、SP存放字操作数; AH、AL、BH、BL、CH、CL、DH、DL存放字节操作数;,10,3、存储器操作数,存储器操作数可以是字节、字、双字,分别存在1个、

5、2个、4个存储单元中;它既可以用作源操作数也可以用作目的操作数; 注意:对大多数指令,不允许源操作数和目的操作数同时为存储器操作数,即不允许存储器到存储器的操作。 存储器单元的地址由两部分组成:段基址和偏移地址(也叫有效地址),所以各种存储器操作,都涉及到段寄存器;,11,8088对寄存器使用的约定,12,3.1.2 指令的执行时间,一条指令的执行时间应包括取指令、取操作数、执行指令及传送结果4部分时间,通常用时钟周期数来表示; 不同的指令在执行时间上有很大差别;,13,寄存器操作数的指令执行速度最快; 立即操作数作为指令的一部分存放在指令队列中,因此执行指令时不需要访问内存; 存储器操作数放

6、在内存单元中,首先由BIU计算出20位物理地址,然后再执行存储器的读写操作,指令的执行速度最慢。 例如:CPU的时钟频率为5MHz,即一个时钟周期为0.2微秒,则寄存器到寄存器之间的传送指令的执行时间为: t=2X0.2=0.4微秒 再如:立即操作数传送到寄存器的指令执行时间为: t=4X0.2=0.8微秒,14,3.2 CPU的寻址方式,获得操作数所在地址的方法,叫寻址方式,共有8种寻址方式;一般是针对源操作数而言; 寻址方式分为两大类: 寻找操作数的地址 寻找要执行的下一条指令的地址 主要在程序转移(JMP)或过程调用(CALL)时用来寻找目的地址或程序入口地址,15,3.2.1 立即寻址

7、,1、立即寻址(Immediate Addressing) 源操作数是一个立即数,8位或16位的整数; 操作数直接放在操作码的后面;若为16位则低8位在低地址单元,高8位在高地址单元存放。指令在内存中的存放形式:,例如:MOV AX, 3102H,代码段,16,2、直接寻址(Direct Addressing),在指令的操作码后面直接给出操作数的16位偏移地址,与操作码一起存放在内存的代码段;低8位在前,高8位在后;默认段为DS数据段,允许段超越。 16位偏移地址必须用 括起来。 MOV AL, 4000H ;将DS:4000H之内容送入AL(字 节操作) MOV 2000H, BX ;将BL

8、之内容送入DS:2000H 将BH之内容送入DS:2001H 注意:MOV AX, 2510H与 MOV AX, 2510H的区别!,17,23102H 23103H,代码段,数据段,例如: MOV AX, 3102H (字操作) 设DS=2000H,则物理地址为:2000H*10H+3102H=23102H,功能: 将DS:3102H之内容送入AL 将DS:3103H之内容送入AH,18,段超越,如果操作数不是存放在数据段DS中,则在指令中要用段超越符号加以说明; 如下例:MOV BX, ES:1200H 将ES段中偏移地址为1200H和1201H两单元的内容送到BX寄存器中; 有时也用一个

9、符号来代替数值以表示操作数的偏移地址,通常把这个符号称为符号地址; 如: MOV BX, ES:BUFFER BUFFER必须在程序开始时予以定义。,19,3、寄存器寻址(Register Addressing),操作数存放在CPU的寄存器中。 寄存器可以是AX、BX、CX、DX、SI、DI、BP;也可以是AL、AH、BL、BH、CL、CH、DL、DH;也可以是段寄存器; 如: MOV AL,BL MOV AX,DX MOV DS,AX MOV SI,BP,20,4、寄存器间接寻址(Register Indirect Addressing),与寄存器的寻址方式不同,指令中指定的寄存器的内容不是

10、操作数而是操作数的偏移地址;能做这种用途的寄存器叫做地址指针寄存器。它们是SI、DI 、BX、BP,也简称为间址寄存器; 选择SI、DI 、BX作间址寄存器时,操作数在数据段,段基址由DS决定; 如果用BP,则操作数在堆栈段,段基址由SS决定; 但是,无论选择哪一个间址寄存器,都允许段超越; SI、DI 、BX、BP在作为间址寄存器使用时表示为 ; 如: MOV AX,SI MOV AX,ES:SI,21,数据段,AX,61200H,MOV CX,DI -EA=(DI) DS:DI MOV DX,BP -EA=(BP) SS:BP MOV BX,BP -EA=(BP) SS:BP 注意:MOV

11、 AX,SI 和 MOV AX,SI的区别!,已知:(DS)=6000H,(SI)=1200H MOV AX,SI,(AX)=3344H,22,5、寄存器相对寻址(Index Addressing),操作数存在存储单元中,把指令指定的间址寄存器的内容加上指令中给出的一个8位或16位地址偏移量,才可得到操作数的有效偏移地址。 如:MOV AX,DATABX SUB DX,TOTALBX DEC ARRAYDI CMP POINTERSI,BX CMP CX,COUNTBP 寄存器相对寻址常用于存取表格或一维数组中的元素;,23,例:MOV AX,DATABX 假设:(DS)=6000H, (BX

12、)=1000H, DATA=08H 则内存单元的物理地址为:60000H+1000H+08H=61008H 指令的执行情况如下:,61008H,码段,数据段,(AX)=5566H,24,例:某数据表的首地址(偏移地址)为TABLE,要取出该表中第10个字节,并存放到AL中,可用如下指令段实现: MOV SI, 9 MOV AL, TABLE+SI 相对寻址指令的书写格式允许有以下几种: MOV AL, TABLESI MOV AL, SIDATA MOV AL, DATA+SI MOV AL, SI+DATA MOV AL, DATA+SI MOV AL, SI+DATA,25,6、基址-变址

13、寻址,由一个基址寄存器(BX或BP)的内容,加上一个变址寄存器(SI或DI)的内容,作为操作数的偏移地址,称为基址变址寻址;允许段超越; 例如:MOV AX, BXSI 假设:(DS)=8000H, (BX)=2000H, (SI)=1000H 则物理地址为: 80000H+2000H+1000H=83000H 指令的执行情况如下:,83000H,码段,数据段,MOV AX, BPSI MOV AX, BPDI,26,7、基址-变址寻址相对寻址,例:MOV AX, DATADIBX 假设:(DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=0200H 则物理地址为

14、: 80000H+2000H+1000H+0200H=83200H 指令的执行情况如下:,83200H,码段,数据段,允许段超越;,27,基址-变址相对寻址指令的书写格式允许有以下几种: MOV AX, DATASIBX MOV AX, BX+DATASI MOV AX, BX+DATA +SI MOV AX, BXDATASI MOV AX, BX+SIDATA 下列指令是非法的: MOV AX, DI+SI+DATA MOV AX, BX+BP+DATA,28,8、隐含寻址 操作码本身隐含地指明了操作数或部分操作数的地址。如:MUL BL; ALXBL AX,29,CPU的寻址方式总结:,

15、获得操作数所在地址的寻址方式: 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 寄存器相对寻址 基址-变址寻址 基址-变址相对寻址 隐含寻址,MOV AX, 3102H MOV AL, 4000H MOV AL,BL MOV AX,ES:SI MOV AX,SI MOV AX,DATABX MOV AX, BXSI MOV AX, DATADIBX MUL BL;,30,8086指令系统,OPRD 各种类型的操作数 mem 存储器操作数 acc 累加器操作数 dest 目的操作数 src 源操作数 disp 8位或16位的位移量,可用符号地址表示 DATA 8位或16位的立即数 port 输入输出端口(地址) ( ) 表示寄存器的内容 表示地址,31,3.3 8086/8088 CPU指令系统,指令系统分为六个功能组: 1、数据传送Data Transfer 2、算术运算Arithmetic 3、逻辑运算logic 4、串操作string manipulation 5、控制传送control transfer 6、处理器控制processor control,32,3.3.1 数据传送类指令,33,MOV指令,MOV dest, src (1)寄存器与寄存器之间: MOV BX,SI MOV DS,AX MOV AX,CS MOV AL,CL MOV DL,CH (2

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

当前位置:首页 > 高等教育 > 大学课件

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