第三章 8086 8088指令系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SI 1200
+)
6000 0 1200 61200 AX 33 44
61200H 61201H
存储器 . . . 44H 33H 数 据 段
. . .
图 3-5 寄存器间接寻址示意图
3.2.5 寄存器相对寻址
寄存器相对寻址——操作数在存储器中。由指令指定的地址寄存器的内容加上指令中
给出的一个8位或16位的地址位移量,即可得操作数的偏移地址。
SI AX AX AX AX AX
3.2.8隐含寻址
隐含寻址—— 操作数隐含在操作码中,在有些指令的操作数中,不仅包含了操作的性质,
还隐含了部分操作数的地址。如乘法指令 MUL,在这条指令中只须指明乘数的地址,而被乘数 已经乘积的地址是隐含且固定的。这种将一个操作数隐含在指令码中的寻址方式就称为隐含
立即数操作数: 所谓立即数指具有固定数值的操作数,不因指令的执行而发生变化 。立即数操作 数只能用作源操作数,而不能用作目标操作数。
寄存器操作数:
8086CPU的8个通用寄存器和4个段寄存器可以作为指令中的寄存器操作数,寄存
器操作数在指令中既可以作为源操作数,也可以用作目标操作数。 存储器操作数: 参加运算的数据是存放在内存中。
两单元的内容送到AX中。假设DS=2000H,则所寻找的操作数的物理地址为: 2000H×10H+3102H = 23102H, 指令的执行情况如图3-3所示
存储器 . . .
MOV操作码
02H 31H AH AL 23102H 23103H
图 3-3 直接寻址方式
代 码 段
. . . ×× ×× . . . 数 据 段
请注意:使用基址—变址方式时,不允许将两个基址寄存器或两个变址寄存器组合
在一起寻址。即指令中:
MOV AX,[BX][BP] MOV AX,[SI][DI] ; 错误!同时出现两个基址寄存器 ; 错误!同时出现两个变址寄存器
返回
请注意:使用基址—变址方式时,不允许将两个基址寄存器或两个变址寄
存器组合在一起寻址。即指令中:
1.CISC指令
CISC指令系统的设计目标是增强指令功能,将一些原来用软件实现的、
常用的功能,变成用硬件的指令系统来实现。
2. RISC指令
RISC目前还是一种计算机体系结构的设计思想。它的核心思想是通过简化指令 来使计算机的结构更加简单、合理,从而提高CPU的运算速度。
3.2寻址方式
3.2.1 立即寻址
该指令的段地址位DS段,而偏移地址为 BX+DI+DATA的连续的两个存储单元的内
容送到AX,指令的执行情况如图示:
基址—变址—相对寻址与寄存器间接寻址方式类似,
基址—变址—相对寻址指令同样也可以表示成多种形式。
例如:
MOV AX, DATA[SI][BX]
MOV AX, [BX+DATA] [SI] MOV AX, [BX+SI +DATA] MOV AX, [BX]DATA[SI] MOV AX, [BX +SI]DATA
第三章 8086/8088指令系统
3.1 概述
3.2
寻址方式
3.3
8086指令系统
3.4
Pentium新增指令简介
本章的学习目标有以下几点:
1. 2. 3. 了解8086/8088CPU的指令系统; 了解8086指令的基本组成及指令执行的时间; 了解8086指令的各种寻址方式;
4.
5.
掌握8086指令系统的各类指令;
【例3-5】已知DS=6000H,SI=1200H,执行指令:MOV AX,[SI]。寻址默认的段 寄存器DS,计算出操作数物理地址=60000H+1200H=61200H。 指令执行情况如图3-5所示
DS 6000
执行结果为:AX = 3344H, 若操作数存放在附加段,则 本例中的指令应表示成一下 形式: MOV AX,ES:[SI] 若间址寄存器采用BP,则操 作数默认存放在堆栈段SS。
立即寻址—— 只针对源操作数。此时源操作数是一个立即数,它作为指令的一部分, 紧跟在指令的操作码之后,存放于内存的代码段中。
【例3-1】指令 MOV AX , 3102H
表示将16位的立即数3102H送入累加器AX。指令执行后,AH=31H,AL=02H. 存储器 . . . 操作码 存储器 AH AL . . . MOV操作码 02H 代 码 段
3.1.1指令的基本构成
1.指令的一般格式
操作码(OPC) 存放运算数据或结果的地址,参加运算的数据或数据的地址
目标操作数 指令是由操作码和操作数组成。
源操作数
操作码代表指令所要进行的操作(操作性质);操作数代表被操作的对象。
指令的长度会影响指令的执行时间。8086指令的长度在1-7个字节之间。操作码
MOV MOV MOV MOV MOV MOV MOV
AX , 3102H AX , [3102H] SI , AX AX , [SI] AX , [BX ] DATA AX , [BX][SI] AX, [BX] [DI] DATA
MOV AX , MOV [3102H] , MOV [SI] , MOV [BX] DATA , MOV [BX][SI] , MOV [BX] [DI ]DATA,
数据传送指令按功能可分为四小类:
通用数据传送指令; 目标地址传送指令; 标志传送指令; 输入输出指令。
1.通用数据传送指令;
通用数据传送指令包括一般传送指令MOV,堆栈操作指令PUSH和POP、交换 指令XCHG\查表转换指令XLAT和字位扩展指令。
1)一般传送指令
格式: MOV dest,src; 功能:(dest)←(src) 这里,dest表示目标操作数,src表示源操作数。MOV指令实际上是完成了一 次数据的复 制。
②寄存器与存储器之间的传送
例如,若有DS=[6000H],SS=[8000H],AX=1234H,BX=1200H,DI=0383H, BP=1020H, 则有:
MOV [BX],AX MOV CL, [BP][DI] ; 将AX的内容送内存单元。其中[60000H]=34H,[60001H]=12H ; 将堆栈段中偏移地址为BP+DI单元的内容送CL ; 将DS段的6000H和6001H两个单元的内容送AX
MOV AX,[BX][BP]
MOV AX,[SI][DI]
; 错误!同时出现两个基址寄存器
;错误!同时出现两个变址寄存器
3.2.7 基址—变址—相对寻址
相对基址变址寻址——指令中指定一个基址寄存器和一个变址寄存器,同时还要
给出一个8位或16位的位移量而形成,将三者相加就得到操作数的偏移地址。
【例3-10】指令 MOV AX,DATA[DI][BX]
3.2.6 基址——变址寻址
基址加变址寻址——操作数的偏移地址,由一个基址寄存器(BX或BP)的内容和一
个变址寄存器(SI或DI)的内容相加而得操作数的偏移地址。 【例3-9】指令MOV AX,[BX][SI]的寻址过程如图3-7所示。 设:(DS)=8000H,(BX)=2000H, (SI)=1000H 则操作数物理地址=80000H+2000H+1000H=83000H 指令执行后:(AL)=[83000H],(AH)=[83001H]
(1)指令的特点
指令中的操作数可以是8位,也可以是16位。
目的操作数可以是除立即数以外的其他的七种寻址方式
(2)指令实现的操作
①寄存器与寄存器或寄存器与段寄存器之间的传送 例如: MOV BX,SI ;变址寄存器SI中的内容送到基址寄存器BX MOV DS,AX ;累加器AX的内容送到段寄存器DS MOV AL,CL ;通用寄存器CL中的内容送AL
存储器 . . . MOV 操作码 08H 00H . . . 代 码 段
DATA
61008H AH AL 61009H
66 55 . . .
数 据 段
图3-6 寄存器相对寻址示意图
【例3-8】某数据表的首地址(偏移地址)为TABLE,要取出该表中的第10个字节, 并存放到AL中,可用如下指令段实现(注意位移量是从0开始的):
寻址。
【例3-11】指令MUL BL 功能:是把AL中的内容与BL的内容相乘,乘积送到AX寄存器。 即:(AL)×(BL)→(AX) 这条指令隐含了被乘数AL及乘积AX。
3.3 8086指令系统
数据传送类指令是实际程序中使用最为频繁的一类指令,指令中的绝大多数都不
会对状态寄存器FLAGS产生影响。
学会阅读和编写8086的基本指令。
主要内容
1.
2.
8086/8088的8种寻址方式?根据寻址方式确定(计算)物理地址。
操作数主要分为3类:立即操作数、寄存器操作数和存储器操作数。
掌握偏移地址的计算。
3.
4. 5. 6. 7.
理解8086/8088对段寄存器使用的约定。 指令的基本构成(结构),指令是由操作码和操作数组成。 掌握8086/8088CPU每一条指令的汇编语言格式、寻址方式及操作功能。 阅读程序
MOV SI ,9
MOV AL,[TABLE+SI]
;第10个数的位移量为9
;第10个数的偏移地址为TABLE+9
在汇编言语中,相对寻址指令的书写格式允许有几种不同的形式。例如,一下几种 写法实质上是完全等价的:
MOV AL,DATA[SI] MOV AL,[SI]DATA MOV AL,DATA+[SI] MOV AL,[SI]+DATA MOV AL,[DATA+SI] MOV AL,[SI+DATA]
图 3-4 寄存器寻址示意图
采用寄存器寻址方式,虽然指令操作码在代码段中,但操作数在内部寄存器中,
指令执行时不必通过访问内存就可取得操作数,故执行速度较快。
3.2.4寄存器间接寻址
寄存器间接寻址 ——是用寄存器的内容表示操作数的偏移地址。此时寄存
器中的内容,只是存放数据的偏移地址,操作数本身在内存储器中。
占用一个字节或两个字节。在微处理器指令系统中,一条指令的操作数可以没有
或有一个但最多只能有两个。
指令在格式上就有一下三种形式:
零操作数令:指令在形式上只有操作码,操作数是隐含存在的。 单操作数指令:指令中仅给出一个操作数,另一个操作数隐含存在。 双操作数指令:格式如图3-1所示
2.指令中操作数类型
[例3-7] 指令 MOV AX,DATA[BX]
设:(DS)=6000H,(BX)=1000H,DATA=08H, 则物理地址=60000H+1000H+08H= 610008H
指令的执行情况如图3-6所示。执行结果为AX=5566h
DS BX ﹢) 6000 1000 0008 61008 位移量 高8位 0 位移量 低8位
MOV AX,[6000H]
③立即数到寄存器的传送
MOV MOV AL,5 BX,3078H ; 将立即数5送累加器AL ; 将立即数3078H送寄存器BX
④立即数到存储器的传送
MOV BYTE PTR[BP+SI],5 MOV WORD PTR[BX],1005H ; 将5送堆栈段中偏移地址为BP+SI所指的单元中 ;1005H 送数据段中偏移地址为BX和BX+1两单元
立即数
低8位 高8位 . . .
代 码 段
31H . . .
图 3-2 立即寻址方式示意图
3.2.2直接寻址
直接寻址—-- 参加运算的数据存放在内存中,存放的地址由指令直接给出 。
即指令中的操作数是存储器操作数,“[]”内用16位常数表示存放数据的偏移地址。
【例3-2】指令“MOV AX,[3102H]”,表示将数据段中偏移地址为3102H和3103H
3.1.2指令的执行时间
1. 一条指令的执行时间应包括取指令、取操作数、执行指令及 传送结果几
部分,单位用时间周期表示。 2. 不同指令的执行时间有较大的区别(见附录C.1)。 3. 对同一指令,如果寻址方式不同,其指令执行时间可能相差很大。
3.1.3
CISC 和RISC指令系统
不同系列的CPU有不同的指令系统,目前指令系统的设计有两个完全不同 的方向。CISC(复杂指令系统计算机), RISC(精简指令系统计算机)。
3.2.3寄存器寻址
寄存器寻址 —— 寄存器寻址方式下,指令的操作数为CPU的内部寄存器。它们 可以是数据寄存器(8位或16位),也可以是地址指针、变址寄存器或段寄存器。 其执行如图3-4所示。 【例3-4】指令“MOV SI,AX”,表示将AX的内容送到寄存器SI中。若指令执行前 AX=2233H,SI=4455H,则指令执行后SI=2233H,而AX中的内容保持不变。 SI 2233 H AX 2233 H