微机原理及应用CH3 8086的寻址方式和指令系统课件.ppt
《微机原理及应用CH3 8086的寻址方式和指令系统课件.ppt》由会员分享,可在线阅读,更多相关《微机原理及应用CH3 8086的寻址方式和指令系统课件.ppt(121页珍藏版)》请在三一办公上搜索。
1、第3章 8086的寻址方式和指令系统,3.1 8086/8088的寻址方式3.2 8086/8088的指令系统,计算机中指令由操作码字段和操作数字段两部分组成,因此指令的一般格式如下:操作码 操作数操作码字段:指示计算机要执行的操作。操作数字段:指出在指令执行操作过程中所需要的 操作数。,3.1 8086/8088的寻址方式,3.1.1 与数据有关的寻址方式,立即数寻址寄存器寻址直接寻址寄存器间接寻址寄存器相对寻址 基址变址寻址相对基址变址寻址,定 义:操作数直接存放在指令中,作为指令的一部分存放在代码段里,这种操作数称为立即操作数,这种寻址方式就是立即数寻址方式。寻址方式如图3.1所示:图3
2、.1 立即数寻址,1立即数寻址,立即数可以是位或16位的。如果是16位立即数,则高8位放在高地址,低8位放在低地址。使用场合:立即数寻址方式经常用于给寄存器赋初值。它只能用于源操作数字段,不能用于目的操作数字段。CPU不需要另外占用总线周期去取操作数,故立即数寻址方式显著的特点就是速度快。,说明:,定义:操作数在指定的寄存器中,指令中指定寄存器号。寻址方式如图3.3所示:图3.3 寄存器寻址,2寄存器寻址,说明:对于16位操作数,可以用字寄存器,比如:、以及段寄存器 对于位操作数,可以用字节寄存器,比如:、这种寻址方式因为操作数在寄存器中,不需要访问存储器,所以运算速度较高。,定义:在指令中直
3、接给出位移量,它存放在代码段中指令操作码之后,它可能是一个数值地址,也可能是符号地址。寻址方式如图3.5所示:图3.5 直接寻址,3直接寻址,当操作数在内存中,必须先求出操作数的物理地址,然后再根据物理地址访问存储器从而取得操作数。物理地址PA16D(段寄存器)+EA 操作数一般存放在内存数据段中,物理地址PA16(DS)+EA=16(DS)+位移量汇编语言中可以用变量名(符号地址)代替数值地址,但要注意变量的属性,在计算其物理地址时也默认以DS来提供段基值。,IBM PC机允许数据存放在数据段以外的其它段中(可以是CS,SS,ES),但必须在指令中指定段跨越前缀。,说明:,定义:操作数的有效
4、地址EA在基址寄存器(BX/BP)或变址寄存器(SI/DI)中,而操作数在内存中。寻址方式如图3.7所示:图3.7 寄存器间接寻址,4寄存器间接寻址,若选择BX或SI或DI寄存器提供的间址,则操作数一般在数据段区域中,用DS提供段基址,即操作数物理地址PA为:PA=16(DS)+EA=16(DS)+(BX)或(SI)或(DI)。若选择BP寄存器提供的间址,则操作数在堆栈段区域中,用SS提供段基址,即操作数物理地址PA为:PA=16(SS)+EA=16(SS)+(BP)用SI、DI、BX、BP作为间接寻址时允许使用段跨越前缀,从而实现对其它段中数据的存取。用途:这种寻址方法适用于数组、字符串、表
5、格的处理。,说明:,定义:操作数的有效地址是一个基址或变址寄存器的内容和指令中指定的8位或16位位移量之和。寻址方式如图3.9所示:图3.9 寄存器相对寻址方式,5寄存器相对寻址,若选择BP寄存器提供的基地址,则操作数在堆栈段区域中,用SS提供段基址,即操作数物理地址PA为:PA=16D(SS)+EA=16D(SS)+位移量+(BP),若选择BX或SI或DI寄存器提供的基地址或变地址,则操作数一般在数据段区域中,用DS提供段基址,即操作数物理地址PA为:PA=16(DS)+EA=16(DS)+位移量+(BX)或(SI)或(DI),寄存器相对寻址方式允许使用段跨越前缀。用途:也适用于数组、字符串
6、、表格的处理。,说明:,定义:操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和,基址寄存器名和变址寄存器名均由指令指定。寻址方式如图3.11所示:图3.11 基址变址寻址,6基址变址寻址,若选择BX寄存器提供基地址,SI或DI寄存器提供变地址,则操作数一般在数据段区域中,用DS提供段基址,即操作数物理地址PA为:PA=16(DS)+EA=16(DS)+(BX)+(SI)或(DI),若选择BP寄存器提供基地址,SI或DI寄存器提供变地址,则操作数在堆栈段区域中,用SS提供段基址,即操作数物理地址PA为:PA=16(SS)+EA=16(SS)+(BP)+(SI)或(DI)必须是一个基址寄
7、存器和一个变址寄存器的组合;寄存器相对寻址方式允许使用段跨越前缀,适用于数组、字符串、表格的处理。,说明:,定 义:操作数的有效地址是一个基址寄存器和一个变址寄存器的内容和8位或16位位移量之和。寻址方式如图3.13所示:图3.13 相对基址变址寻址,7相对基址变址寻址,若选择BP寄存器提供基地址,SI或DI寄存器提供变地址,则操作数在堆栈段区域中,用SS提供段基址。,若选择BX寄存器提供基地址,SI或DI寄存器提供变地址,则操作数一般在数据段区域中,用DS提供段基址。,这种寻址方式为处理堆栈中的数组提供方便:用BP可指向栈顶,位移量表示数组第一个元素到栈顶的距离,变址寄存器指向数组元素。,说
8、明:,3.1.2 与转移地址有关的寻址方式,定义:转向的有效地址EA是当前IP寄存器的内容和指令中指定的8位或16位位移量之和。寻址方式如图3.15所示:图3.15 段内直接寻址,1段内直接寻址,在机器指令中,转向的有效地址EA用相对于当前IP值的位移量来表示,位移量=转向有效地址(当前IP);对于16位的位移量,它可正可负,取值范围是3276832767;对于8位的位移量,它也可正可负,取值范围是128127;这种寻址方式适用于条件转移、无条转移指令及调用指令CALL。指令汇编语言格式:JMP NEAR PTR LL1;(IP)(当前IP)+16位位移量JMP SHORT LL2;(IP)(
9、当前IP)+8位位移量,说明:,定义:转向的有效地址是一个寄存器或一个存储单元的内容,这内容可以用数据寻址方式中除立即数以外的任何一种寻址方式取得,然后用得到的转向有效地址来取代IP寄存器的内容。寻址方式如图3.17所示:图3.17 段内间接寻址,2段内间接寻址,这种寻址方式和以下二种段间寻址方式都不能用于条件转移指令,而无条件转移指令JMP和调用指令CALL则可用4种寻址方式中的任意一种。汇编格式:JMP BX JMP WORD PTR BX其中:WORD PTR用以指出BX寻址所取得转向地址是一个字的有效地址。以上两种寻址方式都是段内转移,所以直接把求得的有效地址送到IP寄存器就可以了。计
10、算物理地址PA公式为:PA=16(CS)+EA,说明:,定义:指令中直接提供转向段基址和偏移地址,从而实现从一段转移到另一段的操作。寻址方式如图3.18所示:,图3.18 段间直接寻址,3段间直接寻址,用指令中指定的偏移地址IP用指令中指定的段地址CS指令的汇编语言格式:JMP FAR PTR LLL,说明:,4段间间接寻址 定义:用内存中两个相继字的内容取代IP、CS以达到段间转移目的。内存单元的地址是由紧跟在操作码之后除立即数方式和寄存器方式以外的任何一种寻址方式取得。寻址方式如图3.20所示:图3.20 段间间接寻址,用内存中两个相继字(即双字)的低字取代IP,高字取代CS;指令汇编语言
11、格式:JMP DWORD PTR BX其中,DWORD PTR是双字操作符,转向地址双字(段间转移),BX是数据寻址方式的寄存器间接寻址。,说明:,数据传送指令(Data transfer Instruction)算术运算指令(Arithmetic Instruction)逻辑运算和移位指令(Logic&Shift Instruction)串操作指令(String manipulation Instruction)控制转移指令(Control Transfer Instruction)处理器控制指令(Processor Control Instruction),3.2 8086的指令系统,80
12、86数据传送指令用于实现CPU的寄存器之间、CPU与存储器之间、以及CPU与I/O端口之间的数据传送。数据传送指令又可分为以下四种:通用传送指令累加器专用传送指令地址传送指令标志传送指令,3.2.1 数据传送指令,格 式:MOV dest,src执行的操作:(dest)(src)即把源操作数的内容传送给目的操作数,目的操作数原有的内容消失。它对标志位没有影响;它可以完成字节(或字)之间的传送,不过源操作数和目的操作数之间的长度要匹配。MOV指令的数据传送方向如图3.21所示:,(1)MOV 传送指令,1通用传送指令 8086提供方便灵活的通用的传送操作,适用于大多数操作数。通用传送指令(除了X
13、CHG以外)是唯一允许以段寄存器为操作数的指令。,图3.21 MOV指令数据传送方向,CPU内部寄存器之间的数据的任意传送(除了代码段寄存器CS和指令指针IP以外),段寄存器之间不能直接传送。立即数传送至CPU内部通用寄存器组(AX、BX、CX、DX、BP、SP、SI、DI),用于给寄存器赋初值,不能直接给段寄存器赋值;立即数也可传送给存储器。CPU内部寄存器(除CS和IP外)与存储器之间的数据传送,可以实现一字节或一个字的传送,存储单元之间不能直接传送。,MOV指令能实现以下操作:,两个存储单元之间不能直接传送数据。立即数不能直接传送给段寄存器。段寄存器之间不能直接传送数据。,CS和IP不能
14、作为目的操作数;MOV CS,AX;(非法),对于MOV指令使用,应注意以下几点:,(2)PUSH 进栈指令 格 式:PUSH src 执行的操作:(SP)(SP)2(SP)+1,(SP)(src),(3)POP 出栈指令 格 式:POP dest 执行的操作:(dest)(SP)+1,(SP)(SP)(SP)2,堆栈操作都按字操作;PUSH,POP指令的操作数只能有三种:通用寄存器、段寄存器(CS除外,PUSH CS合法,POP CS非法)、存储器;当字数据进栈时,将它的低字节放到低地址,将它的高字节放到高地址;当字数据出栈时,注意它的低字节在低地址,它的高字节在高地址;堆栈的最大容量就是S
15、P的初始化值;堆栈工作原则是“后进先出”。因此,保存和恢复字数据时,PUSH、POP指令应该成对使用,以保证数据的正确性和保持堆栈原有状态。,使用堆栈操作指令需注意以下几点:,(4)XCHG 交换指令 格 式:XCHG dest,src 执行的操作:(dest)(src)即源操作数与目的操作数相交换。它可以实现字节交换,也可以实现字交换。交换的过程可以在通用寄存器之间,也可以在通用寄存器与存储器之间。使用交换指令,注意以下两点:两个存储单元之间不能直接交换,两个操作数中必须有一个在寄存器中。段寄存器(CS、DS、SS、ES)和指令指针IP不能作为它的源操作数,也不能作为目的操作数。,8086和
16、其他微处理器一样,累加器acc(即AX或AL)仍然是数据传送的核心。,(1)IN 输入指令 长 格 式:IN AL,port(字节端口)IN AX,port(字端口)执行的操作:(AL)(port)(AX)(port+1,port)短 格 式:IN AL,DX(字节端口)IN AX,DX(字端口)执行的操作:(AL)(DX)(AX)(DX)+1,(DX),2.累加器专用传送指令,(2)OUT 输出指令 长 格 式:OUT port,AL(字节端口)OUT port,AX(字端口)执行的操作:(port)(AL)(port+1,port)(AX)短 格 式:OUT DX,AL(字节端口)OUT
17、DX,AX(字端口)执行的操作:(DX)(AL)(DX)+1,(DX)(AX),格式:XLAT str_table 或 XLATstr_table表格符号地址(首地址),只是为了提高可读性而设置,是可有可无的,而指令执行时只会使用预先已经存入BX中的表格首地址。该指令不影响标志位。执的行操作:(AL)(BX)+(AL),(3)XLAT 换码指令,XLAT指令使用方法:先建立一个字节表格,表格的内容就是所要换取的代码;然后将表格首地址存入BX;再将需要换取的代码的序号(即相对与表格首地址的位移量)存入AL;最后再使用XLAT,它执行指令后,转换后的代码就在AL中。,8086/8088 提供三条将
18、地址指针写入指定寄存器或寄存器的指令。,(1)LEA 有效地址送寄存器指令 格 式:LEA reg16,mem16 执行的操作:(reg16)EA 该指令把源操作数的有效地址装入指定的寄存器。通常用于加载有效地址,写近地址指针。注意以下两点:LEA指令中的目标寄存器必须是16位的通用寄存器,源操作数必须是一个存储器操作数。LEA指令与MOV指令注意比较使用.,3.地址传送指令,(2)LDS 地址指针送寄存器和DS指令 格 式:LDS reg16,mem32 执行的操作:(reg16)(EA)(DS)(EA)+2)该指令是将源操作数四个相继的字节分别送给指令指定的寄存器和DS。即将指令指定mem
19、32单元的前两个字节单元内容(16位偏移量)装入指定通用寄存器,把后两个字节单元内容(段地址)装入到DS段寄存器。,(3)LES 地址指针送寄存器和ES指令 格 式:LES reg16,mem32 执行的操作:(reg16)(EA)(ES)(EA)+2)该指令是将源操作数四个相继的字节分别送给指令指定的寄存器和ES。,通过这些指令可以读出当前标志寄存器的内容,也可以对标志寄存器重新设置新值。,(1)LAHF 标志位送AH 格 式:LAHF 执行的操作:(AH)(标志寄存器PSW的低字节),(2)SAHF AH送标志寄存器 格 式:SAHF 执行的操作:(标志寄存器PSW的低字节)(AH),4.
20、标志寄存器传送指令,(4)POPF 标志寄存器出栈指令格 式:POPF执行操作:(PSW)(SP)1,(SP),(SP)(SP)2 使用标志位传送指令,注意以下两点:LAHF、PUSHF不影响标志位,SAHF、POPF由装入的值确定标志位的值,即影响标志位。PUSHF和POPF一般分别用于子程序或中断服务程序的首尾,起保护主程序标志和恢复主程序标志的作用。,(3)PUSHF 标志寄存器进栈指令格 式:PUSHF执行的操作:(SP)(SP)2,(SP)+1,(SP)(PSW),8086指令系统提供了加、减、乘、除四种基本算术操作。8086指令系统还提供了各种校正指令,从而可以实现组合的(即用一个
21、字节表示两个BCD码)或非组合的(即用一个字节表示一个BCD码,其中高四位为0)十进制的算术运算。算术运算指令又可分为以下五种:加法指令减法指令乘法指令除法指令十进制调整指令,3.2.2 算术运算指令,(1)ADD 加法指令 格 式:ADD dest,src 执行的操作:(dest)(dest)+(src)注意以下三点:它可以进行8位、16位的无符号数和带符号数的加法运算;它的源操作数和目标操作数不能同时为存储器操作数;该指令影响标志位SF,ZF,AF,PF,OF,CF。,1.加法指令,格 式:ADC dest,src执行的操作:(dest)(dest)+(src)+CF其中CF为进位位标志的
22、现行值。注意以下两点:它与ADD指令相似,只是在两个操作数相加时,要把进位位标志CF的现行值加上去,结果送给目的操作数。主要用于多字节运算中。,(2)ADC 带进位加法指令,格 式:INC dest 执行的操作:(dest)(dest)+1 使操作数的内容加1,然后再送回该操作数。该操作数可以是寄存器操作数、存储器操作数。注意以下两点:标志位影响:它影响SF,ZF,AF,PF,OF,不影响CF。主要用于在循环程序中修改地址指针和循环次数。,(3)INC 加1指令,(1)SUB 减法指令格 式:SUB dest,src;执行的操作:(dest)(dest)(src)注意以下三点:它可以进行8位、
23、16位的无符号数和带符号数的减法运算;它的源操作数和目标操作数不能同时为存储器操作数;该指令影响标志位SF,ZF,AF,PF,OF,CF。,2.减法指令,格式:SBB dest,src执行的操作:(dest)(dest)(src)CF其中CF表示进位标志位CF的现行值。注意以下两点:它与SUB指令相似,只是在两个操作数相减时,要把进位位标志CF的现行值减出去,结果送给目的操作数。主要用于多字节运算中。,(2)SBB 带借位减法指令,格 式:DEC dest 执行的操作:(dest)(dest)1 使操作数的内容减1,然后再送回该操作数。该操作数可以是寄存器操作数、存储器操作数。注意以下两点:标
24、志位影响情况:它影响SF,ZF,AF,PF,OF,不影响CF;主要用于在循环程序中修改地址指针和循环次数。,(3)DEC 减1指令,格 式:NEG dest执行的操作:(dest)0(dest)即把操作数按位求反后末位+1,因此该操作可以表示为:(dest)0FFFFH(dest)+1,(4)NEG 求补指令,该指令要影响标志位:SF,ZF,AF,PF,OF,CF,特别要注意CF和OF:CF:只有操作数为0时求补,CF=0;否则CF=1;OF:只有对操作数128 或32768求补,OF=1;否则OF=0;,格 式:CMP dest,src执行的操作:(dest)(src)CMP比较指令是执行两
25、个数的相减操作,但不送回相减的结果,只是使结果影响标志位:SF,ZF,AF,PF,OF,CF。,(5)CMP 比较指令,CMP指令主要是通过比较来设置状态标志位,分以下三种情况讨论:根据ZF标志,判断两个数据是否相等;即两个数相减后,如果ZF=1,则表示比较的两个操作数相等;如果ZF=0,则表示比较的两个操作数不相等;根据CF标志,判断两个无符号数的大小;即两个无符号数相减后,如果CF=1,则表示被减数小,减数大;如果CF=0,则表示被减数大,减数小。根据SF、OF标志,判断两个带符号数的大小;对于有符号数的比较操作,如果得到溢出标志位OF和符号标志位SF的值相同(均为0或者均为1),则说明被
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理及应用CH3 8086的寻址方式和指令系统课件 微机 原理 应用 CH3 8086 寻址 方式 指令系统 课件
链接地址:https://www.31ppt.com/p-3048287.html