[计算机软件及应用]汇编语言课件.ppt

上传人(卖家):三亚风情 文档编号:3369376 上传时间:2022-08-24 格式:PPT 页数:44 大小:225.47KB
下载 相关 举报
[计算机软件及应用]汇编语言课件.ppt_第1页
第1页 / 共44页
[计算机软件及应用]汇编语言课件.ppt_第2页
第2页 / 共44页
[计算机软件及应用]汇编语言课件.ppt_第3页
第3页 / 共44页
[计算机软件及应用]汇编语言课件.ppt_第4页
第4页 / 共44页
[计算机软件及应用]汇编语言课件.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

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(字节)(字节)MOVS

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

4、志(CLD使使DF=0,STD使使DF=1)注意注意:源串默认在数据段中,目的串必须在附加段中,但源串源串默认在数据段中,目的串必须在附加段中,但源串可以使用段跨越前缀来修改可以使用段跨越前缀来修改例例datarea segmentmess1 db personal_computerdatarea endsextra segmentmess2 db 17 dup(?)extra endscode segment(ES,DS装填)装填)lea si,mess1 lea di,mess2 mov cx,17 cld rep movsb code endslea si,mess1+16 lea di

5、,mess2+16 mov cx,17 std rep movsbSTOS存入串指令存入串指令STOS DST (例:例:STOS ES:BYTE PTRDI)STOSB (字节)(字节)STOSW(字)(字)执行操作:执行操作:字节操作:字节操作:(DI)(AL),(DI)(DI)1 字操作:字操作:(DI)(AX),(DI)(DI)2 例:把附加段中的例:把附加段中的5个字节缓冲区个字节缓冲区mess2置为置为20Hlea di,mess2mov al,20Hmov cx,5cldrep stosb自学:自学:LODS LODS 从串取指令从串取指令INS INS 串输入指令串输入指令OU

6、TS OUTS 串输出指令串输出指令与与REPE/REPZ和和REPNE/REPNZ配合工作的配合工作的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(字)(字)执行操作:执行操作:(1)(SI)-(DI)根据比较结果设置条件标志位:相等根据比较结果设置条件标志位:相等

7、 ZF=1 不等不等 ZF=0 (2)字节操作:字节操作:(SI)(SI)1,(DI)(DI)1 字操作:字操作:(SI)(SI)2,(DI)(DI)2 SCAS串扫描指令串扫描指令SCAS DSTSCASB(字节)(字节)SCASW(字)(字)执行操作:执行操作:字节操作:字节操作:(AL)-(DI),(DI)(DI)1 字操作:字操作:(AX)-(DI),(DI)(DI)2 CMPS/SCASCMPS/SCAS与与REPE/REPZREPE/REPZ和和REPNE/REPNZREPNE/REPNZ配合用于比较两配合用于比较两个数据串,或从一个字符串中查找一个指定的字符个数据串,或从一个字符

8、串中查找一个指定的字符例例:从一个字符串中查找一个指定的字符从一个字符串中查找一个指定的字符mess db COMPUTERlea di,messmov al,Tmov cx,8cldrepne scasb(DI):相匹配字符的下一个地址相匹配字符的下一个地址(CX):剩下还未比较的字符个数:剩下还未比较的字符个数COMPUTER(di)COMPUTER(di)例例 比较两个字符串,都是比较两个字符串,都是8个元素,找出它们不相匹配的位置个元素,找出它们不相匹配的位置 lea si,mess1lea di,mess2mov cx,8cldrepe cmpsb无条件转移指令无条件转移指令 JMP

9、格式:格式:JMP 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)OPR的段内偏移地址的段内偏移

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

11、 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 JC OPR CF=0 JNC OPR CF=1比较两个比较两个无符号数无符号数,并根据比较结果转移,并根据比较结果转移*格式格式 JNBE(JA)OPR 比较两个

12、比较两个带符号数带符号数,并根据比较结果转移,并根据比较结果转移*格式格式 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.77 、是双精度数,分别存于是双精度数,分别存于

13、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不变,退出循环。不变,退出循环。循环指令:循环指令:LOO

14、P 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个字之和,结果存入个字之和,结果存入TOTAL。MOV CX

15、,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 segmentmain proc far call sub

16、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位位移量位位移量 例例:CALL SUB段内段内间接间接近近调用:调用:CALL

17、 DST执行操作:执行操作:PUSH(IP)(IP)(EA)例:例:CALL BX CALL WORD PTR 3000H段间段间直接直接远远调用:调用:CALL DST执行操作:执行操作:PUSH(CS)PUSH(IP)(IP)DSTDST偏移地址偏移地址 (CS)DSTDST段地址段地址 例:例:CALL SUB_NAME段间段间间接间接远远调用:调用:CALL DST执行操作:执行操作:PUSH(CS)PUSH(IP)(IP)(EA)(CS)(EA+2)例:例:CALL DWORD PTR BX RET返回指令返回指令段内近段内近返回:返回:RET执行操作:执行操作:(IP)POP()段

18、内段内带立即数带立即数近近返回:返回:RET EXP执行操作:执行操作:(IP)POP()(SP)(SP)+D16(由由EXP计算得到)计算得到)带立即数带立即数 用于调用程序调用子程序时的参数传递用于调用程序调用子程序时的参数传递段间远段间远返回:返回:RET执行操作:执行操作:(IP)POP()(CS)POP()段间段间带立即数带立即数远远返回:返回:RET EXP执行操作:执行操作:(IP)POP()(CS)POP()(SP)(SP)+D16(由由EXP计算得到)计算得到)(AX)(BX)(CX)(SP)(IP)例:带立即数返回例:带立即数返回code segmentmain proc

19、far push ax push bx push cx call sub retmain endpsub proc near ret 6sub endpcode ends(SP)堆栈段堆栈段(SP)中断指令中断指令1、什么是中断?、什么是中断?2、什么是中断例行程序?、什么是中断例行程序?3、CPU响应一次中断的过程是怎样的?响应一次中断的过程是怎样的?4、什么是中断向量?、什么是中断向量?中断例行程序的入口地址中断例行程序的入口地址当系统运行或程序运行期间在遇到某些特殊情况时,需当系统运行或程序运行期间在遇到某些特殊情况时,需要计算机自动执行的一组专门的例行程序进行处理。要计算机自动执行的一

20、组专门的例行程序进行处理。中断时所执行的这组程序中断时所执行的这组程序类似与子程序的调用,只不过多了保护类似与子程序的调用,只不过多了保护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(隐含的类型

21、号为(隐含的类型号为3)执行操作:执行操作:PUSH(FLAGS)IF0 TF0 AC0 PUSH(CS)PUSH(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指令执

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

23、T 等待等待(等待外中断,之后仍继续等待等待外中断,之后仍继续等待)LOCK 封锁封锁 BOUND 界限界限 ENTER 建立堆栈帧建立堆栈帧 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、作业:作业:P107-116 3,12,18,22,37

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文([计算机软件及应用]汇编语言课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

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


163文库-Www.163Wenku.Com |网站地图|