《的指令系统》PPT课件

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第2章教学重点重点掌握常用指令功能及应用常用传送指令加减法指令逻辑运算和移位指令控制转移指令字符(串)输入输出功能调用第2章什么是指令系统计算机的指令系统就是指该计算机能够执行的全部指令的集合每种计算机都有它支持的指令集合16位8086指令系统是Intel80x86系列微处理器指令系统的基础第2章8086指令系统概述Intel8086指令系统共有117条基本指令,可分成6个功能组①数据传送类指令②算术运算类指令③位操作类指令④串操作类指令⑤控制转移类指令⑥处理机控制类指令第2章学习指令的注意事项指令的功能——该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式指令支持的寻址方式——该指令中的操作数可以采用何种寻址方式指令对标志的影响——该指令执行后是否对各个标志位有影响,以及如何影响其他方面——该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等教学提示全面而准确地理解每条指令的功能和应用,是编写汇编语言程序的关键第2章2.1数据传送类指令数据传送是计算机中最基本、最重要的一种操作传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均不影响标志位重点掌握MOVXCHGXLATPUSHPOPLEA第2章2.1.1通用数据传送指令提供方便灵活的通用传送操作有3条指令MOVXCHGXLATMOVXCHGXLAT第2章1.传送指令MOV(move)把一个字节或字的操作数从源地址传送至目的地址MOVreg/mem,imm;立即数送寄存器或主存MOV例题2.1MOVreg/mem/seg,reg;寄存器送(段)寄存器或主存例题2.2MOVreg/seg,mem;主存送(段)寄存器例题2.3MOVreg/mem,seg;段寄存器送寄存器或主存例题2.5第2章MOV指令传送功能MOV也并非任意传送立即数段寄存器CSDSESSS通用寄存器AXBXCXDXBPSPSIDI存储器第2章非法传送种种两个操作数的类型不一致例如源操作数是字节,而目的操作数是字;或相反两个操作数不能都是存储器传送指令很灵活,但主存之间的直接传送却不允许段寄存器的操作有一些限制段寄存器属专用寄存器,对他们的操作能力有限示例示例示例第2章2.交换指令XCHG(exchange)把两个地方的数据进行互换寄存器与寄存器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据XCHGXCHGreg,reg/mem;regreg/mem例题2.7例题2.6第2章换码指令执行前:在主存建立一个字节量表格,内含要转换成的目的代码表格首地址存放于BX,AL存放相对表格首地址的位移量换码指令执行后:将AL寄存器的内容转换为目标代码3.换码指令XLAT(translate)将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给ALXLATXLAT;al←ds:[bx+al]例题2.82.1.2堆栈操作指令堆栈是一个“后进先出LIFO”(或“先进后出FILO”)的主存区域,位于堆栈段中;SS段寄存器记录其段地址堆栈只有一个出口,即栈顶;用堆栈指针寄存器SP指示栈顶是地址较小的一端(低端),栈底不变第2章第2章堆栈的操作堆栈只有两种基本操作:进栈和出栈,对应两条指令PUSH和POPPUSH;进栈指令先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部POP;出栈指令把栈顶的一个字传送至指定的目的操作数,然后堆栈指针SP加2第2章1.进栈指令PUSHPUSHpushaxpush[2000h]PUSHr16/m16/seg;SP←SP-2;SS:[SP]←r16/m16/seg第2章2.出栈指令POPpopaxpop[2000h]POPr16/m16/seg;r16/m16/seg←SS:[SP];SP←SP+2POP第2章堆栈的特点堆栈操作的单位是字,进栈和出栈只对字量字量数据从栈顶压入和弹出时,都是低地址字节送低字节,高地址字节送高字节堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据堆栈常用来临时存放数据传递参数保存和恢复寄存器例题2.11第2章2.1.3标志传送指令标志寄存器传送指令用来传送标志寄存器FLAGS的内容标志位操作指令直接对CF、DF、IF标志进行复位或置位第2章1.标志寄存器传送标志寄存器传送指令用来传送标志寄存器FLAGS的内容,方便进行对各个标志位的直接操作有2对4条指令低8位传送:LAHF和SAHF16位传送:PUSHF和POPF标志低字节进出AH指令LAHF;AH←FLAGS的低字节LAHF指令将标志寄存器的低字节送寄存器AHSF/ZF/AF/PF/CF状态标志位分别送入AH的第7/6/4/2/0位,而AH的第5/3/1位任意SAHF;FLAGS的低字节←AHSAHF将AH寄存器内容送FLAGS的低字节用AH的第7/6/4/2/0位相应设置SF/ZF/AF/PF/CF标志第2章标志寄存器进出堆栈指令PUSHF;SP←SP-2;SS:[SP]←FLAGS栈顶指针SP减2,同时PUSHF指令将标志寄存器的内容压入堆栈POPF;FLAGS←SS:[SP];SP←SP+2POPF指令将栈顶字单元内容送标志寄存器,同时栈顶指针SP加2例题2.12第2章第2章2.标志位操作标志位操作指令直接对CF、DF、IF标志进行复位或置位,常用于特定的情况对标志位进行设置的指令CLCSTCCMCCLDSTDCLISTI第2章进位标志操作指令用于任意设置进位标志CLC;复位进位标志:CF←0STC;置位进位标志:CF←1CMC;求反进位标志:CF←~CF第2章方向标志操作指令串操作指令中,需要使用CLD;复位方向标志:DF←0STD;置位方向标志:DF←1第2章中断标志操作指令在编写中断服务程序时,需要控制可屏蔽中断的允许和禁止CLI;复位中断标志:DF←0STI;置位中断标志:DF←1第2章2.1.4地址传送指令地址传送指令将存储器单元的逻辑地址送至指定的寄存器有效地址传送指令LEA指针传送指令LDS和LES注意不是获取存储器单元的内容第2章有效地址传送指令LEA(loadEA)将存储器操作数的有效地址传送至指定的16位寄存器中例题2.13LEAr16,mem;r16←mem的有效地址EALEA指针传送指令LDSr16,mem;r16←mem,;DS←mem+2LDS指令将主存中mem指定的字送至r16,并将mem的下一字送DS寄存器LESr16,mem;r16←mem,;ES←mem+2LES指令将主存中mem指定的字送至r16,并将mem的下一字送ES寄存器例题2.14第2章第2章2.1.5输入输出指令8086通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(Port)即I/O地址8086用于寻址外设端口的地址线为16条,端口最多为216=65536(64K)个,端口号为0000H~FFFFH每个端口用于传送一个字节的外设数据第2章输入输出寻址方式8086的端口有64K个,无需分段,设计有两种寻址方式直接寻址:只用于寻址00H~FFH即前256个端口,操作数i8表示端口号间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号对大于FFH的端口只能采用间接寻址方式第2章输入指令IN将外设数据传送给CPU的AL/AXINAL,i8;字节输入:AL←I/O端口(i8直接寻址)INAL,DX;字节输入:AL←I/O端口(DX间接寻址)INAX,i8;字输入:AX←I/O端口(i8直接寻址)INAX,DX;字输入:AX←I/O端口(DX间接寻址)IN例题2.15第2章输出指令OUT将CPU的AL/AX数据传送给外设OUTi8,AL;字节输出:I/O端口←AL(i8直接寻址)OUTDX,AL;字节输出:I/O端口←AL(DX间接寻址)OUTi8,AX;字输出:I/O端口←AX(i8直接寻址)OUTDX,AX;字输出:I/O端口←AX(DX间接寻址)OUT例题2.16第2章2.2算术运算类指令四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(或十进制)数据的四则运算请注意算术运算类指令对标志的影响掌握:ADD/ADC/INC、SUB/SBB/DEC/NEG/CMP熟悉:MUL/IMUL、DIV/IDIV理解:CBW/CWD、DAA/DAS、AAA/AAS/AAM/AAD第2章加法指令ADDADD指令将源与目的操作数相加,结果送到目的操作数ADD指令按状态标志的定义相应设置ADDADDreg,imm/reg/mem;reg←reg+imm/reg/memADDmem,imm/reg;mem←mem+imm/reg例题2.17a第2章带进位加法指令ADCADC指令将源与目的操作数相加,再加上进位CF标志,结果送到目的操作数ADC指令按状态标志的定义相应设置ADC指令主要与ADD配合,实现多精度加法运算ADCADCreg,imm/reg/mem;reg←reg+imm/reg/mem+CFADCmem,imm/reg;mem←mem+imm/reg+CF例题2.17b第2章增量指令INC(increment)INC指令对操作数加1(增量)INC指令不影响进位CF标志,按定义设置其他状态标志INCINCreg/mem;reg/mem←reg/mem+1incbxincbyteptr[bx]第2章减法指令SUB(subtract)SUB指令将目的操作数减去源操作数,结果送到目的操作数SUB指令按照定义相应设置状态标志SUBSUBreg,imm/reg/mem;reg←reg-imm/reg/memSUBmem,imm/reg;mem←mem-imm/reg例题2.18a第2章带借位减法指令SBBSBB指令将目的操作数减去源操作数,再减去借位CF(进位),结果送到目的操作数。SBB指令按照定义相应设置状态标志SBB指令主要与SUB配合,实现多精度减法运算SBBSBBreg,imm/reg/mem;reg←reg-imm/reg/mem-CFSBBmem,imm/reg;mem←mem-imm/reg-CF例题2.18b第2章减量指令DEC(decrement)DEC指令对操作数减1(减量)DEC指令不影响进位CF标志,按定义设置其他状态标志DECDECreg/mem;reg/mem←reg/mem-1deccxdecwordptr[si]INC指令和DEC指令都是单操作数指令主要用于对计数器和地址指针的调整第2章求补指令NEG(negative)NEG指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数求补运算也可以表达成:将操作数按位取反后加1NEG指令对标志的影响与用零作减法的SUB指令一样NEGNEGreg/mem;reg/mem←0-reg/mem例题2.19第2章比较指令CMP(compare)CMP指令将目的操作数减去源操作数,按照定义相应设置状态标志CMP指令执行的功能与SUB指令,但结果不回送目的操作数CMPreg,imm/reg/mem;reg-imm/reg/memCMPmem,imm/reg;mem-imm/reg例题2.20CMP2.2.3乘法指令MULr8/m8;无符号字节乘法;AX←AL×r8/m8MULr16/m16;无符号字乘法;DX.AX←AX×r16/m16IMULr8/m8;有符号字节乘法;AX←AL×r8/m8IMULr16/m16;有符号字乘法;DX.AX←AX×r16/m16例题2.21说明第2章2.2.4除法指令DIVr8/m8;无符号字节除法:AL←AX÷r8/m8的商,AH←AX÷r8/m8的余数DIVr16/m16;无符号字除法:;AX←DX.AX÷r16/m16的商,DX

1 / 58
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功