四章指令系统.ppt
《四章指令系统.ppt》由会员分享,可在线阅读,更多相关《四章指令系统.ppt(126页珍藏版)》请在三一文库上搜索。
1、1,第四章 指令系统,4.1 8086/8088指令系统概述 4.2 8086指令系统,2,一、8086/8088指令系统的特点 1.指令系统的兼容性 2. 指令格式的灵活性 3. 寻址方式的多样性 4. 可对多种类型的数据进行处理 5. 可构成多处理机系统,3,二、指令格式,指令:指令是指示计算机完成特定操作的命令 指令系统:指令系统是计算机能够执行全部命令的集合,它取决于计算机的硬件设计。指令系统因机而异,没有通用性。,4,指令格式:,操作码 操作数,操作数,源操作数: 指令加工之前的数据 目的操作数:指令加工之后形成的数据,5,指令中的操作数表征方法:,表征参加操作的数据本身 立即数 表
2、征数据存放的地址,寄存器 存储器,6,操作数类型,1、立即数操作数: 表示参加操作的数据本身,可以是8位或16位 例: MOV AX,1234H ; AX 1234H MOV BL,22H 立即数无法作为目标操作数 立即数可以是无符号或带符号数,其数值应在可取值范围内,7,2、寄存器操作数: 表示参加运算的数存放在指令给出的寄存器中,可以是16位或8位。 例:MOV AX,BX MOV DL,CH,8,3、存储器操作数: 例:MOV AX,1200H MOV AL, 1200H,9,例如: MOV AL,BP 该指令生成的机器码是8A4600H,10,三、寻址方式 计算机可以对存储器、寄存器中
3、的数据进行各种操作,如取数、存数、加运算、减运算等,这就需要找到数据的存放地址,再对其中的数据执行相应的操作,最后将运算结果送往指定的地址单元或寄存器。指令的寻址方式就是寻找指令操作数所在地址的方式,以确定数据的来源和去处。熟练地掌握寻址方式对学习指令系统和汇编语言程序设计具有重要作用。 下面介绍8086/8088的几种寻址方式。,11,1. 立即寻址 指令操作数部分直接给出指令的操作数,它与指令操作码相接,顺序存放在代码段中。立即数有 8位和16位之分。,12,注意: (1) 立即寻址方式只能用于源操作数,主要用于给寄存器赋值。 (2) 立即寻址方式不执行总线周期,执行速度快。,2. 寄存器
4、寻址 操作数放在寄存器内,由指令直接给出某个寄存器的名字,以寄存器的内容作为操作数。 寄存器可以是16位的AX、BX、CX、DX、SI、DI、SP、BP寄存器,也可以是8位的AH、AL、BH、BL、CH、CL、DH、DL寄存器。,13,例2: MOV AX,CX DEC AL 注意: (1) 寄存器寻址方式的指令操作在CPU内部执行,不需要执行总线周期,执行速度快。 (2) 寄存器寻址方式既适用于指令的源操作数,也适用于目的操作数,并且可同时用于源操作数和目的操作数。,14,3. 直接寻址 操作数在存储器中,指令中直接给出操作数所在存储单元的有效地址EA,即段内偏移地址,表示操作数所在存储单元
5、距离段首址的字节数。有效地址是一个无符号的16位二进制数。 例3:MOV AH,2100H ;将DS段中2100H单元的内 容送给AH MOV AX,2100H ;将DS段中2100H单元的内 容送给AL ;2101H单元的 内容送给AH。 MOV 1000H,AH ; DS:1000H(AH),15,DS=3000H MOV AX,2000H,16,注意: (1) 直接寻址方式的操作数所在存储单元的段地址一般在数据段寄存器DS中。 (2) 如果操作数在其他段,则需要在指令中用段超越前缀指出相应的段寄存器名。,例4:MOV AH, ES 2000H 将附加段寄存器ES的内容乘16,再加上200
6、0H作为操作数所在存储单元的地址,取出该存储单元的内容送到寄存器AH中。,17,4. 寄存器间接寻址 操作数在存储器中,指令中寄存器的内容作为操作数所在存储单元的有效地址EA(偏移地址)。寄存器仅限于BX、BP,SI、DI。 当使用BX、SI、DI时,操作数所在存储单元的段地址存在数据段寄存器DS中 当使用BP时,操作数所在存储单元的段地址存在堆栈段寄存器SS中。,18,MOV BX,SI,19,例5:已知: DS=2100H,DI=2000H 指令: MOV AX,DI 解: 物理地址=16DS+DI =162100H+2000H=23000H 指令执行结果是将23000H和23001H单元
7、的内容送入寄存器AX中。 注意: 1. 只有SI,DI,BX,BP 可作为间址寄存器。 2. 若操作数所在存储单元不在数据段DS中,需要在指令中用段超越前缀表明其所在段的段名。,20,5. 基址寻址 操作数在存储器内,指令中寄存器(BX或BP)的内容与指令指定的位移量之和作为操作数所在存储单元的有效地址EA(偏移地址)。 使用BX时,段地址为DS的内容; 使用BP时,段地址为SS的内容。,21,例6: SS=2000H,BP=1000H,COUNT=2000H (16位偏移量) 指令: MOV AX,COUNTBP 解:物理地址=16SS+BP+16位偏移量 =20000H+1000H+200
8、0H=23000H 指令执行结果是将23000H和23001H单元的内容送入寄存器AX中。 MOV BL,2BX 或 MOV BL,BX+2 ;(DS:BX+2)BL,22,6. 变址寻址 操作数在存储器内,指令将变址寄存器SI、DI内容与指令指定的位移量之和作为操作数所在存储单元的有效地址EA(偏移地址)。段地址规定为DS的内容。,例7:DS=3000H,SI=1000H,COUNT=2000H 指令: MOV AX,COUNTSI 解:物理地址=16DS+SI+16位偏移量 =30000H+1000H+2000H=33000H 指令执行结果是将33000H和33001H单元的内容送入寄存器
9、AX中。,23,MOV AX,2DI;AX (DS:(DI)+2) MOV AX,DI+2;AX (DS:(DI)+2) MOV BX,COUNT SI,24,7. 基址加变址寻址 操作数在存储器内。指令将基址寄存器BX、BP与变址寄存器SI、DI的内容之和再加上偏移量(8位或16位),得到操作数所在存储单元的有效地址EA。 当使用BX时,段寄存器为DS。 当使用BP时,段寄存器为SS。,25,例8:已知: DS=2000H,BX=1000H, SI=0500H,MK=1120H 指令: MOV AX, MKBXSI 解: 物理地址=20000H1000H0500H 1120H =22620H
10、 指令执行结果是 将22620H、22621H单元 的内容送入寄存器AX中。,26,MOV AX,BXSI,27,8.字符串寻址 用于字符串操作指令。规定变址寄存器SI中的内容是源数据串的段内偏移地址,而变址寄存器DI中的内容是目标数据串的段内偏移地址。 源数据串的段地址规定是数据段DS,目标数据串的段地址规定是附加段ES。指令执行后SI和DI的内容自动增量(或减量),增(或减)值为1或2。 例 : MOVSB 执行后: DISI SISI1 DIDI1,28,9. I/O端口寻址 寻找输入输出设备的端口地址,可分为直接端口寻 址和间接端口寻址。 直接端口寻址:由指令直接给出I/O设备的端口地
11、址。 它规定端口地址为8位,能寻址256 个端口 间接端口寻址:由DX给出I/O设备的端口地址。由于DX 是16位,因此间接端口寻址能寻址多达64K 个端口。,例:IN AL,20H ;将地址为20H的外设内容读入AL中 OUT DX,AL;AL中内容输出给以DX的内容为地址 的外设,29,10、 隐含寻址 指令隐含了的一个或两个操作数的地址,即操作数在默认的地址中。 例: AAA; 对AL中的内容进行十进制加法调整,并 把调整后的结果放入AH和AL中。这条指令的隐含操作数是AH和AL。,30,例:设BX=0158H, DI=10A5H, 位移量=1B57H, DS=2100H,求各寻址方式下
12、的有效地址和物理地址。 1)直接寻址 MOV AX,1B57H 有效地址=1B57H 物理地址=21000H+1B57H=22B57H 2)寄存器间接寻址 MOV AX, BX 有效地址=0158H 物理地址=21000H+0158H=21158H 3)基址寻址 MOV AX, BX+1B57H 有效地址=0158H+1B57H=1CAFH 物理地址=21000H+1CAFH=22CAFH 4)变址寻址 MOV AX,DI+1B57H EA=10A5H+1B57H=2BFCH 物理地址=21000H+2BFCH=23BFCH 5)基址加变址寻址 MOV AX,BX+DI+1B57H EA= 0
13、158H+10A5H+1B57H=2D54H 物理地址=21000H+2D54H=23D54H,31,4.2 8086的指令系统,指令系统包括九大类、133种基本指令,通过寻址方式的变化与数据形式(字节、字型)的组合,可构成上千条指令。指令系统按功能分为数据传送类、算术运算类、逻辑运算与移位类、串操作类、控制转移类、处理机控制、输入输出、中断等,本节将分别说明。,32,4.2.1数据传送指令 数据传送类指令实现CPU内部寄存器之间、CPU与存储器之间、CPU与I/O端口之间的数据传送。 1. 通用数据传送指令 包括 MOV、进栈、出栈指令、交换指令和换码指令。 (1)一般数据传送指令 MOV(
14、8位/16位) 格式:MOV OP目,OP源 功能: OP源 OP目 要求:OP目 可以是寄存器(除CS外)、存储器 OP源可以是寄存器、存储器和立即数,33,34,例: MOV AL,BL ; BL寄存器的内容送AL MOV SP,2AC0H ; 立即数2AC0H送SP MOV DI,AX ; AX中的16位数送DI和DI+1单元 MOV SI,ES:BP ; 附加段中BP所指向的两个单 元的内容送SI寄存器 MOV WORD PTR SI,6070H,35,注意: MOV指令的两个操作数(源、目的)均可采用不同的寻址方式。 源操作数和目的操作数的类型必须一致 不允许把立即数作目的操作数,也
15、不允许向段寄存器送立即数。 不允许在段寄存器之间、存储器单元之间传送数据。 CS、IP寄存器不能用作目的操作数。 MOV CS,AX 一般传送指令不影响标志位。,36,例:判断下列指令正确与否: MOV AL, BL MOV CX, BX MOV BX, DL MOV DX, 34H MOV DS, 1234H MOV ES, AX MOV CS, BX MOV SI, CX MOV DI, SI MOV 2000H, AX, , 类型不一致, 类型不一致 , 类型不一致 立即数不能送段寄存器, 类型不一致 立即数不能送段寄存器 , 类型不一致 立即数不能送段寄存器 CS不能作目的操作数, 类
16、型不一致 立即数不能送段寄存器 CS不能作目的操作数 , 类型不一致 立即数不能送段寄存器 CS不能作目的操作数 不能同时为存储器操作数, 类型不一致 立即数不能送段寄存器 CS不能作目的操作数 不能同时为存储器操作数 目的不能为立即数,37,(2) 堆栈操作指令 堆栈:是按“后进先出”原则工作的一段存储器区域。堆栈寄存器SS段地址 堆栈指针SP始终当前栈顶所在的存储单元地址, 即最新入栈数据所在的存储单元的地址。 压栈操作:PUSH OP 功能:把OP字数据压入栈中,结果SP-2SP 原则:高字节压在高地址,低字节压在低地址 执行过程: SPSP-1; SP OPH SPSP-1 ; SP
17、OPL,38,例:PUSH AX SP-1 SP,压AH (2) SP-1 SP,压AL,SP, SP SP-1,SP,AH,AL, SP SP-1,39,出栈操作: POP OP 功能:从栈中弹出数据 OP,结果SP+2SP 执行过程: OPL SP; SPSP+1 OPHSP ; SPSP+1,例:POP DX 弹出AL DL, SP+1 SP (2) 弹出AH DH, SP+1 SP,SP, SP SP+1, SP SP+1,40,例:已知: AX=1122H,BX=3344H,SP=1010H 执行指令: PUSH AX PUSH BX POP AX POP BX 执行后AX,BX,S
18、P的结果?,解:执行结果为 AX=3344H BX=1122H SP=1010H,41,注意: 堆栈操作总是按字进行的。 压入指令,SP-2,数据在栈顶。弹出指令正好相反。 操作数可以是存储器、寄存器或段寄存器操作数( CS不能用于POP ),不能是立即数。 PUSH CS POP CS PUSH 1200H POP 2300H 这两条指令主要用来进行现场保护和恢复,以保证子程序调用或中断程序的正常返回。,42,(3) 数据交换指令(8/16位) 格式: XCHG OP1,OP2 功能:实现OP1和OP2内容的相互交换。 操作数:通用寄存器或存储器,但不能均为内存 单元。 注意: 段寄存器和I
19、P不能作为交换指令的操作数。,例:XCHG AX, BX XCHG BH, BL XCHG AX, 1122H XCHG DS, AX XCHG SI, BP XCHG SI, DI ,43,46,(4) 换码指令(查表指令、翻译指令) 换码指令是一条完成字节翻译功能的指令。它可以使累加器中的一个值变换为内存表格中的某一个值,一般用来实现编码制的转换。,44,注意: 1. 使用前,先建立被转换代码(字节型)的数据表。 2. 换码指令只能使用寄存器BX、AL,不影响标志位。,45,例:数据段中存放有一张ASCII码转换表,设首地址为2000H,现欲查出表中第9个代码的ASCII码(设DS=400
20、0H)。,可用如下指令实现: MOV BX,2000H ;BX表首地址 MOV AL,09H ;AL序号 XALT ; 查表转换 执行后得到:AL=39H,46,2. 目标地址传送指令 此类指令的功能是将操作数所在存储器的地址送入目标寄存器。 注意: 1. OP源必须是存储器操作数, OP目必须是16位的通用寄存器 。 2. 地址传送指令不影响状态标志位。,(1)取有效地址EA指令: 格式:LEA OP目, OP源 功能:将源操作数的有效地址EA送到目的操作数。 例: LEA AX,5678H; AX 5678H LEA BX,BP+SI;BX BP+SI,47,符号地址,48,(2)指针送寄
21、存器和DS指令 格式: LDS OP目,OP源 功能:把OP源指定的4个字节内容取出,低地址的两字节OP目,高地址的两字节DS。 例:LDS DI,2130H;2130H和2131H单元中的内容DI;2132H和2133H单元中的内容DS,49,结果:DI = 1234H AX = 2233H,例:下列指令执行后DI ,AX的值是多少? LDS DI,1200H MOV AX,DI,50,(3)指针送寄存器和ES指令,格式:LES OP目,OP源 功能:本指令与LDS指令的操作基本相同,所不同的是将OP源4个字节中高地址的两字节ES。 例:LES DI,2130H; 2130H和2131H单元
22、中的内容DI; 2132H和2133H单元中的内容ES,51,3. 标志寄存器传送指令 读取标志指令 格式:LAHF ;AH标志寄存器低8位 特点: 此指令操作结果不影响标志寄存器。 (2) 设置标志指令 格式:SAHF ;标志寄存器低8位AH 特点: 此指令直接为标志寄存器的低8位赋值。,52,(3) 对标志寄存器的堆栈操作指令 格式:PUSHF;将标志寄存器的值压栈。 POPF; 从栈顶弹出一个字送标志寄存器。 特点: 1.PUSHF不影响标志寄存器,而POPF直接为标志寄存器赋值。 2.通常两指令成对出现,用来保护和恢复标志寄存器的内容。,53,4.2.2 算术运算指令 8086的算术运
23、算类指令能够对二进制或十进制(BCD码)数进行加、减、乘、除运算,操作数的数据形式可以是8位或16位的无符号数或带符号数。 1. 加法指令 (1) 不带进位的加法指令: 格式:ADD OP目, OP源 ; 功能:OP目 OP源 + OP目,根据结果设置标志位 例:ADD AL,50H ; AL+50HAL ADD DI,SI ; DI+SI DI ADD AX,DI ; (DI)、(DI+1)内容+AX AX,54,ADD BX+DI,AX ;(BX+DI)和(BX+DI+1)2个单元的内容+AX,结果放在BX+DI和BX+DI+1所指单元 ADD AX,BX+2000H ;BX+2000H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统
链接地址:https://www.31doc.com/p-3207235.html