微机原理与接口技术(徐惠民主编)第3章.ppt.ppt
《微机原理与接口技术(徐惠民主编)第3章.ppt.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术(徐惠民主编)第3章.ppt.ppt(126页珍藏版)》请在三一办公上搜索。
1、第 三 章 8086/8088 指 令 系 统1.1 8086/8088寻址方式1.2 8086/8088指令系统,指令及指令集计算机能够识别和执行的基本操作命令,指令的作用,告诉CPU干什么?What?告诉CPU从哪儿取数据?Where?告诉CPU下一条指令在哪儿?Where?,指令的格式,10111011 00110100 00010010,指令的数量,数值计算信息处理多媒体,指令数量取决于CPU的功能,80X86CPU指令数量,8086:133条整数运算输入输出程序控制扩充:多媒体指令 浮点运算指令Cache处理指令,指令系统(CISC复杂与 RISC精简),指令数量影响:,程序的执行速
2、度CPU的复杂程度,指令的通用格式 标号:指令助记符 操作数1,操作数2;注释,80X86指令在内存的存放形式,80X86的指令操作码和操作数由一或多个字节(8位)组成二进制与助记符(把十六进制数1234送CPU的BX寄存器)双操作数:操作码 目的操作数,源操作数,低字节在前(34H)高字节在后(12H),指令的助记符格式,标号:指明指令所在地址。操作码:用来说明该指令所要完成的操作。操作数1:称为目的操作数dest,它不仅可以作为指令操作的一个对象,还可以用来存放指令操作的结果。操作数2:常被称为源操作数src,它表示参与指令操作的一个对象。注释:分号后的内容是对指令的解释。,标号:操作码
3、操作数1,操作数2;注释,操作数类型 按操作数在指令中的所起的作用,可以分为 目的操作数:不仅可以作为指令操作的一个对象,还可 以用来存放指令操作的结果源操作数:表示参与指令操作的一个对象 按操作数的存储位置分,可以分为立即数。就是在指令中直接给出常数。寄存器操作数。其书写形式就是寄存器名。存储器操作数。其书写形式是存储单元的逻辑地址。,指令的操作码和操作数,每种指令的操作码:用一个助记符表示(指令功能的英文缩写)对应着机器指令的一个或多个二进制编码指令中的操作数:可以是一个具体的数值可以是存放数据的寄存器或指明数据在主存位置的存储器地址,3.1 8086/8088 寻址方式,指令系统设计了多
4、种操作数的来源寻找操作数的过程就是操作数的寻址把寻找操作数的方式叫做(操作数)寻址方式理解操作数的寻址方式是理解指令功能的前提操作数采取哪一种寻址方式一方面,会影响处理器执行指令的速度和效率另一方面,对程序设计也很重要,MOV指令的功能,3.1.1 立即数寻址方式,指令中的源操作数为常数,称为立即数寻址.立即数寻址方式常用来给寄存器赋值,多以常量形式出现,MOV AX,0102H;AX0102H,例:MOV AX,1C8FH MOV BYTE PTR2A00H,8FH 错误例:MOV 2A00H,AX;错误!,注:立即数不能作目的操作数。以AF打头的数字,前面要加一个0,如 MOV AX,0F
5、F00H,立即数寻址方式,3.1.2 寄存器寻址方式,操作数存放在CPU的内部寄存器中。源操作数与目的操作数字长要相同不允许将立即数传送到段寄存器,MOV AX,BX;AXBX,例:MOV AX,BX MOV CL,AL 错误例:MOV AX,BL;字长不同,注意:源、目的操作数的长度一致,3.1.3 直接寻址,直接寻址方式的有效地址在指令中直接给出用中括号包含有效地址,表达存储单元的内容默认的段地址在DS段寄存器,可使用段超越前缀改变。偏移地址也可用符号地址来表示,如ADDR、VAR,MOV AX,2000H;AXDS:2000H,MOV AX,2A00H MOV DX,ES:2A00H M
6、OV ES:2A00H,DX MOV SI,TABLE_PTR,例 MOV AX,1000H;若 DS=2000H,(21000H)=32H,(21001H)=45H,功能:是将一个有效地址是1000H的存储单元的内容传送到AX。该存储单元的物理地址为:PA=2000H*10H+1000H=20000H+1000H=21000H指令执行结果为:AX=4532H。,3.1.4 寄存器间接寻址方式,操作数的 偏移地址放在间址寄存器中。只有SI、DI、BX和BP可作间址寄存器。,1)以SI、DI、BX间址寻址时,操作数在数据段(DS)区域中,即:DX*10H+(SI、DI、BX)中的偏移量=操作数物
7、理地址。2)以BP间址寻址时,操作数在堆栈段(SS)区域中,即:SS*10H+(BP)中的偏移量=操作数物理地址。,1选择SI、DI、BX作为间址寄存器操作数在数据段(没有使用段超越时)MOV AX,DI 若已知(DS)=5000H,(DI)=1600H,则操作数的物理地址为:5000H10H+1600H=51600H 执行的结果为(AX)=789AH,2选择BP作为间址寄存器 操作数在堆栈段 MOV BP,AX 若已知(SS)=6000H,(BP)=1500H,则操作数的物理地址为:6000H10H+1500H=61500H 若已知(AX)=5566H,则指令的执行结果为:66H送到6150
8、0H内存单元,55H送到61501H内存单元,3.1.5 变址寻址 以指定的寄存器内容,加上指令中给出的8位或16位位移量(必须要以一个段寄存器作为基地址),作为操作数的地址。作为变址寻址的寄存器可以是SI、DI、BX、BP四个寄存器中的任一个.若用SI、DI和BX作为变址寄存器,操作数在数据段,即段地址在DS寄存器;若用BP变址,则操作数在堆栈段,即段地址在SS寄存器 例:MOV AX,2000HSI 若(SI)=1200H,(DS)=1500H,则操作数的地址为18200H,MOV AX,SI+06H;AXDS:SI+06H,MOV AX,06HSI;AXDS:SI+06H,3.1.6 基
9、址-变址相对寻址方式 这种寻址方式的有效地址是一个基址寄存器内容和一个变址寄存器内容与由指令中指定的8位或16位偏移量之和。,(1)若用BX作为基地址,则操作数在数据段中。DS10H+BX+(SI/DI)+(disp8/disp16)(2)若用BP作为基地址,则操作数在堆栈段中。SS10H+BP+(SI/DI)+(disp8/disp16)例 MOV AX,BX+SI+4500H 若DS=3000H,BX=2000H,SI=1000H,(37500H)=56H,(37501H)=12H,指令执行情况如图所示,执行结果为:AX=1256H。,基址加变址相对寻址方式也可以表示成几种不同的形式,其中
10、COUNT为位移量。MOV AX,BX+SI+COUNT MOV AX,COUNT BX SI MOV AX,BX+COUNT SI MOV AX,BX COUNT SI MOV AX,BX+SI COUNT MOV AX,COUNTSI BX 注意:上述寻址方式中,除立即寻址和寄存器寻址外,其它寻址方式的操作数都是通过访问存储器取得,对这几种寻址方式的段寄存器的使用情况如下:(1)若不指出段基址,80868088会采用默认的段寄存器。规则为:偏移量表达式出现BP则使用SS;否则使用DS。(2)可以用“段寄存器名:”的形式指出段基址,此时默认规则不再起作用。如:“MOV AX,DS:BP”中段
11、基址采用DS值,而不是默认的SS的值。在这里将“DS:”称为段超越或段前缀,它超越了默认的访问段。,注意,1.区别立即数寻址和直接寻址MOV AX,126MOV AX,1262.区别寄存器寻址和寄存器间接寻址 MOV AX,BXMOV AX,BX3.双操作数指令中,不能同为存储器操作数。4.CS不能为目的寄存器。,3.2 8086/8088指令系统,数据传送(Data transfer)算术运算(Arithmetic)逻辑运算和移位(Logic)串操作(String manipulation)控制转移(Control transfer)处理器控制(Processor control),1.通用
12、数据传送指令 一般传送指令MOV 堆栈操作指令PUSH和POP 交换指令XCHG 查表转移指令XLAT 字位扩展指令,3.2.1 数据传送指令,(1)数据传送指令 格式:MOV OPD,OPS 操作:OPD OPS 说明:MOV指令将源操作数OPS的内容传送到目的地OPD。指令执行后OPD与OPS的内容相等,即OPD=OPS,源操作数本身不变。,CPU内部寄存器之间数据的任意传送(除了代码段寄存器CS和指令指针IP以外)。MOV AL,BL;字节传送MOV CX,BX;字传送MOV DS,BX,立即数传送至CPU内部的通用寄存器组(即AX、BX、CX、DX、BP、SP、SI、DI)MOV CL
13、,4MOV AX,03FFHMOV SI,057BH CPU内部寄存器与存储器之间的数据传送。MOV AL,2000HMOV AX,SIMOV DI,CXMOV SI,BLOCKBPMOV DS,DATASI+BXMOV DESTBP+DI,ES,能实现用立即数给存储单元赋值MOV BYTE PTR 2000H,25HMOV WORD PTR SI,35H注意:BYTE PTR 指字节单元;WORD PTR指字单元,对于MOV 指令应注意几个问题:MOV传送指令中,不允许对CS和IP进行操作;两个存储器操作数之间不允许直接进行信息传送;若要将2000H单元的内容,传送至同一段的3000H单元中
14、去,MOV指令不能直接完成这样的传送,必须借助寄存器来完成传送:MOV AL,2000H;MOV 3000H,AL,两个段寄存器之间不能直接传送信息,也不允许用立即寻址方式为段寄存器赋初值;(X)MOV DS,100H;(X)MOV DS,ES;目的操作数,不能用立即寻址方式。MOV指令不影响标志位,2.堆栈操作指令。堆栈:按后进先出的原则组织的内存区域即堆栈段。用SS指示段地址。堆栈指针SP总是指向栈顶(最后压入的数的地址)。SP的初值规定了所用堆栈的大小(堆栈的深度),一个栈的深度最大为64kB。堆栈用途:临时存放数据、传递参数、保存和恢复寄存器 堆栈指令:入栈和出栈,1)入栈指令 格式:
15、PUSH OPS 操作:SP SP-2,SP+1 SP OPS 操作数类型:OPS可以是存储器、通用寄存器和段寄存器,但不能是立即数。说明:PUSH指令先将SP的内容减2,然后再将操作数OPS的内容送入由SP指出的栈顶即偏移地址为SP和SP+1的两个连续字节中。例10 PUSH AX;通用寄存器内容入栈 PUSHCS;段寄存器内容入栈 PUSHSI;字存储单元内容入栈,2)出栈指令 格式:POP OPD 操作:OPD SP+1 SP,SP SP+2 操作数类型:OPD可以是存储器、通用寄存器或段寄存器(但不能是CS),同样,不能是立即数。说明:POP指令先将堆栈指针SP所指示的栈顶存储单元的值
16、弹出到操作数OPD中,然后再将SP的内容加2。入栈和出栈操作如图所示。,例:POP AX;栈顶内容弹出至通用寄存器 POP ES;栈顶内容弹出段寄存器 POP MEMDI;栈顶内容弹出至字存储单元,(3)数据交换指令 格式:XCHG OPD,OPS 操作:OPD OPS 操作数类型:可以是寄存器或存储器,但不能二者同时为存储器。说明:XCHG指令将两个操作数内容进行交换。交换的内容可以是一个字节(8位),也可以是一个字(16位),两个操作数的长度必须一致。(段寄存器不能参加交换)例XCHGAL,CL;8位寄存器间内容交换XCHGAX,DX;16位寄存器间内容交换XCHGBX,DATASI;寄存
17、器与存储单元间交换,4累加器专用传送指令 输入输出指令IN,OUT输入输出指令完成外设与CPU之间的数据传送。输入指令IN用于从外设端口接收数据,输出指令OUT则向端口发送数据。IN指令一般格式:IN AL,n;ALnIN AX,n;AXn+1nIN AL,DX;ALDX IN AX,DX;AXDX+1DX 功能:从I/O端口输入数据至AL或AX.输入指令允许把一个字节或一个字由一个输入端口传送到AL或AX中。,输出指令 格式:OUT PORT,AL/AX 操作:(PORT)AL/AX 操作数类型:同输入指令 说明:将累加器AL(8位)或AX(16位)的内容输出到指 令指定的I/O端口中。注意
18、:输入输出指令不影响标志位例 OUT 40H,AL;(40H)AL OUT 20H,AX;(21H,20H AX)OUT DX,AL;(DX)AL OUT DX,AX;(DX1,DX)AX,(2)查表转换指令格式:XLAT 功能:完成一个字节的查表转换:AL=(DS)16(BX)+(AL)要求:寄存器AL的内容作为一个256字节的表的下标;表的基地址在BX中,转换后的结果存放在AL中。,例:设(DS)=A000H,(BX)=0010H,表的起始地址为A0010H,表中放数字0-9的ASCII码 MOVBX,0010H MOVAL,06H XLAT 执行该程序后,(AL)=36H本指令可用在数制
19、转换、函数表查表、代码转换等场合。,A000:0010,30H,31H,A000:0016,36H,3地址传送指令(1)有效地址送寄存器指令 格式:LEA REG,OPS 操作数类型:OPS为存储器操作数,REG为16位通用寄存器。说明:将源操作数OPS的有效地址即16位偏移地址装入到16位通用 寄存器REG中。,例 设DS=3000H,BX=2000H,SI=1000H,LEA AX,BX+SI+1000H 执行的结果是:AX=BX+SI+1000H=4000H区别:MOV AX,BX+SI+1000H指令是将偏移地址为BX+SI+1000H的内存单元的内容送到AX中,结果是AX=1256H
20、。,例 LDS SI,0100H设:原来DS=3000H,(30100H)=60H,(30101H)=05H,(30102H)=18H,(30103H)=20H,上述指令执行后,SI=0560H,DS=2018H,执行过程如图3-11所示。,(2)地址指针装入DS指令 格式:LDS REG,OPS 操作数类型:OPS为存储器操作数,REG为16位通用寄存器。说明:将OPS指定的内存中读取双字存储单元内容,将其中的 低字的内容赋给REG,高字内容传赋给DS。,(3)地址指针装入ES指令 格式:LES REG,OPS 操作数类型:OPS为存储器操作数,REG为16位通用寄存器。这条指令除将地址指针
21、的段地址部分送入ES外,与LDS类似。例如:LES DI,BX,6.标志传送指令指令格式:LAHF;AH FLAGS的低8位 SAHF;FLAGS的低8位 AH说明:LAHF和SAHF指令隐含的操作数为AH寄存器和标志寄存器FLAGS的低半字节。涉及标志寄存器FLAGS中的5个状态标志位为SF、ZF、AF、PF以及CF。,(2)标志入、出栈指令 指令格式:PUSHF;SP SP-2,SP+1SP FLAGS POPF;FLAGS SP+1SP,SP SP+2 这两条指令可以用来修改标志寄存器中标志位的值。此指令不影响标志位。,3.2.2 算术运算指令,算术运算类指令用来执行二进制的算术运算:加
22、、减、乘、除。这类指令会根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果;使用他们时请留心有关状态标志重点掌握加法指令:ADD、ADC、INC 减法指令:SUB、SBB、DEC、CMP、NEG,加法和减法指令,加法指令:ADD,ADC和INC减法指令:SUB,SBB,DEC,NEG和CMP他们分别执行字或字节的加法和减法运算,除INC和DEC不影响CF标志外,其他按定义影响全部状态标志位,1加法指令(1)加法指令 格式:ADD OPD,OPS 操作:OPD OPD+OPS 说明:ADD指令将OPD与OPS相加,并将结果存回OPD。加法指令影响全部6个状态标志位。操作数类型:OPD
23、可以是寄存器或存储器,OPS可以是寄存器、存储器或立即数。但是OPS和OPD不能同时为存储器。另外,OPD、OPS不能为段寄存器。(段寄存器不能参加、减、乘、除运算)。具体操作数组合见表3-1,适合加、减、乘、除运算。,表3-1加、减、乘、除运算操作数类型组合,例:ADD AL,20;累加器内容与立即数相加 ADD DX,SI;寄存器内容相加 ADD AX,BX;寄存器与存储器内容相加 ADD DATADI,AL ADD BYTE PTRBPSI,50H;存储器内容与立即数 相加,例题1 加法,MOV AX,7348H;AX7348HADD AL,27H;AL48H27H6FH,AX736FH
24、;OF0,SF0,ZF0,PF1,CF0ADD AX,3FFFH;AX736FH3FFFHB36EH;OF1,SF1,ZF0,PF0,CF0,(2)带进位加法指令 格式:ADC OPD,OPS 操作:OPD OPD+OPS+CF 说明:ADC指令与ADD指令有些相似,但是它将OPD与OPS相加时,同时还要加上进位标志CF的内容,然后将结果送回OPD。ADC指令也将根据运算结果修改状态标志位。带进位加法指令主要用于数据位数较长、需要分段运算的加法运算。在进行多字加法运算时,低位字用ADD指令相加,高位用ADC指令相加,以接受低位产生的进位。,例2 计算两个四字节长整数之和,数NA=7A546C0
25、8H,NB=12F0497DH,求NA+NB。分析:这是两个32位二进制数的加法,ADD指令一次只能完成两个16位二进制数的加法,32位数的加法要分两次进行:用ADD指令先加低16位,低16位产生的CF值,通过高16位ADC指令加进去,以保证结果的正确。解:MOV BX,6C08H;取加数的低字 ADD BX,497DH;和另一个加数的相应字相加 MOVAX,7A54H;取加数的高字 ADCAX,12F0H;和另一个加数的相应字相加 程序段的运行结果:AX中为和的高字,BX中为和的低字。,(3)加1指令 格式:INC OPD 操作:OPD OPD+1 说明:INC指令将OPD加1。注意:指令可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 惠民 主编 ppt
链接地址:https://www.31ppt.com/p-2897973.html