第4章微机原理 (2).ppt
《第4章微机原理 (2).ppt》由会员分享,可在线阅读,更多相关《第4章微机原理 (2).ppt(123页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章8086的寻址方式和指令系统的寻址方式和指令系统 第一节第一节 8086 的寻址方式的寻址方式 第二节第二节 8086 指令系统概述指令系统概述 第三节第三节 8086 指令系统指令系统汇编语言指令格式汇编语言指令格式汇编语言指令格式汇编语言指令格式操作码操作码操作码操作码 目标操作数目标操作数目标操作数目标操作数 ,源操作数源操作数源操作数源操作数 双操作数指令:双操作数指令:ADD BXADD BX,12341234单操作数指令:单操作数指令:INC AXINC AX无操作数指令:无操作数指令:NOP NOP 第一节第一节 8086的寻址方式的寻址方式 寻址方式是指指令采取何种
2、方式获取所需的操作寻址方式是指指令采取何种方式获取所需的操作数。寻址方式的多少是恒量指令系统灵活与否的重要数。寻址方式的多少是恒量指令系统灵活与否的重要标志。标志。在在这这种种寻寻址址方方式式中中,操操作作数数作作为为指指指指令令令令的的的的一一一一部部部部分分分分直直接接跟跟在在操操作作码码的的后后面面,操操作作数数与与操操作作码码一一起起放放在在代代码段中。这种寻址方式叫立即数寻址。码段中。这种寻址方式叫立即数寻址。例:例:例:例:MOV AX,1234H(机器码:B83412H)这条指令的功能是:把立即数1234H送入AX中。一一一一 立即数寻址立即数寻址立即数寻址立即数寻址 操操作作数
3、数就就在在CPUCPU的的内内部部寄寄寄寄存存存存器器器器中中,操操作作数数所所在在的的寄寄存存器器名名在在指指令令中中给给出出。这这种种寻寻址址方方式式称称寄寄存存器器寻寻址址方式。方式。二二二二 寄存器寻址寄存器寻址寄存器寻址寄存器寻址例:例:例:例:MOV DS,AX对1616位操作数,寄存器可以为:AXAX、BXBX,CXCX,DXDX,SISI,DIDI,SPSP,BPBP。对于8 8位操作数,寄存器可以为:AHAH,ALAL、BHBH,BLBL,CHCH,CLCL,DHDH,DLDL。采用寄存器寻址方式的指令在执行时,操作就在CPU内部进行,不需要使用总线周期,执行速度快。它是执行
4、速度 最快最快最快最快 的一类寻址方式。使使用用直直接接寻寻址址方方式式时时,数数据据位位于于内内存存中中,存存放放数数据据的的存存储储单单元元的的有有有有效效效效地地地地址址址址(偏偏偏偏移移移移量量量量)由由指指令令直直接接指指出出,直直接接寻寻址址是是对对存存储储器器进进行行访访问问时时可可采采用用的的最最简简单的方式。单的方式。例:例:例:例:若 DS=3000H MOV AX,2010H三三三三 直接寻址直接寻址直接寻址直接寻址物理地址=DS162010H=3000H162010H=32010H指令功能是将32010H和32011H两单元的内容送到AX中。要注意的是采用直接寻址方式时
5、,如果指令前面没有用前缀指明操作数在哪一段,则默认默认默认默认段寄存器是数据段寄存器DS。也可以通过前缀改变段寄存器。MOV AXMOV AX,ESES:2010H2010H 采采用用寄寄存存器器间间接接寻寻址址方方式式时时,操操作作数数位位于于内内存存中中,存存放放数数据据的的存存储储单单元元的的 有有有有效效效效地地地地址址址址 由由寄寄存存器器指指出出,这这些些寄寄存存器器可可以以为为 BX、BP、SI 和和 DI 之之一一或或它它们们的的特特定定组组合合。根根据据上上述述四四个个寄寄存存器器的的不不同同组组合合方方式式,寄寄存存器器间接寻址又可以分为四种不同形式。间接寻址又可以分为四种
6、不同形式。使使用用 BP 间间接接寻寻址址时时,默默认认的的段段寄寄存存器器是是 SS,其其它它情况下默认使用情况下默认使用 DS 提供段地址。提供段地址。四四四四 寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址 采用采用 BXBX、BP BP 间接寻址称为间接寻址称为基址寻址基址寻址基址寻址基址寻址采用采用 SISI、DI DI 间接寻址称为间接寻址称为变址寻址变址寻址变址寻址变址寻址 由由于于上上述述4 4个个寄寄存存器器寻寻址址时时所所黙黙认认的的段段寄寄存存器器不不同同,这样又可以分两种情况:这样又可以分两种情况:1 1 1 1 基址寻址和变址寻址基址寻址和变址寻址基址寻址和
7、变址寻址基址寻址和变址寻址以SISI、DIDI、BXBX进行间接寻址,默认使用DSDS提供段地址。此时数据段寄存器DS内容加上SI、DI、BX中的16位偏移量,获得操作数的地址。例:例:例:例:MOV AX,SI若DS=3000H SI=1000H也可以通过前缀改变段寄存器。寄存器BPBP间接寻址,默认的段寄存器为SSSS。此时堆栈段寄存器SSSS内容加上BP中的16位段内偏移地址,即得操作数的地址。例:例:例:例:MOV AX,BP若SS=3000H BP=2000H物理地址=SS16BP=30000H2000H=32000H指令功能是将32000H和32001H两单元的内容送到AX中。在在
8、这这种种寻寻址址方方式式中中,操操作作数数存存放放在在内内存存中中。操操作作数数的的地地址址是是由由段段寄寄存存器器内内容容1616加加上上SISI、DIDI、BXBX、BPBP之之一一的的内内容容,再再加上由指令所指出的加上由指令所指出的8 8位或位或1616位的位的位移量位移量位移量位移量而得到的。而得到的。例:例:例:例:MOV AX,SI+300H 或或 MOV AX,300HSI 物 理 地 址=DS16 SI DISP=30000H 1000H 0300H=31300H指令功能是将31300H和31301H两单元的内容送到AX中。2 2 2 2 相对的基址寻址和变址寻址(寄存器相对
9、寻址)相对的基址寻址和变址寻址(寄存器相对寻址)相对的基址寻址和变址寻址(寄存器相对寻址)相对的基址寻址和变址寻址(寄存器相对寻址)在在80868086中,通常把中,通常把BXBX和和BPBP作为作为基址寄存器基址寄存器基址寄存器基址寄存器,而,而把把SISI、DIDI作为作为变址寄存器变址寄存器变址寄存器变址寄存器。将这两种寄存器联合起来。将这两种寄存器联合起来进行的寻址就称为基址加变址寻址。这时,操作数的地进行的寻址就称为基址加变址寻址。这时,操作数的地址是段寄存器内容址是段寄存器内容1616加上基址寄存器内容(加上基址寄存器内容(BXBX或或BPBP内容),再加上变址寄存器内容(内容),
10、再加上变址寄存器内容(SISI或或DIDI内容)而得到内容)而得到的。的。在在BPBP参与寻址时,默认使用堆栈段寄存器参与寻址时,默认使用堆栈段寄存器SSSS,否否则默认使用数据段寄存器则默认使用数据段寄存器DSDS。3 3 3 3 基址加变址寻址基址加变址寻址基址加变址寻址基址加变址寻址例例例例:MOV AX,BX+SI 或或 MOV AX,BXSI物理地址=DS16SIBX=30000H1000H3000H=34000H指令功能是将34000H和34001H两单元的内容送到AX中。例:例:例:例:MOV AX,BP+SI物理地址=SS16BPSI=30000H3000H1000H=3400
11、0H指令功能是将34000H和34001H两单元的内容送到AX中。这种寻址实际上是基址加变址寻址的扩充。即操作数的地址是由基址加变址方式得到的地址再加上由指令指明的8位或16位的位移量位移量位移量位移量而得到的。在BPBP参与寻址时,默认使用堆栈段寄存器SSSS,否则默认使用数据段寄存器DSDS。4 4 4 4 相对的基址加变址寻址相对的基址加变址寻址相对的基址加变址寻址相对的基址加变址寻址例例例例:MOV AX,BX+SI+300H或MOV AX,300HBXSI物理地址=DS16SIBXDISP=30000H1000H3000H0300H=34300H指令功能是将34300H和34301H
12、两单元的内容送到AX中。五五五五 寻址方式总结寻址方式总结寻址方式总结寻址方式总结第二节第二节 8086指令系统概述指令系统概述 一一 机器指令格式机器指令格式 8086的指令为的指令为 1-6 字节,包括字节,包括操作码域操作码域操作码域操作码域和和操作数域操作数域操作数域操作数域。1 1 1 1 操作码域操作码域操作码域操作码域 指令的第一或前两字节为操作码域,表示指令指令的第一或前两字节为操作码域,表示指令的操作码和寻址方式。的操作码和寻址方式。操作码域之后部分为操作数域。一般包括以下形式。操作码域之后部分为操作数域。一般包括以下形式。q 2 2字节有效地址(偏移量)字节有效地址(偏移量
13、)q 1 1或或2 2字节位移量字节位移量q 1 1或或2 2字节立即数字节立即数q 1 1或或2 2字节位移量后跟字节位移量后跟1 1或或2 2字节立即数字节立即数q 2 2字节偏移量和字节偏移量和2 2字节段地址字节段地址2 2 2 2 操作数域操作数域操作数域操作数域 指令执行时间取决于指令执行时间取决于CPU的时钟周期的长短和执的时钟周期的长短和执行指令所需的时钟周期数。指令执行时间一般由以下行指令所需的时钟周期数。指令执行时间一般由以下三部分组成:三部分组成:指令基本执行时间指令基本执行时间指令基本执行时间指令基本执行时间 计算有效地址的时间计算有效地址的时间计算有效地址的时间计算有
14、效地址的时间 存取操作数访问内存的时间存取操作数访问内存的时间存取操作数访问内存的时间存取操作数访问内存的时间 由于由于8086内部总线接口部件和执行部件是并行工内部总线接口部件和执行部件是并行工作的,在计算指令执行时间时假定指令已经预取到指作的,在计算指令执行时间时假定指令已经预取到指令队列中,没有考虑取指令时间。如果没能及时预取令队列中,没有考虑取指令时间。如果没能及时预取指令,指令执行时间需适当延长。指令,指令执行时间需适当延长。二二 指令执行时间指令执行时间例:例:例:例:8086 CPU时钟为5MHz,计算各种ADD指令的执行时间。设时钟周期为0.2s 寄存器寻址 ADD AXADD
15、 AX,BXBX 基本执行时间:3个时钟 执行时间:3*0.2s=0.6s 基址变址寻址(结果在寄存器中)ADD AXADD AX,BP+SIBP+SI 基本执行时间:9个时钟 计算有效地址时间:8个时钟 访问内存1次 操作数在偶地址:4个时钟 操作数在奇地址:4+4个时钟 源操作数在偶地址执行时间:(9+8+4)*0.2s=4.2s 源操作数在奇地址执行时间:(9+8+4+4)*0.2s=5s 基址变址寻址(结果在内存中)ADD BP+SI,AX 基本执行时间:16个时钟 计算有效地址时间:8个时钟 访问内存2次 目标操作数在偶地址:4+4个时钟 目标操作数在奇地址:8+8个时钟 目标操作数
16、在偶地址执行时间:(16+8+8)*0.2s=6.4s 目标操作数在奇地址执行时间:(16+8+16)*0.2s=8s 8086的指令系统包含133条指令,这些指令大致可分为6种类型:数据传送指令数据传送指令数据传送指令数据传送指令 逻辑运算和移位指令逻辑运算和移位指令逻辑运算和移位指令逻辑运算和移位指令 算术运算指令算术运算指令算术运算指令算术运算指令 串操作指令串操作指令串操作指令串操作指令 控制转移指令控制转移指令控制转移指令控制转移指令第三节第三节 8086指令系统指令系统8086有4类传送指令,实现CPU的内部寄存器之间、CPU和存储器之间、CPU和I/O端口之间的数据传送。1 1
17、1 1通用传送指令通用传送指令通用传送指令通用传送指令 通用传送指令中包括:最基本的传送指令 MOVMOV 交换指令 XCHGXCHG 堆栈指令 PUSHPUSH和POPPOP一一 数据传送指令数据传送指令指令格式:MOV OPRDlMOV OPRDl,OPRD2OPRD2执行功能:该指令可把源操作数复制到目标操作数中。OPRD1:可以是累加器、寄存器和存贮器。OPRD2:可以是累加器、寄存器、存贮器以及立即数(1 1 1 1)最基本的传送指令最基本的传送指令最基本的传送指令最基本的传送指令例例例例:MOV AL,BLMOV ES,DXMOV AX,BXMOV DI,CXMOV CX,1000
18、HMOV BL,40MOV DX,5060HMOV WORD PTRSI,6070MOV BYTE PTRBX,55H注意:注意:注意:注意:可以传送8位或16位操作数。不能在两个存贮器单元之间进行数据直接传送。MOV AL,1000H MOV 2000H,AL CSCS和IPIP不能作为目标操作数。BPBP参与寻址默认使用段寄存器SSSS,否则默认使用DSDS。不能将立即数直接传送到段寄存器。MOV DS,5000H MOV AX,5000H MOV DS,AX 在执行给SSSS赋值的指令时,在本条指令和下一条指令执行期间自动禁止外部中断。MOV AX,5000HMOV SS,AXMOV S
19、P,1000H 所有通用传送指令不影响标志不影响标志不影响标志不影响标志。数据传送方向示意图数据传送方向示意图数据传送方向示意图数据传送方向示意图 指令格式:XCHG OPRDlXCHG OPRDl,OPRD2OPRD2执行功能:交换指令把一个字节或一个字的源操作数与目的操作数相交换。XCHG AL,CL ;累加器低8位和通用寄存器CL之间交换XCHG AX,DI;累加器AX和通用寄存器DI之间交换XCHG AX,2530 ;累加器AX和内存2530单元的字型数交换XCHG BX,SI ;通用寄存器BX和存储器SI和SI+1两个单元交换(2 2)交换指令)交换指令)交换指令)交换指令注意:注意
20、:注意:注意:目标操作数和源操作数不能均为内存单元。段寄存器段寄存器段寄存器段寄存器和IPIP不能用于交换指令。不影响标志不影响标志不影响标志不影响标志。堆栈是一个后进先出的线性表。堆栈是一个后进先出的线性表。堆栈是一个后进先出的线性表。堆栈是一个后进先出的线性表。压入堆栈指令压入堆栈指令压入堆栈指令压入堆栈指令:PUSH OPRDPUSH OPRDSP-2 OPRDSP弹出堆栈指令弹出堆栈指令弹出堆栈指令弹出堆栈指令:POP OPRDPOP OPRDSPOPRD SP+280868086的堆栈向地址减小的方向生长。的堆栈向地址减小的方向生长。的堆栈向地址减小的方向生长。的堆栈向地址减小的方向
21、生长。(3 3 3 3)堆栈操作指令)堆栈操作指令)堆栈操作指令)堆栈操作指令 例:例:例:例:MOV AX,1234H MOV DX,5678H MOV SP,2000H PUSH AX PUSH DX POP DX POP AX 注意:注意:注意:注意:8086的堆栈操作是按字字字字进行的。PUSH AL PUSH AX CSCS内容可以入栈但不能弹出数据到CSCS。堆栈内容按照后进先出的顺序传送,保护和恢复寄存器内容需按相反顺序进行。PUSH AXPUSH BXPUSH CXPOP CXPOP BXPOP AX例:例:例:例:交换AX,BX的内容PUSH AXPUSH BXPOP AXP
22、OP BX8086有3条地址传送指令。(1 1)取有效地址指令)取有效地址指令)取有效地址指令)取有效地址指令LEALEA指令格式:LEA OPRDlLEA OPRDl,OPRD2OPRD2执行功能:该指令把源操作数OPRD2(地址偏移量)传送至目的操作数OPRDl中。源操作数必须是一个内存单元地址,目标操作数必须是一个16位的通用寄存器。这条指令通常用于使一个寄存器作为地址指针。LEA AX,2728相当于MOV AX,2728 LEA BX,BP+SI2 2 2 2地址传送指令地址传送指令地址传送指令地址传送指令(2 2)LDSLDS指令指令指令指令该指令完成一个地址指针的传送。地址指针包
23、括段地址和地址偏移量。指令执行时,将段地址送入DS,地址偏移量送入一个16位的指针寄存器或变址寄存器。例:例:例:例:LDS SI,BX是把存放于内存数据段中BX所指的32位地址指针的段地址送入DS,偏移地址送入SI。(3 3)LESLES指令指令指令指令这条指令除将地址指针的段地址送入ES外,其他操作与LDS的类似。例:例:例:例:LES DI,BX+50是把存放于内存数据段中以BX+50的结果为有效地址的一个32位地址指针的段地址送入ES,偏移地址送入DI。8086有3条标志传送指令。(1 1)读取标志指令)读取标志指令)读取标志指令)读取标志指令LAHFLAHF执行功能:将标志寄存器的低
24、八位送入AHAH。(2 2)设置标志指令)设置标志指令)设置标志指令)设置标志指令SAHFSAHF执行功能:将AH AH 送入标志寄存器的低八位。标志传送指令标志传送指令标志传送指令标志传送指令OFOFDFDFIFIFTFTFSFSFZFZFAFAFPFPFCFCF(3 3)标志寄存器入出栈指令)标志寄存器入出栈指令)标志寄存器入出栈指令)标志寄存器入出栈指令PUSHFPUSHFPOPFPOPF 例:例:例:例:读取标志内容到AXPUSHFPOP AX将AX内容复制到标志寄存器PUSH AXPOPF8086有类累加器专用传送指令。(1 1)输入输出指令)输入输出指令)输入输出指令)输入输出指令
25、CPU使用ALAL对位端口进行输入输出操作,通过AXAX对1616位端口进行输入输出操作。直接输入输出指令直接输入输出指令直接输入输出指令直接输入输出指令指令格式:IN IN 累加器,端口号累加器,端口号累加器,端口号累加器,端口号 OUT OUT 端口号,累加器端口号,累加器端口号,累加器端口号,累加器端口号范围:端口号范围:端口号范围:端口号范围:0 0255255(0 0FFHFFH)例:例:例:例:IN AL,50HIN AX,80HOUT 60H,AX4 4 4 4累加器专用传送指令累加器专用传送指令累加器专用传送指令累加器专用传送指令 间接输入输出指令间接输入输出指令间接输入输出指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章微机原理 2 微机 原理
限制150内