在程序设计中,我们会发现一些多次无规律重复地程序段或语.ppt

在程序设计中,我们会发现一些多次无规律重复地程序段或语.ppt

ID:51666190

大小:177.50 KB

页数:42页

时间:2020-03-28

在程序设计中,我们会发现一些多次无规律重复地程序段或语.ppt_第1页
在程序设计中,我们会发现一些多次无规律重复地程序段或语.ppt_第2页
在程序设计中,我们会发现一些多次无规律重复地程序段或语.ppt_第3页
在程序设计中,我们会发现一些多次无规律重复地程序段或语.ppt_第4页
在程序设计中,我们会发现一些多次无规律重复地程序段或语.ppt_第5页
资源描述:

《在程序设计中,我们会发现一些多次无规律重复地程序段或语.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子程序又称过程。调用子程序的程序称为主调程序或主程序。第6章子程序结构8/30/20211ch6子程序的基本结构包括以下几个部分:(1)子程序定义(2)保护现场和恢复现场(3)子程序体(4)子程序返回子程序的结构8/30/20212ch6子程序的定义是由过程定义伪指令PROC和ENDP来完成的。其格式如下:过程名PROC[NEAR/FAR]┆过程名ENDP其中PROC表示过程定义开始,ENDP表示过程定义结束。过程名

2、是过程入口地址的符号表示。一般过程名同标号一样,具有三种属性,即段属性、偏移地址属性以及类型属性(NEAR和FAR)。6.1.1子程序的定义6.1子程序的设计方法8/30/20213ch6如果调用程序和过程在同一代码段中,则使用NEAR属性;MAINPROCFAR…CALLSUBR1RETMAINENDP;SUBR1PROCNEAR…RETSUBR1ENDPMAINPROCFAR…CALLSUBR1RETSUBR1PROCNEAR…RETSUBR1ENDPMAINENDP6.1.2子程序的调用和返回8/30/20214ch6如果调用程序和过程不在同一代码段中,则使用FAR属性;SEGX

3、SEGMENT…SUBTPROCFAR…RETSUBTENDP…CALLSUBT…SEGXENDS;SEGYSEGMENT…CALLSUBT…SEGYENDS8/30/20215ch66.1.3保护现场和恢复现场例如:若子程序PROG中改变了寄存器AX,BX,CX,DX的值,则可采用如下方法保护和恢复现场。PROGPROCPUSHAXPUSHBXPUSHCX;保护现场PUSHDX┆POPDXPOPCXPOPBX;恢复现场POPAXRET;返回断点处PROCENDP8/30/20216ch66.1.4主程序与子程序参数传递方式1通过寄存器传送参数这是最常用的一种方式,使用方便,但参数很多

4、时不能使用这种方法。例:十进制到十六进制转换的程序。程序要求从键盘取得一个十进制数,然后把该数以十六进制的形式在屏幕上显示出来。开始调用DECIBIN调用CRLF调用BINIHEX调用CRLF结束从键盘取得十进制数,保存到BX中显示回车和换行用十六进制形式显示BX中的数8/30/20217ch6Decihexsegmentassumecs:DecihexMainprocfarRepeat:pushdsxorax,axpushaxcalldecibincallcrlfcallbinihexcallcrlfretMainendpDecibinprocnearmovbx,0Newchar:m

5、ovah,1int21hsubal,30hjlexitcmpal,9jgexitcbwxchgax,bxmovcx,10mulcxxchgax,bx;每次乘的addbx,ax;结果在BX中jmpnewcharExit:retDecibinendp8/30/20218ch6Binihexprocnearmovch,4Rotate:movcl,4rolbx,clmovdl,blanddl,0fhadddl,30hcmpdl,3ahjlprintadddl,7hPrint:movah,2int21hdecchjnzrotateretBinihexendpCrlfprocnearmovah,2

6、movdl,odhint21hmovdl,oahint21hretCrlfendpDecihexendsendrepeat8/30/20219ch6如果过程和调用过程在同一源文件(同一模块)中,则过程可直接访问模块中的变量。例6.4主程序MAIN和过程PROADD在同一源文件中,要求用过程PROADD累加数组的所有元素,并把和(不考虑溢出的可能性)送到指定的存储单元中去8/30/202110ch6DATASEGMENTARYDW100DUP(?)COUNTDW100SUMDW?DATAENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATASTAR

7、T:PUSHDSSUBAX,AXPUSHAXMOVAX,DATA…CALLNEARPTRPROADD…RETMAINENDPPROADDPROCNEARPUSHAXPUSHCXPUSHSIPUSHDILEASI,ARYMOVCX,COUNTXORAX,AXNEXT:ADDAX,[SI]ADDSI,2LOOPNEXTMOVSUM,AXPOPDIPOPSIPOPCXPOPAXRETPROADDENDPCODEENDSENDSTART8/30/202

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。