汇编语言10分析解析.pptx
《汇编语言10分析解析.pptx》由会员分享,可在线阅读,更多相关《汇编语言10分析解析.pptx(74页珍藏版)》请在咨信网上搜索。
1、第10章 call 和 ret 指令n10.1 ret 和 retfn10.2 call 指令n10.3 依据位移进行转移的call指令n10.4 转移的目的地址在指令中的call指令n10.5 转移地址在寄存器中的call指令n10.6 转移地址在内存中的call指令n10.7 call 和 ret 的配合使用n10.8 mul 指令n10.9 模块化程序设计n10.10 参数和结果传递的问题n10.11 批量数据的传递n10.12 寄存器冲突的问题引言ncall和ret 指令都是转移指令,它们都修改IP,或同时修改CS和IP。n它们经常被共同用来实现子程序的设计。10.1 ret 和 re
2、tfnret指令用栈中的数据,修改IP的内容,从而实现近转移;n操作nretf指令用栈中的数据,修改CS和IP的内容,从而实现远转移;n操作10.1 ret 和 retfn可以看出,如果我们用汇编语法来解释ret和retf指令,则:nCPU执行ret指令时,相当于进行:pop IPnCPU执行retf指令时,相当于进行:pop IP pop CS10.1 ret 和 retfn示例程序nret指令 程序中ret指令执行后,(IP)=0,CS:IP指向代码段的第一条指令。nretf指令 程序中retf指令执行后,CS:IP指向代码段的第一条指令。特别提示n检测点10.1n没有完成此检测点,请不要
3、向下进行。10.2 call 指令nCPU执行call指令,进行两步操作:n(1)将当前的 IP 或 CS和IP 压入栈中;n(2)转移。ncall 指令不能实现短转移,除此之外,call指令实现转移的方法和 jmp 指令的原理相同。10.3 依据位移进行转移的call指令ncall 标号(将当前的 IP 压栈后,转到标号处执行指令)nCPU执行此种格式的call指令时,进行如下的操作:n(1)(sp)=(sp)2 (ss)*16+(sp)=(IP)n(2)(IP)=(IP)+16位位移10.3 依据位移进行转移的call指令ncall 标号n16位位移=“标号”处的地址call指令后的第一个
4、字节的地址;n16位位移的范围为-3276832767,用补码表示;n16位位移由编译程序在编译时算出。n演示10.3 依据位移进行转移的call指令n如果用汇编语法来解释此种格式的 call指令,则:CPU 执行指令“call 标号”时,相当于进行:push IP jmp near ptr 标号 特别提示n检测点10.2(p181)n没有完成此检测点,请不要向下进行。10.4 转移的目的地址在指令中的call指令n前面讲解的call指令,其对应的机器指令中并没有转移的目的地址,而是相对于当前IP的转移位移。n指令“call far ptr 标号”实现的是段间转移。n操作10.4 转移的目的地
5、址在指令中的call指令nCPU执行“call far ptr 标号”这种格式的call指令时的操作:n(1)(sp)=(sp)2 (ss)16+(sp)=(CS)(sp)=(sp)2 (ss)16+(sp)=(IP)n(2)(CS)=标号所在的段地址 (IP)=标号所在的偏移地址10.4 转移的目的地址在指令中的call指令n如果用汇编语法来解释此种格式的 call 指令,则:CPU 执行指令“call far ptr 标号”时,相当于进行:push CS push IP jmp far ptr 标号特别提示n检测点10.3n没有完成此检测点,请不要向下进行。10.5 转移地址在寄存器中的c
6、all指令n指令格式:call 16位寄存器n功能:n(sp)=(sp)2n(ss)*16+(sp)=(IP)n(IP)=(16位寄存器)10.5 转移地址在寄存器中的call指令n指令格式:call 16位寄存器n汇编语法解释此种格式的 call 指令,CPU执行call 16位reg时,相当于进行:push IP jmp 16位寄存器特别提示n检测点10.4n没有完成此检测点,请不要向下进行。10.6 转移地址在内存中的call指令n转移地址在内存中的call指令有两种格式:n(1)call word ptr 内存单元地址n(2)call dword ptr 内存单元地址10.6 转移地址
7、在内存中的call指令n(2)call dword ptr 内存单元地址n汇编语法解释:push CS push IP jmp dword ptr 内存单元地址n示例10.6 转移地址在内存中的call指令n(2)call dword ptr 内存单元地址(示例)n 比如,下面的指令:mov sp,10h mov ax,0123h mov ds:0,ax mov word ptr ds:2,0 call dword ptr ds:0 执行后,(CS)=0,(IP)=0123H,(sp)=0CH特别提示n检测点10.5n没有完成此检测点,请不要向下进行。10.7 call 和 ret 的配合使用
8、assume cs:codecode segmentstart:mov ax,1 mov cx,3 call s mov bx,ax;(bx)=?mov ax,4c00h int 21h s:add ax,ax loop s retcode endsend startn问题10.1 右面程序返回前,bx中的值是多少?思考后看分析。10.7 call 和 ret 的配合使用n问题10.1分析CPU 执行这个程序的主要过程:n(1)CPU 将call s指令的机器码读入,IP指向了call s后的指令mov bx,ax,然后CPU执行call s指令,将当前的 IP值(指令mov bx,ax的偏移
9、地址)压栈,并将 IP 的值改变为标号 s处的偏移地址;n(2)CPU从标号 s 处开始执行指令,loop循环完毕,(ax)=8;10.7 call 和 ret 的配合使用n问题10.1分析(续)n(3)CPU将ret指令的机器码读入,IP指向了ret 指令后的内存单元,然后CPU 执行 ret 指令,从栈中弹出一个值(即 call 先前压入的mov bx,ax 指令的偏移地址)送入 IP 中。则CS:IP指向指令mov bx,ax;n(4)CPU从 mov bx,ax 开始执行指令,直至完成。10.7 call 和 ret 的配合使用n程序返回前,(bx)=8。从标号s 到ret的程序段的作
10、用是计算2的N次方,计算前,N的值由CX提供。n下面的程序10.7 call 和 ret 的配合使用10.7 call 和 ret 的配合使用n程序的主要执行过程:n(1)前三条指令执行后,栈的情况如下:10.7 call 和 ret 的配合使用n程序的主要执行过程:n(2)call 指令读入后,(IP)=000EH,CPU指令缓冲器中的代码为 B8 05 00;CPU执行B8 05 00,首先,栈中的情况变为:然后,(IP)=(IP)+0005=0013H。10.7 call 和 ret 的配合使用n程序的主要执行过程:n(3)CPU从cs:0013H处(即标号s处)开始执行。n(4)ret
11、指令读入后:(IP)=0016H,CPU指令缓冲器中的代码为 C3;CPU执行C3,相当于进行pop IP,执行后,栈中的情况为:(IP)=000EH;10.7 call 和 ret 的配合使用n程序的主要执行过程:n(5)CPU回到 cs:000EH处(即call指令后面的指令处)继续执行。n从上面的讨论中我们发现,可以写一个具有一定功能的程序段,我们称其为子程序,在需要的时候,用call指令转去执行。10.7 call 和 ret 的配合使用n可是执行完子程序后,如何让CPU接着call指令向下执行?ncall指令转去执行子程序之前,call指令后面的指令的地址将存储在栈中,所以可以在子程
12、序的后面使用 ret 指令,用栈中的数据设置IP的值,从而转到 call 指令后面的代码处继续执行。10.7 call 和 ret 的配合使用n这样,我们可以利用call和ret来实现子程序的机制。n子程序的框架10.7 call 和 ret 的配合使用n子程序的框架:标号:指令 retn具有子程序的源程序的框架:10.8 mul 指令n因下面要用到,我们介绍一下mul指令,mul是乘法指令,使用 mul 做乘法的时候:n(1)相乘的两个数:要么都是8位,要么都是16位。8 位:AL中和 8位寄存器或内存字节单元中;16 位:AX中和 16 位寄存器或内存字单元中。10.8 mul 指令n使用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 10 分析 解析
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。