欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第十章模块化程序设计精选PPT.ppt

    • 资源ID:49683641       资源大小:1.82MB        全文页数:32页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第十章模块化程序设计精选PPT.ppt

    第十章模块化程序设计第1页,此课件共32页哦把源程序分放在几个文本文件中,在汇编时通过包含伪指令INCLUDE结合成一体INCLUDE 文件名可将常用的子程序形成.ASM汇编语言源文件可将常用的宏定义存放在.MAC宏库文件中可将常量定义、声明语句组织在.INC包含文件中例4.21a 宏库文件 lt421a.mac 主程序文件 lt421a.asm 子程序文件 sub421a.asm10.1 源程序文件的包含1第2页,此课件共32页哦dispcharmacro char;显示char字符mov dl,charmov ah,2int 21hendmdispmsgmacro message;显示message字符串mov dx,offset messagemov ah,9int 21hendmLt421a.macLt421a.mac第3页,此课件共32页哦include lt421a.mac.dispmsg msg1;提示输入数据mov bx,offset bufcall input;数据输入cmp cx,0je start4;没有输入数据则退出mov count,cx.;显示输入的数据.;数据排序.;显示经排序后的数据start4:.exit 0include sub421a.asmendLt421a.asmLt421a.asm第4页,此课件共32页哦子程序源文件有3个子程序ALdisp;显示2位16进制数子程序(例4.10)sorting;排序子程序(例4.8)input;键盘输入子程序还包含一个宏convert;将DX两位ASCII码转换为两位16进制数sub421a.asmsub421a.asm让我们重点分析键盘输入子程序 input第5页,此课件共32页哦;键盘输入子程序;入口参数:ds:bx=存放数据的缓冲区;出口参数:cx=数据个数inputprocpush axpush dxxor cx,cx;数据个数清0input01:xor dx,dx;输入字符清0input02:mov ah,1;键盘输入一个字符int 21hinputinput之一之一继续:input之二第6页,此课件共32页哦input10:cmp al,0dhje input30;是回车,结束整个数据的输入cmp al,je input20;是空格和逗号,确认输入了一个数据cmp al,je input20cmp al,08hje input17;是退格,丢弃本次输入的数据,出错inputinput之二之二继续:input之三第7页,此课件共32页哦cmp al,0;有效数字判断(图4.5b)jb input17;小于0,不是有效数字,出错cmp al,fja input17;大于f,不是有效数字cmp al,ajb input11sub al,20h;af转换成大写AFjmp input12input11:cmp al,Fja input17;字符小于a、大于F,出错cmp al,Ajae input12;是AF,有效字符cmp al,9ja input17;是09,有效字符inputinput之三之三继续:input之四第8页,此课件共32页哦input12:cmp dl,0;有效字符的处理jne input13mov dl,al;dl=0,输入了一个数据的低位,则dlaljmp input02;转到字符输入input13:cmp dh,0jne input17;dl0,dh0输入3位数据,出错mov dh,dl;dl0,dh0输入了一个数据的高位mov dl,al;dhdl,dlaljmp input02;转到字符输入inputinput之四之四继续:input之五第9页,此课件共32页哦input17:mov dl,7;输入错误处理mov ah,2int 21hmov dl,?mov ah,2int 21hjmp input01;转到输入一个数据inputinput之五之五继续:input之六第10页,此课件共32页哦;转换正确的输入数据(图4.5c)input20:convertjmp input01;转到输入一个数据input30:convertpop dxpop axret;返回,出口参数已设定inputendpinputinput之六之六继续:convert之一第11页,此课件共32页哦;将DX两位ASCII码转换为两位16进制数(图4.5c)convertmacrolocal input21,input22local input24,input25cmp dl,0;dl=0,没有要转换的数据,退出je input25convertconvert之之一一继续:convert之二第12页,此课件共32页哦cmp dl,9jbe input21sub dl,7;字符AF,则减7input21:and dl,0fh;转换低位cmp dh,0;dh=0,没有高位数据je input24cmp dh,9jbe input22sub dh,7input22:shl dh,1shl dh,1shl dh,1shl dh,1;转换高位or dl,dh;合并高、低位convertconvert之之二二继续:convert之三第13页,此课件共32页哦源文件包含的操作步骤:分别编辑生成各个文件 汇编、连接主程序文件input24:mov bx,dl;存入缓冲区inc bxinc cx;数据加1input25:endmconvertconvert之之三三第14页,此课件共32页哦把常用子程序写成独立的源程序文件,单独汇编,形成子程序的目标文件.OBJ主程序也经过独立汇编之后形成目标文件连接程序将所有目标文件连接起来,最终产生可执行文件需要遵循的原则:声明共用的变量、过程等 实现正确的段组合 处理好参数传递问题10.2 目标代码文件的连接2第15页,此课件共32页哦声明共用的变量、过程各个模块间共用的变量、过程等要说明PUBLIC 标识符,标识符.;定义标识符的模块使用EXTERN 标识符:类型,标识符:类型.;调用标识符的模块使用标识符是变量名、过程名等类型是byte/word/dword(变量)或near/far(过程)在一个源程序中,public/extern语句可以有多条各模块间的public/extern伪指令要互相配对,并且指明的类型互相一致第16页,此课件共32页哦实现正确的段组合子程序文件必须定义在代码段中,也可以具有局部的数据变量采用简化段定义格式,只要采用相同的存储模式,容易实现正确的近或远调用完整段定义格式中,为了实现模块间的段内近调用(near类型),各自定义的段名、类别必须相同,组合类型都是public。实际的程序开发中,各个模块往往由不同的程序员完成,不易实现段同名或类别相同,所以索性定义成远调用(far类型)定义数据段时,同样也要注意这个问题。当各个模块的数据段不同时,要正确设置数据段DS寄存器的段基地址第17页,此课件共32页哦处理好参数传递问题少量参数可用寄存器或堆栈直接传送数据本身大量数据可以安排在缓冲区,用寄存器或堆栈传送数据的存储地址还可利用变量传递参数,但是要采用public/extern声明为公共(全局)变量这些也是子程序间的参数传递方法第18页,此课件共32页哦例4.21b主程序lt421b.asm并入宏定义子程序文件sub421b.asm,要加上段定义语句、声明语句等,但不需要起始点和结束点模块连接的操作步骤:分别编辑生成各个文件 分别汇编各个文件 连接各个目标文件,形成可执行文件第19页,此课件共32页哦把常用子程序写成独立的源文件,单独汇编形成OBJ文件后,存入子程序库主程序也单独汇编形成OBJ文件主程序连接时,调入子程序库中的子程序模块,产生最终的可执行文件例 主程序文件 lt421c.asm 子程序文件 sub421c1.asm 子程序文件 sub421c2.asm 子程序文件 sub421c3.asm10.3 子程序库的调入3第22页,此课件共32页哦.;宏定义.codeextern ALdisp:near,sorting:near,input:near;声明其他模块中的子程序.startup.exit 0endLt421c.asmLt421c.asm第24页,此课件共32页哦.model small.codepublic aldispAldispproc.Aldispendpendsub421c1.asub421c1.asmsm第25页,此课件共32页哦.model small.codepublic sortingsortingproc.sortingendpendsub421c2.sub421c2.asmasm第26页,此课件共32页哦.model small.codepublic inputinputproc.inputendpendsub421c3.sub421c3.asmasm库文件调入的操作步骤:分别编辑生成各个文件 分别汇编各个文件 用库管理文件,将子程序模块添加到库文件(.LIB)中 连接主程序,提供库文件,形成可执行文件第27页,此课件共32页哦补充例题将子程序补充例题13的子程序编写成模块,供主程序调用实现功能:从键盘输入有符号10进制数,求它们的平均值,然后输出源程序文件进行简单修改主程序文件子程序文件利用目标代码文件的连接形成可执行文件第28页,此课件共32页哦第一章第一章基础知识基础知识汇编语言和汇编语言和C C语言语言编程编程C/C+语言是一个被广泛使用的程序设计语言,它不仅具有良好的高级语言特征,而且还具语言是一个被广泛使用的程序设计语言,它不仅具有良好的高级语言特征,而且还具有一些低级语言的特点,如:寄存器变量、位操作等。所以,有一些低级语言的特点,如:寄存器变量、位操作等。所以,C语言的程序与汇编语言程序之间能语言的程序与汇编语言程序之间能很平滑地衔接。另外,目前主要的很平滑地衔接。另外,目前主要的C语言程序开发环境,如:语言程序开发环境,如:TurboC/C+、BorlandC/C+等,也都等,也都提供了很好的混合编程手段。提供了很好的混合编程手段。一、汇编指令的嵌入一、汇编指令的嵌入为了提高为了提高C语言程序内某特殊功能段的处理效率,我们可以在其源程序中嵌入一段汇编语言程序段。语言程序内某特殊功能段的处理效率,我们可以在其源程序中嵌入一段汇编语言程序段。这样做,虽然能达到提高了程序处理效率的目的,但它无疑以丧失源程序的可移植性为代价。所以,这样做,虽然能达到提高了程序处理效率的目的,但它无疑以丧失源程序的可移植性为代价。所以,当想用当想用C语言和汇编语言混合编程时,程序员需要权衡采用这种方法的利与弊。语言和汇编语言混合编程时,程序员需要权衡采用这种方法的利与弊。在在C语言中,嵌入汇编语言的语法如下语言中,嵌入汇编语言的语法如下(*):asm注意:这里的分号注意:这里的分号;不是汇编语言中起注释作用的分号,而是作为语句的分隔符。不是汇编语言中起注释作用的分号,而是作为语句的分隔符。若若C语言源程序中嵌入一条汇编语句,则可按下列方式来做:语言源程序中嵌入一条汇编语句,则可按下列方式来做:asmmovax,data若要嵌入一组汇编语句,则需要用括号若要嵌入一组汇编语句,则需要用括号和和把它们括起来。把它们括起来。asmmovax,data1xchgax,data2movdata1,ax/实现整型变量实现整型变量data1和和data2之值的交换之值的交换第31页,此课件共32页哦第一章第一章基础知识基础知识汇编语言和汇编语言和C C语言语言编程编程例例在在C语言源程序中嵌入汇编语言语句实现赋值语句语言源程序中嵌入汇编语言语句实现赋值语句A=A+B+C,其中:,其中:A、B、C都是整都是整型变量。型变量。解:解:asmpushax/实现整型变量实现整型变量A=A+B+Cmovax,Aaddax,Baddax,CmovA,axpopax二、二、C语言程序的汇编输出语言程序的汇编输出第32页,此课件共32页哦

    注意事项

    本文(第十章模块化程序设计精选PPT.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开