48086/8088的指令系统教程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)相对基址寻址方式 (Relative Based Addressing) 相对基址寻址方式的操作数的有效地址是基址寄存器中内容和指令 中给定的8位或16位偏移量disp之和。 对寄存器BX,段寄存器用DS。 物理地址 = (DS) * 16 + (BX) + disp 如 MOV AX,COUNT [BX] 或 MOV AX,[COUNT+BX] , 其中COUNT为16位偏移量的符号地址。 若DS=2000H,BX=2000H,COUNT=4000H。 物理地址=20000H+2000H+4000H=26000H 指令执行结果AX=1234H
数据传送指令
第四章 8086/8088的指令系统
数据传送指令分类
通用数据传送指令
传送指令 堆栈操作指令 交换指令 输入输出指令 换码指令
累加器专用指令
有效地址传送指令 目标地址传送指令 DS传送指令 ES传送指令 标志位送AH指令 标志位传送指令 AH送FR指令 FR入出栈指令
数据传送指令
第四章 8086/8088的指令系统
操作码 操作数1, 操作数2(,……); 注释
操作码:指计算机所要执行的操作,或称为指出操作类型,是一 种助记符。 操作数:指在指令执行操作的过程中所需要操作的数。该字段除可 以是操作数本身外,也可以是操作数地址或是地址的一部分,还可 以是指向操作数地址的指针或其它有关操作数的信息。 源操作数、目的操作数 寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻 找操作数有效地址的方法。
地址
MOV BX,ES:[3000H] ;段超越,
操作数在附加段 即绝对地址=(ES)*16+3000H
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
2)寄存器间接寻址(Register Relative Addressing) 操作数是在存储器中,但是,操作数地址的16位偏移量包含在以下 四个寄存器SI、DI、BP、BX之一中。其中BP、BX称为基址寄存器, SI、DI称为变址寄存器。
可以分成两种情况: •以SI、DI、BX间接寻址,则通常操作数在现行数据段区域中,即数据 段寄存器(DS)*16加上SI、DI、BX中的16位偏移量,为操作数的地址, 例如: MOV AX, [SI] 操作数地址是:(DS)*16+(SI)
•以寄存器BP间接寻址,则操作数在堆栈段区域中。即堆栈段寄存器 (SS)*16与BP的内容相加作为操作数的地址, 例如:MOV AX,[BP] 操作数地址是:(SS)*16+(BP)
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
(3)基址变址寻址方式 (Based Indexed Addressing) 基址变址寻址的操作数的有效地址是一个基址寄存器与一个变址寄存器 的内容之和。 若基址寄存器为BX,则段寄存器用DS; 若基址寄存器为BP,则段寄存器用SS。 物理地址=(DS)× 16+(BX)+(SI)(或DI) 物理地址=(SS)× 16+(BP)+(SI)(或DI) 如MOV AX,[BX] [DI] 或MOV AX,[BX+DI] 若DS=2000H,BX=2000H,DI=3000H。 物理地址=20000H+2000H+3000H=25000H
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
立即寻址 寄存器寻址
直接寻址
寄存器间接寻址方式 相对基址寻址方式
存储器寻址
间接寻址
相对变址寻址方式 基址变址寻址方式
I/O 端口寻址
相对基址变址寻址方式
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
I/O端口寻址:独立编址、与存储器统一编址
主要内容
第四章 8086/8088的指令系统
第四章
主要内容:
8086/8088 CPU指令系统
指令的操作数、操作码、寻址方式 指令的功能、格式、用法等
8086/8088 CPU寻址方式
一、寻址方式 指令:指示微处理器完成某项功能的命令。
第四章 8086/8088的指令系统
指令系统:指令的全体。
指令的一般格式: 计算机中的指令由操作码字段和操作数字段组成。
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
习题: 指出下列指令的源操作数的寻址方式和存储器操作数的PA(实际地址) 假设当前CS=1000H,DS=2000H,SS=4000H,BX=3000H,BP=1000H ,SI=0500H,DI=0A00H,TAB=00F0H MOV AL,78H 立即寻址 MOV AL,[BX] 寄存器间接寻址 PA=2000H*10H+3000H=23000H MOV AX,BP 寄存器寻址 MOV AL,TAB[SI] 相对变址寻址 PA=2000H*16+0500H+0F0H=205F0H MOV AL,[BP][DI] 变址基址寻址 PA=4000H*16+1000H+0A00H=41A00H MOV AL,TAB[BX][SI] 相对基址变址 PA=2000H*10H+3000H+0500H+00F0H=235F0H
数据传送指令
第四章 8086/8088的指令系统
8086指令中包含133条基本指令,从功能上可以分为以下6类:
数据传送指令 运算指令 逻辑运算
算术运算
串操作指令 控制转移指令 处理器控制指令
数据传送指令
第四章 8086/8088的指令系统
指令中出现的这些符号所代表的含义: Flags 标志位 reg R 通用寄存器组 src S 源操作数 dest D 目的操作数 data N 立即数 mem M 存储器 ADR(src) 源操作数的地址 [] 存储单元的内容 OPRD 操作数 seg SR 段寄存器(CS、DS、ES、SS) port 端口 Bit 位 Byte B 字节 Word W 字
数据传送指令
堆栈操作指令
第四章 8086/8088的指令系统
堆栈:在内存中,开辟一段存储区,该区域是按照“先进后出”的原则 来存放数据。 1.SP总是指向栈顶,在堆栈段的高地址 2.SS总是指向栈底,在堆栈段的低地址
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
立即寻址
寄存器寻址 直接寻址 存储器寻址 寄存器间接寻址 I/O端口寻址
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
1)直接寻址(Direct Addressing) 操作数地址的16位偏移量直接包含在指令中。 它与操作码一起存放在代码段区域,操作数一般在数据段区域中, 它的地址为数据段寄存器DS加上这16位地址偏移量。当操作数不在默 认的DS中时,要明确指明段寄存器—段超越前缀。 例如: 设(DS)=3000H MOV AX,DS:[2000H]; MOV AX,[2000H] ;数据段 MOV AX,VALUE; VALUE是符号
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
立即寻址
寄存器寻址
存储器寻址 I/O端口寻址
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
1.立即寻址(Immediate Addressing) 所提供的操作数直接包含在指令中。 它紧跟在操作码的后面,与操作码一起放在代码段区域中。由于执行指令时不 需要占用总线周期,所以指令执行速度最快。 例如:MOV AX,3000H MOV [2000H],1AH
8086采用独立编址的I/O端口时,可有64K个字节端口或32K个字端口, 用专门的输入指令IN和输出指令OUT访问。 1. 直接端口寻址方式 适用于访问地址00H~0FFH的端口。 例如:IN AL,80H 表示由地址为80H的端口读取一个字节数据到AL中。
2. 间接端口寻址方式 适用于访问地址0000H~FFFFH的全部端口,在输入/输出指令中,用DX 存放16位的端口地址。 例如: MOV DX,2000H IN AL,DX 表示由DX确定的2000H端口读取一个字节数据到AL中。
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
立即寻址 寄存器寻址
直接寻址
寄存器间接寻址方式 相对基址寻址方式
存储器寻址
间接寻址
相对寻址方式
相对变址寻址方式
I/O端口寻址
基址变址寻址方式 相对基址变址寻址方式
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
格式:MOV D,S R
W M 注意: N
; D <——S ;B/W
W
SR
说明:R包括8个数 据寄存器;SR为4个 段寄存器;M为存储 器,可以是存储器寻 址中的任一种;N表 示立即数。
1、代码段寄存器不能做目标操作数。 2、立即数只能做源操作数。 3、两操作数的位数必须相同。 4、两操作数中最多只能有一个是存储器寻址方式。 5、不能直接传送的,可以通过寄存器转交。
立Fra Baidu bibliotek寻址主要用来给寄存器或存储器赋初值,不能用于目的 操作数。
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
2.寄存器寻址(Register Addressing) 操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX、 SP、BP、SI、DI等。不需要占用总线,执行速度较快。当寄存器是累加 器AX时,执行速度会更快。 例如:MOV DS,AX MOV AL,BH 3、存储器寻址(Memory Addressing) 访问存储单元需要其段基址和段内偏移量(即有效地址EA)。 根据有效地址的不同,存储器寻址方式分为直接寻址、寄存器 间接寻址
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
从以上讨论可知: (1)除了立即寻址和寄存器寻址外,其它寻址方式的操作数都来 自存储区(除代码段以外的存储区)。通过不同的方式寻找到 操作数的地址。 (2)只有BX、BP、SI、DI可在方括号 [ ] 内出现。 (3) BX或BP可单独出现在 [ ] 内,也可以与SI或DI或常数一起 出现在 [ ] 内,不允许BX和BP同时出现在一个 [ ] 内。 (4) SI或DI可单独出现在 [ ] 内,也可以与BX或BP或常数一起 出现在 [ ] 内,不允许SI或DI同时出现在一个 [ ] 内。 (5)一个 [ ] 内包括多个内容时,它们只能作加法运算。 (6)若 [ ] 内包含BP,则隐含使用堆栈段寄存器SS提供段基址, 否则均隐含使用段寄存器DS提供段基址。
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
(2)相对变址寻址方式(Relative Index Addressing) 相对变址寻址的操作数的有效地址是变址寄存器中内容和指令中 给定的8位或16位偏移量disp之和。
这种寻址方式的段寄存器用DS,即 物理地址= (DS) × 16 + (SI) + disp 物理地址= (DS) × 16 + (DI) + disp 如MOV AX,COUNT [SI] 或MOV AX,[COUNT+SI] 若DS=2000H,SI=2000H,COUNT=4000H。 物理地址=20000H+2000H+4000H=26000H 指令执行结果 AX=1234H
8086/8088 CPU寻址方式
第四章 8086/8088的指令系统
(4)相对基址变址寻址方式(Relative Based Indexed Addressing) 相对基址变址寻址的操作数的有效地址是一个基址寄存器与一个 变址寄存器的内容以及8位或16位偏移量disp之和。 当其中的基址寄存器为BX时,则段寄存器为DS; 而当基址寄存器为BP时,则段寄存器为SS。 物理地址= (DS) × 16 + (BX) + (SI)(或DI)+ 8位(16位)偏移量 disp 物理地址= (SS) × 16 + (BP) + (SI)(或DI)+ 8位(16位)偏移量 disp 如MOV AX,[BX+SI+COUNT] 若DS=2000H,BX=3000H,SI=1000H,COUNT=4000H。 物理地址=20000H+3000H+1000H+4000H=28000H