书签 分享 收藏 举报 版权申诉 / 46
上传文档赚钱

类型大二汇编语句语法课件《其他类型指令》.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4071098
  • 上传时间:2022-11-08
  • 格式:PPT
  • 页数:46
  • 大小:367KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《大二汇编语句语法课件《其他类型指令》.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    其他类型指令 大二 汇编 语句 语法 课件 其他 类型 指令
    资源描述:

    1、l 串的基本概念串的基本概念 顺序存放在内存中的一组数据,称为串顺序存放在内存中的一组数据,称为串。用串的首(末)地址、元素类型、串的长度表示。用串的首(末)地址、元素类型、串的长度表示。1234:0000stringDS:BXA B C D E、Y Z1122331a2b3c4d3.3.4 串处理指令串处理指令 MOVS 串传送指令串传送指令 STOS 存入串指令存入串指令 LODS从串取指令从串取指令 CMPS串比较指令串比较指令 SCAS串扫描指令串扫描指令 INS串输入指令串输入指令 OUTS串输出指令串输出指令配合使用的前缀有:配合使用的前缀有:REP 重复重复 REPE/REPZ

    2、相等相等/为零则重复为零则重复 REPNE/REPNZ 不相等不相等/不为零则重复不为零则重复1、与、与REP配合工作的配合工作的 MOVS/STOS/LODS/INS/OUTS 格式:格式:REP MOVS/STOS/LODS/INS/OUTS 执行操作执行操作:(1)如如(CX)=0则退出则退出REP,否则转,否则转(2)(2)(CX)(CX)-1 (3)执行执行MOVS/STOS/LODS/INS/OUTS(4)重复重复(1)(3)MOVS 串传送指令串传送指令MOVS DST,SRC 须指明传送的是字节、字、双字须指明传送的是字节、字、双字MOVSB(字节)(字节)MOVSW(字)(字

    3、)MOVSD(双字)(双字)例:例:MOVS ES:BYTE PTR DI,DS:SI 执行操作:执行操作:(1)(DI)(SI)(2)字节操作:字节操作:(SI)(SI)1,(DI)(DI)1 字操作:字操作:(SI)(SI)2,(DI)(DI)2 双字操作:双字操作:(SI)(SI)4,(DI)(DI)4 方向标志方向标志DF=0时用时用+,DF=1时用时用-。执行执行REP MOVS之前,应先做好:之前,应先做好:(1)首地址(末地址)首地址(末地址)SI(2)目的串首地址(末地址)目的串首地址(末地址)DI(3 3)串长度)串长度 CX(4 4)建立方向标志)建立方向标志(CLD使使D

    4、F=0,STD使使DF=1)注意注意:源串默认在数据段中,目的串必须在附加段中,但源串源串默认在数据段中,目的串必须在附加段中,但源串可以使用段跨越前缀来修改可以使用段跨越前缀来修改(SI)低地址低地址高地址高地址数据段数据段附加段附加段(SI)(DI)(DI)DF=0向前向前DF=1向后向后例例datarea segmentmess1 db personal_computerdatarea endsextra segmentmess2 db 17 dup(?)extra endscode segmentlea si,mess1 lea di,mess2 mov cx,17 cld rep m

    5、ovsb code endslea si,mess1+16 lea di,mess2+16 mov cx,17 std rep movsbSTOS存入串指令存入串指令STOS DSTSTOSB (字节)(字节)STOSW(字)(字)STOSD (双字)(双字)执行操作:字节操作:执行操作:字节操作:(DI)(AL),(DI)(DI)1 字操作:字操作:(DI)(AX),(DI)(DI)2 双字操作:双字操作:(EDI)(EAX),(EDI)(EDI)4 例:把附加段中的例:把附加段中的5个字节缓冲区置为个字节缓冲区置为20Hlea di,mess2mov al,20Hmov cx,5cldre

    6、p stosbLODS从串取指令从串取指令LODS SRCLODSB(字节)(字节)LODSW(字)(字)LODSD(双字)(双字)执行操作:执行操作:字节操作:字节操作:(AL)(SI),(SI)(SI)1 字操作:字操作:(AX)(SI),(SI)(SI)2 双字操作:双字操作:(EAX)(ESI),(ESI)(ESI)2注意注意:*LODS指令一般不与指令一般不与REP联用联用 *源串源串默认默认在数据段中,但源串允许使在数据段中,但源串允许使 用段跨越前缀来修改。用段跨越前缀来修改。*不影响条件标志位不影响条件标志位INS串输入指令串输入指令INSDST,DXINSB(字节)(字节)I

    7、NSW(字)(字)INSD (双字)(双字)执行操作:执行操作:字节操作:字节操作:(DI)(DX),(DI)(DI)1 字操作:字操作:(DI)(DX),(DI)(DI)2 双字操作:双字操作:(DI)(DX),(DI)(DI)4OUTS串输出指令串输出指令OUTSDST,DXOUTS B(字节)(字节)OUTSW(字)(字)OUTSD (双字)(双字)执行操作:执行操作:字节操作:字节操作:(DX)(SI),(SI)(SI)1 字操作:字操作:(DX)(SI),(SI)(SI)2 双字操作:双字操作:(DX)(SI),(SI)(SI)4与与REPE/REPZ和和REPNE/REPNZ配合工

    8、作的配合工作的CMPS 和和SCAS 格式:格式:REPE/REPZ(REPNE/REPNZ)CMPS/SCAS 执行操作执行操作:(1)如如(CX)=0或或ZF=0(ZF=1)则退出,则退出,否则转否则转(2)(2)(CX)(CX)-1 (3)执行执行CMPS/SCAS (4)重复重复(1)(3)CMPS串比较指令串比较指令 CMPS SRC,DSTCMPSB(字节)(字节)CMPSW(字)(字)CMPSD(双字)(双字)执行操作:执行操作:(1)(SI)-(DI)根据比较结果设置条件标志位:相等根据比较结果设置条件标志位:相等 ZF=1 不等不等 ZF=0 (2)字节操作:字节操作:(SI

    9、)(SI)1,(DI)(DI)1 字操作:字操作:(SI)(SI)2,(DI)(DI)2 双字操作:双字操作:(SI)(SI)4,(DI)(DI)4SCAS串扫描指令串扫描指令SCAS DSTSCASB(字节)(字节)SCASW(字)(字)SCASD(双字)(双字)执行操作:执行操作:字节操作:字节操作:(AL)-(DI),(DI)(DI)1 字操作:字操作:(AX)-(DI),(DI)(DI)2 双字操作:双字操作:(EAX)-(EDI),(EDI)(EDI)2 CMPS/SCASCMPS/SCAS与与REPE/REPZREPE/REPZ和和REPNE/REPNZREPNE/REPNZ配合用

    10、于比较两配合用于比较两个数据串,或从一个字符串中查找一个指定的字符个数据串,或从一个字符串中查找一个指定的字符例例:从一个字符串中查找一个指定的字符从一个字符串中查找一个指定的字符mess db COMPUTERlea di,messmov al,Tmov cx,8cldrepne scasb(DI):相匹配字符的下一个地址相匹配字符的下一个地址(CX):剩下还未比较的字符个数:剩下还未比较的字符个数COMPUTER(di)COMPUTER(di)例例 比较两个字符串,找出它们不相匹配的位置比较两个字符串,找出它们不相匹配的位置 lea si,mess1lea di,mess2mov cx,8

    11、cldrepe cmpsb无条件转移指令无条件转移指令 JMP段内段内直接短转移直接短转移 JMP SHORT OPR 执行操作执行操作:(IP)(IP)+8位位移量(位位移量(-128127)例:例:.JMP SHORT HELLO HELLO:MOV AL,33.3.5控制转移指令控制转移指令段内段内直接近转移直接近转移 JMP NEAR PTR OPR 执行操作执行操作:(IP)(IP)+16位位移量位位移量段内段内间接转移间接转移 JMP WORD PTR OPR 执行操作执行操作:(IP)(EA)段间段间直接转移直接转移 JMP FAR PTR OPR 执行操作执行操作:(IP)OP

    12、R的段内偏移地址的段内偏移地址 (CS)OPR所在段的段地址所在段的段地址 段间段间间接转移间接转移 JMP DWORD PTR OPR 执行操作执行操作:(IP)(EA)(CS)(EA+2)条件转移指令条件转移指令 条件转移指令条件转移指令根据上一条指令所设置的根据上一条指令所设置的条件码条件码来判断测来判断测试条件,满足测试条件则转移到由试条件,满足测试条件则转移到由指令指定的转向地址指令指定的转向地址去执去执行那里的程序;如果不满足条件则行那里的程序;如果不满足条件则执行下一条指令执行下一条指令。8086:只可以使用只可以使用JMP中的短转移中的短转移,即,即只能使用段内直接只能使用段内

    13、直接寻址的寻址的8 8位位移量(位位移量(-128127-128127)所有的条件转移指令都不影响条件码所有的条件转移指令都不影响条件码根据根据单个条件标志单个条件标志的设置情况转移的设置情况转移格式格式 测试条件测试条件 JZ(JE)OPR ZF=1 JNZ(JNE)OPR ZF=0 JS OPR SF=1 JNS OPR SF=0 JO OPR OF=1 JNO OPR OF=0 JP(JPE)OPR PF=1 JNP(JPO)OPR PF=0 JB(LNAE,JC)OPR CF=0 JNB(LAE,JNC)OPR CF=1比较两个比较两个无符号数无符号数,并根据比较结果转移,并根据比较结

    14、果转移*格式格式 JNBE(JA)OPR 比较两个比较两个带符号数带符号数,并根据比较结果转移,并根据比较结果转移*格式格式 JNLE(JG)OPR 测试测试CX的值为的值为0则转移则转移 格式格式 测试条件测试条件 JCXZ OPR (CX)=0例例3.76 X50,转到,转到TOO_HIGH;计算计算X-Y,溢出转到,溢出转到OVERFLOW,否则,否则|X-Y|RESULT MOV AX,XCMP AX,50JNLE TOO_HIGHSUB AX,YJO OVERFLOWJNS NONNEGNEG AX NONNEG:MOV RESULT,AX TOO_HIGH:OVERFLOW:例例3

    15、.77 、是双精度数,分别存于是双精度数,分别存于DX,AX及及BX,CX中,中,时转时转X,否则转,否则转Y。CMP DX,BXJNLE XJL YCMP AX,CXJNBE XY:.X:.循环指令循环指令注意:注意:*CX中存放循环次数中存放循环次数 *只能使用段内直接寻址的只能使用段内直接寻址的8位位移量位位移量(-128127)LOOPLOOPZ/LOOPELOOPNZ/LOOPNE 执行步骤执行步骤:(1)(CX)(CX)-1 (2)检查是否满足检查是否满足测试条件测试条件,如满足则,如满足则 (IP)(IP)+8位位移量,实行位位移量,实行 循环;不满足则循环;不满足则IP不变,退

    16、出循环。不变,退出循环。循环指令:循环指令:LOOP OPR测试条件测试条件:(CX)0为零或相等时循环指令:为零或相等时循环指令:LOOPZ(LOOPE)OPR测试条件测试条件:ZF=1且且(CX)0不为零或不相等时循环指令:不为零或不相等时循环指令:LOOPNZ(LOOPNE)OPR测试条件测试条件:ZF=0且且(CX)0 MOV CX,N AGAIN:DEC CX JNZ AGAIN MOV CX,N AGAIN:LOOP AGAIN循环的条件转移指令循环的条件转移指令实现方法实现方法循环的循环指令实现方法循环的循环指令实现方法例例3.80 求首地址为求首地址为ARRAY的的M个字之和,

    17、结果存入个字之和,结果存入TOTAL。MOV CX,M MOV AX,0 MOV SI,0START_LOOP:ADD AX,ARRAYSIADD SI,2LOOP START_LOOPMOV TOTAL,AX例:在多重循环的程序结构中,例:在多重循环的程序结构中,CX计数器的保存和恢复计数器的保存和恢复 MOV CX,MAGAIN:PUSH CX MOV CX,NNEXT:LOOP NEXT POP CX LOOP AGAIN MOV DI,MAGAIN:MOV CX,NNEXT:LOOP NEXT DEC DI JNZ AGAIN子程序调用和返回指令子程序调用和返回指令code segme

    18、ntmain proc far call sub retmain endpsub proc near retsub endpcode ends 段内调用和返回段内调用和返回code1 segmentmain proc far call sub retmain endpcode1 endscode2 segmentsub proc far retsub endpcode2 ends 段间调用和返回段间调用和返回 CALL调用指令调用指令(以以16位为例)位为例)段内段内直接直接近近调用:调用:CALL DST执行操作:执行操作:PUSH(IP)(IP)(IP)+16位位移量位位移量段内段内间接间

    19、接近近调用:调用:CALL DST执行操作:执行操作:PUSH(IP)(IP)(EA)段间段间直接直接远远调用:调用:CALL DST执行操作:执行操作:PUSH(CS)PUSH(IP)(IP)DSTDST偏移地址偏移地址 (CS)DSTDST段地址段地址段间段间间接间接远远调用:调用:CALL DST执行操作:执行操作:PUSH(CS)PUSH(IP)(IP)(EA)(CS)(EA+2)RET返回指令返回指令段内近段内近返回:返回:RET执行操作:执行操作:(IP)POP()段内段内带立即数带立即数近近返回:返回:RET EXP执行操作:执行操作:(IP)POP()(SP)(SP)+D16(

    20、由由EXP计算得到)计算得到)带立即数带立即数 用于调用程序调用子程序时的参数传递用于调用程序调用子程序时的参数传递段间远段间远返回:返回:RET执行操作:执行操作:(IP)POP()(CS)POP()段间段间带立即数带立即数远远返回:返回:RET EXP执行操作:执行操作:(IP)POP()(CS)POP()(SP)(SP)+D16(由由EXP计算得到)计算得到)(AX)(BX)(CX)(SP)(IP)例:带立即数返回例:带立即数返回code segmentmain proc far push ax push bx push cx call sub retmain endpsub proc

    21、near ret 6sub endpcode ends(SP)堆栈段堆栈段(SP)中断指令中断指令1、什么是中断?、什么是中断?2、什么是中断例行程序?、什么是中断例行程序?3、CPU响应一次中断的过程是怎样的?响应一次中断的过程是怎样的?4、什么是中断向量?、什么是中断向量?中断例行程序的入口地址中断例行程序的入口地址当系统运行或程序运行期间在遇到某些特殊情况时,需当系统运行或程序运行期间在遇到某些特殊情况时,需要计算机自动执行的一组专门的例行程序进行处理。要计算机自动执行的一组专门的例行程序进行处理。中断时所执行的这组程序中断时所执行的这组程序类似与子程序的调用,只不过多了保护类似与子程序

    22、的调用,只不过多了保护FLAGS中断向量中断向量:中断例行程序中断例行程序的入口地址,的入口地址,存放于中断向存放于中断向量区。量区。类型类型0的的(IP)类型类型0的的(CS)类型类型1的的(IP)类型类型1的的(CS)类型类型N的的(IP)类型类型N的的(CS)类型类型255的的(IP)类型类型255的的(CS)0000000004 4*N003FC类型类型0类型类型1 类型类型N类型类型255中断向量区中断向量区 中断指令:中断指令:INT TYPE 或或 INT(隐含的类型号为(隐含的类型号为3)执行操作:执行操作:PUSH(FLAGS)IF0 TF0 AC0 PUSH(CS)PUSH

    23、(IP)(IP)(TYPE*4)(CS)(TYPE*4+2)溢出中断指令:溢出中断指令:INTO执行操作:执行操作:若若OF=1,(IP)(10H)(CS)(12H)从中断返回指令:从中断返回指令:IRETIRET执行操作:执行操作:(IP)POP()(CS)POP()(FLAGS)POP()注意:注意:*TYPE(0 255)是中断类型号。是中断类型号。*INT(INTO)指令执行完,把指令执行完,把IF和和TF置置0,但不影响,但不影响 其它标志位。其它标志位。*IRET指令执行完,标志位由堆栈中取出的值确定。指令执行完,标志位由堆栈中取出的值确定。3.3.6 处理机控制指令处理机控制指令

    24、 1、标志处理指令:、标志处理指令:CLC CF0 CMC CFCF STC CF1 CLD DF0 STD DF1 CLI IF0 STI IF1 注意注意:*只影响本指令指定的标志只影响本指令指定的标志进位位置0进位位置取反进位位置1方向标志置0方向标志置1中断标志置0中断标志置12、其他处理机控制指令:、其他处理机控制指令:NOP 无操作无操作 (机器码占一个字节机器码占一个字节)HLT HLT 暂停机暂停机 (次外中断,之后继续执行程次外中断,之后继续执行程)ESC ESC 换码换码 WAIT WAIT 等待等待 (等待外中断,之后仍继续等待等待外中断,之后仍继续等待)LOCK LOC

    25、K 封锁封锁 BOUND BOUND 界限界限 ENTER ENTER 建立堆栈帧建立堆栈帧 LEAVE LEAVE 释放堆栈帧释放堆栈帧 注意注意:*不影响条件标志不影响条件标志 空操作指令空操作指令NOP 格式格式 NOP 指令指令 不执行任何操作不执行任何操作mov BX,100 00B8 0107 3Acmp AL,BXB8FE11mov BX,100 00B8 0190 90cmp AL,BX903A07nopnopnopmov CX,20HB9 20 00例:例:也可用也可用NOP指令进行短延时指令进行短延时(教材中的一些例子用到)教材中的一些例子用到)其机器码占一个字节单元,其机器码占一个字节单元,在调试程序时,修改程序用。在调试程序时,修改程序用。暂停指令暂停指令HLT 格式格式 HLT 执行执行 使使CPU处于暂停状态处于暂停状态用于等待外部中断,中断处理结束后,用于等待外部中断,中断处理结束后,继续执行继续执行HLT后的下一条指令后的下一条指令例例 、STI ;允许外部中断允许外部中断 HLT ;等待中断等待中断 MOV AX,BX、作业作业Page 112 3.30 3.36

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:大二汇编语句语法课件《其他类型指令》.ppt
    链接地址:https://www.163wenku.com/p-4071098.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库