微型计算机指令系统.ppt
《微型计算机指令系统.ppt》由会员分享,可在线阅读,更多相关《微型计算机指令系统.ppt(69页珍藏版)》请在三一办公上搜索。
1、第三章 微型计算机指令系统,指令系统是微处理器(CPU)所能执行的指令的集合,它与微处理器有密切的联系,不同的微处理器有不同的指令系统。在本章中我们主要讲解INTEL公司生产的8086/8088CPU的寻址方式以及各种指令系统,并通过具体实例讲述了各条指令的功能和使用方法。通过本章的学习,读者应该掌握以下内容:3种操作数的寻址方式 常用指令的格式、功能、以及对标志位的影响,3、1 8086/8088的寻址方式,操作码 操作数,汇编指令:,操作码:指令操作类型;操作数:指令所需操作数或操作数的地址;操作数可以有一个,也可以有两个,一个源操作数,一个目的操作数。例:MOV AX,CX;将CX的内容
2、送入AX中。,本章主要介绍8086/8088的指令系统以及在指令中为取得操作数地址所使用的寻址方式。,3、1、1 立即寻址方式指令操作数部分直接给出指令的操作数,操作数与操作码一起存入代码段中。立即数有8位和16位。例:MOV AL,5;源操作数为立即寻址指令执行后,AL=05H,8位数据05H存入AL寄存器。例:MOV AX,3064H;源操作数为立即寻址指令执行后,AX=3064H,16位数据3064H存入AX寄存器。,3、1、2 寄存器寻址方式寄存器寻址方式的操作数是寄存器的值,指令中直接使用寄存器名,包括8位或16位通用寄存器和段寄存器。可使用的16位寄存器:AX、BX、CX、DX、S
3、I、DI、SP、BP;其中:AX、BX、CX、DX可分成两8位使用。例:MOV AX,CX;(AX)(CX)MOV AL;(AL)(AL)-13、1、3 内存寻址方式在内存寻址方式中,操作数是某个内存单元的内容(值),指令中给出的是内存单元的有效地址EA(即偏移地址),段地址通常在隐含的某个段寄存器中。,1、直接寻址方式 直接寻址方式的操作数的形式为:Variable或Variable在直接寻址方式中,操作数的偏移地址(有效地址EA)直接用指令加以指定(有直接地址值和标号两种形式),它存放在代码段中指定操作码之后,但操作数一般存放在存储器的数据段中,所以必须先求出操作数的物理地址,然后再访问存
4、储器才能取得操作数。段地址隐含的由DS 指定,也可以ES指定,但需在指令中指明。最后存储器地址为:DS:偏移地址 或 ES:偏移地址。例:MOV AX,ES:2000H将ES:2000H单元内容送入AX。例:MOV AX,LABLE 或 MOV AX,LABEL将标号为LABLE(存放操作数单元的符号地址),即DS:LABLE中的内容送入AX。,2、寄存器间接寻址寄存器间接寻址方式的操作数形式为:reg操作数的有效地址包含在基址寄存器BX,基址指针BP或一个变址寄存器(SI或DI)中。寄存器间接寻址要用方括号括起来,以便与寄存器操作数相区别。例:MOV AX,BX;将由BX决定的存储单元的内容
5、送到AX寄存器。,0000,0001,0002,0003,BB,AA,TAB:,AX,AH AL,AA BB,间接寻址,数据段,0001,BX,操作数在存储器中,指令中寄存器内容作为操作数所在单元的有效地址。(BX)(SI)(DI)(BP),有效地址=,段寄存器为DS,段寄存器为SS,物理地址计算方法:物理地址=(DS)*16+(BX)或(SI)或(DI)物理地址=(SS)*16+(BP),例:已知:(DS)=2100H,(DI)=2000H 指令:MOV AX,DI;(AX)(DI)物理地址=(DS)*16+(DI)=2100H*16+2000H=21000H+2000H=23000H 指令
6、结果:将23000H单元内容送AL中,将23001H单元内容送AH中。,3、寄存器相对寻址方式操作数在存储器内,指令中寄存器内容与指令指定的位移量(DISP)之和作为操作数所在单元的有效地址。(BX)DISP8(SI)(DI)(BP)DISP16,有效地址=,段寄存器为DS,段寄存器为SS,+,物理地址=(DS)*16+(BX)+DISP8(SI)、(DI)、DISP16类同。物理地址=(SS)*16+(BP)+DISP16,例:如果(DS)=3000H,(SI)=2000H,COUNT=3000H,则执行指令 MOV AX,CONUTSI,求出此种寻址方式对应的有效地址和物理地址。有效地址=
7、2000H+3000H=5000H物理地址=(DS)*16+5000H=30000H+5000H=35000H4、基址变址寻址方式:操作数在存储器中,指令将基址寄存器(BX或BP)与变址寄存器(SI或DI)内容之和作为操作数所在存储单元的有效地址。,(BX)(SI)(BP)(DI),有效地址=,+,物理地址=(DS)*16+(BX)+(SI)或(DI)物理地址=(SS)*16+(BP)+(SI)或(DI)例:MOV AX,BX+DI 或 MOV AX,BXDI DS:(BX)+(DI)字存储单元内容送AX。例:MOV AX,BP+SI 或 MOV AX,BPSI SS:(BP)+(SI)字存储
8、单元内容送AX。,例:如果(DS)=2100H,(BX)=0158H,(DI)=10A5H,EA=11FDH,则执行指令 MOV AL,BXDI有效地址:EA=(BX)+(DI)=0158H+10A5H=11FDH 物理地址:(DS)*16+有效地址=21000H+11FDH=221FDH执行结果:将221FDH单元内容送入寄存器AL中。,5、相对基址变址寻址方式操作数在存储器内,指令将基址寄存器(BX或BP)与变址寄存器(SI或DI)的内容之和再加上位移量(8位或16位),得到操作数所在单元的有效地址。(BX)(SI)DISP8(BP)(DI)DISP16,有效地址=,+,+,物理地址=(D
9、S)*16+(BX)产生的有效地址物理地址=(SS)*16+(BP)产生的有效地址例:已知:(DS)=3000H,(BX)=2000H,(SI)=1000H,MK=0250H 指令:MOV AX,MKBXSI 或 MOV AX,MKBX+SI 或 MOV AX,MK+BX+SI 有效地址:MK+(BX)+(SI)=0250H+2000H+0100H=3250H 物理地址:(DS)*16+有效地址=30000H+3250H=33250H 执行结果:将33250H单元内容送AL,33251H内容送AH。,3、1、4 段超越当操作数在内存单元时,系统根据隐含约定,自动将寄存器DS或SS的值作为段地址
10、。然而,当操作数段地址不在隐含的段寄存器时,可以使用段超越前缀取代其隐含约定。段超越前缀形式为:段寄存器名:例如:MOV AX,ES:BP;段地址在ESMOV AX,CS:BX SI;段地址在CS段地址的基本约定和允许超越的情况如表所示:,3、1、5 对8086内存寻址方式的注解(1)在汇编后,指令中的变量名有具体的偏移地址所取代。,(2)在寄存器相对寻址与相对基址变址方式中,位移量disp可以是符号常量或变量,汇编后为一个常数,若是变量,则取其偏移地址。(3)在Microsoft宏汇编MASM(Microsoft Macro Assembler)中,内存操作数可以采用多种书写形式。(4)操作
11、数中使用变量的地方也可以用下列形式:变量名整数表达式。5)计算出的有效地址以16位表示,若超过0FFFFH,CPU将忽略所有溢出。(6)记忆8086内存操作数形式的简易方法如下:BX SI disp BP DI每列选择0项或一项,构成至少一项,即可得到有效的内存操作数形式。,3、2 标志位在标志寄存器FLAGS中有若干标志位,这些标志用来表示CPU当前的操作方式和状态信息。与普通应用程序有关的主要是FLAGS中的9个标志 6个状态标志(CF、OF、SF、ZF、AF、PF)3个控制信息标志(DF、IF、TF)3、2、1 深入认识CF和OF1、深入认识CF和OFCF表示无符号溢出,即运算结果超出了
12、无符号数的表示范围。OF表示带符号溢出,即运算结果超出了带符号数的表示范围。,2、CF和OF判断方法(1)加法 CF的判断方法从十进制角度来看,若无符号加的结果大于2n(n为位数),则CF=1,否则CF=0。从二进制角度来看,若结果最高位向前有进位,则CF=1,否则CF=0。OF的判断方法从十进制角度来看,若带符号加的结果不在范围n 1n-11(n为位数)内,则OF=1,否则OF=0。从二进制角度来看,若两个数同号,而相加结果与之异号,说明溢出,则OF=1,否则OF=0。例:8位数加法,判断CF和OF,二进制加法 看作无符号数 看作带符号数 0011 0000B 6 6+0000 1001B+
13、9+9,0011 1001B 15 15 CF=0 OF=0 0000 0111B 7+7+1111 1011B+251+(5),0000 0010B 258+21 CF=1 OF=0 现为2结果错 0000 1001B 9+9+0111 1100B+124+(+124),1000 0101B 133+133 CF=0 OF=1 现为123,结果错 1000 0111B 135(121)+1111 0101B+245+(11),0111 1100B 380 1321 CF=1 OF=1 现为124,结果错 现为124,结果错,(2)减法 CF的判断方法从十进制角度来看,若无符号减数大于被减数,
14、则CF=1,否则CF=0。从二进制角度来看,若结果最高位向前有借位,则CF=1,否则CF=0。OF的判断方法从十进制角度来看,若带符号减的结果不在范围 n-1n-11(n为位数)内,则OF=1,否则OF=0。从二进制角度来看,若两个数异号,而结果与被减数符号相反,说明溢出,则OF=1,否则OF=0。,3、3 指令系统8086/8088的指令系统可以分为6组:(1)数据传送指令;(2)算术运算指令;(3)逻辑指令与移位指令;(4)串操作指令;(5)控制转移指令;(6)处理机控制指令;3、3、1 数据传送指令数据传送指令是最简单、最常用的一类指令,它是负责把数据、地址、或立即数传送到寄存器或存储单
15、元中。,1MOV(Move):传送指令MOV指令的格式为:MOV dest,src;destsrc功能:将源操作数src复制到目的操作数dest中,结果目的操作数的内容等于源操作数的内容,源操作数src的内容不变。对标志位的影响:无语法格式:MOV reg/mem/seg,reg/mem/seg/imm说明:(1)双操作数指令不允许两个操作数同时为段寄存器或存储器操作数。MOV seg,seg;错误 MOV mem,mem;错误,(2)立即数不能传送到段寄存器中。MOV seg,imm;错误(3)目的操作数不允许使用CS段寄存器。(4)dest与src必须类型匹配,即同时是字节或字类型。以下几
16、点要注意:寄存器具有明确的类型,例如,AL、AX分别为字节、字类型。若立即数没有明确的类型,MASM负责将立即数扩展为与目的操作数位数相同。有时MASM不能确定内存操作数的类型,需要用byteptr和wordptr明确指出是字节或字类型。关于PTR的详细介绍见第4章。只要其中一个操作数的类型确定即可。,例:错误的MOV 指令如下所示:MOV AX,BL;类型不匹配MOV DS,1000H;不允许立即数送段寄存器MOV BX,SI;不允许内存操作数之间传送MOV ES,CS;不允许段寄存器之间传送MOV CS,AX;CS不能作为目的操作数例:设B是已定义的字节变量,以下是一些错误和正确的指令。M
17、OV AX,B;错误,类型不匹配MOV A,0;正确,MASM可以判断出要送字节0,XCHG(Exchange):交换指令XCHG指令的格式为:XCHG oprd1,oprd2;交换oprd1与oprd2的内容语法格式为:XCHG reg/mem,reg/mem例:XCHG BX,BP+SI如指令执行前:(BX)=6F30H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F00H)=4254H,OPR2的物理地址=2F00+0200+0046=2F246则指令执行后:(BX)=5154H,(2F246H)=6F30H。,3、堆栈操作指令堆栈概念-存储器的一段区域,按“先
18、进后出”的原则进行存出操作。8086/8088系统,堆栈位于堆栈段,其段地址由SS指示,SP寄存器作为指针,SP内容始终指向栈顶所在存储单元。作用:在调用一个过程时,保存返回地址;暂时存放寄存器或存储器单元操作数的内容。指令格式:进栈 PUSH SRC;操作:(SP)(SP)-2,(SP)+1,(SP)(SRC)出栈 POP DST;操作:(DST)(SP)+1,(SP),(SP)(SP)+2,堆栈,SS:01F8,SS:01FA,SS:01FC,SS:01FE,SP,AA BB,(执行PUSH AX之前),堆栈,SS:01F8,SS:01FA,SS:01FC,SS:01FE,SP,AA BB
19、,(执行PUSH AX之后),1101H,1101H,AX,堆栈,SS:01F8,SS:01FA,SS:01FC,SS:01FE,SP,AA BB,(执行POP AX之后),1101H,AX,1,2,3,8086/8088系统的堆栈具有如下特点:堆栈是在内存的堆栈段中,具有“先进后出”的特点;堆栈只有一个出入口,即当前栈顶为空时,栈顶和栈底指向同一内存单元;堆栈有两个基本操作:PUSH(进栈)和POP(出栈)。PUSH操作使栈顶向低地址方向移动,而POP操作则刚好相反;堆栈操作只能作字操作;SS:SP在任何时候都指向当前的栈顶。,4、地址传送指令将操作数所在存储器的地址送入目标寄存器。指令格式
20、:有效地址送寄存器:LEA reg16,mem;reg16 mem 指针送寄存器和DS:LDS reg16,mem32;把源操作数指定的4个相继字节到由指令指定的寄存器及DS寄存器中。该指令常指定SI寄存器。指针送寄存器和ES:LES reg16,mem32;把源操作数指定的4个相继字节送到由指令指定的寄存器及ES寄存器中。该指令常指定DI寄存器。,LEA 指令与MOV 指令的区别:LEA SI,BUFF指令是将标号BUFF的偏移地址送入寄存器中;MOV SI,BUFF指令是将标号BUFF所指存储单元的内容送入SI。,BUFF=,0,1,2,3,4,5,48,00,FE,FF,LEA SI,B
21、UFF;执行后:(SI)=0002HMOV SI,BUFF;执行后:(SI)=0048H,段起始地址,B、LDS或LES指令将源操作数指定的4个连续字节单元内容分别送入指令指定的寄存器以及DS或ES中。其中:低16位送到一个指定的字寄存器,高16位送到DS或ES中。,57H,13H,68H,24H,例:(DS)=C000H,(C2480H)=1357H,(C2482H)=2468H,DS:2480H,DS:2481H,DS:2482H,DS:2483H,13 57,24 68,SI,DS,LDS SI,2480,4、标志寄存器传送指令指令格式:LAHF;(AH)(PSW低字节)SAHF;(PS
22、W低字节)AHPUSHF;(SP)(SP)-2,(SP)+1,(SP)(PSW)POPF;(PSW)(SP)+1,(SP)(SP)(SP)+2,说明:LAHF/SAHF指令是寄存器AH与标志寄存器PSW的低字节之间完成的字节型数据传送。PUSHF/POPF指令是标志寄存器PSW与堆栈间进行的字型数据传送。指令SAHF/POPF将影响标志位。,4、2、2 算术运算指令1、加法指令指令格式:加法 ADD DST,SRC;(DST)(SRC)+(DST)带进位加法 ADC DST,SRC;(DST)(SRC)+(DST)+CF加 1 INC OPR;(OPR)(OPR)+1说明:这在三条指令运算结果
23、将影响状态标志位,但是INC指令不影响标志CF。,2、减法指令指令格式:减法 SUB DST,SRC;(DST)(DST)-(SRC)带进位减法 SBB DST,SRC;(DST)(DST)-(SRC)-CF减 1 DEC OPR;(OPR)(OPR)-1求补 NEG OPR;(OPR)0FFFFH-(OPR)+1比较 CMP OPR1,OPR2;(OPR1)-(OPR2)以上五条指令均可作字或字节运算,而且除DEC不影响CF外,其他都按一般规则影响状态标志位。,3、乘法指令指令格式:无符号数乘法 MUL SRC;(AX)(AL)*(SRC)字节乘法;(DX,AX)(AX)*(SRC)字乘法带
24、符号数乘法 IMUL SRC;操作同上进行字节运算时,目的操作数必须是累加器AL,乘积在寄存器AX中;进行字运算时,目的操作数必须是累加器AX,乘积在寄存器DX,AX中。源操作数不允许使用立即数。乘法指令运算结果只影响状态标志CF、OF。例:MUL BX;无符号数乘法,BX乘上AX,4、除法指令指令格式:无符号数除法 DIV SRC;(AL)(AX)/(SRC)除法的商(AH)(AX)/(SRC)除法余数 或者(AX)(DX,AX)/(SRC)除法的商(DX)(DX,AX)/(SRC)除法余数带符号数除法 IDIV SRC;操作同上。,当除数是字节数据时,被除数必须放在AX中;当除数是字数据时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微型计算机 指令系统

链接地址:https://www.31ppt.com/p-6572715.html