首页 子程序设计

子程序设计

举报
开通vip

子程序设计子程序设计1.子程序的结构形式1.1子程序的说明文件子程序名子程序的功能子程序所占用的寄存器、工作单元子程序的输入参数子程序的输出参数子程序示例一个子程序的说明文件子程序名:DTOB功能:将两位BCD码表示的十进制数转换成二进制数输入参数:AL寄存器中存放待转换的十进制数输出参数:CL寄存器中存放转换后的二进制数所占用寄存器:BX子程序示例:输入AL=01010110B(56H)输出CL=00111000B(38H)2.子程序设计方法2.1子程序的定义、调用和返回某些经常用到或无规律重复的程序段可以设计成可反复调用...

子程序设计
子程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 1.子程序的结构形式1.1子程序的说明文件子程序名子程序的功能子程序所占用的寄存器、工作单元子程序的输入参数子程序的输出参数子程序示例一个子程序的说明文件子程序名:DTOB功能:将两位BCD码表示的十进制数转换成二进制数输入参数:AL寄存器中存放待转换的十进制数输出参数:CL寄存器中存放转换后的二进制数所占用寄存器:BX子程序示例:输入AL=01010110B(56H)输出CL=00111000B(38H)2.子程序设计方法2.1子程序的定义、调用和返回某些经常用到或无规律重复的程序段可以设计成可反复调用的独立程序段,调用完后可以返回原处MAIN:CALLAPROC::CALLAENDP:END子程序的定义与现场保护一、定义格式1:子程序名PROC[NEAR](段内):RET子程序名ENDP格式2:子程序名PROC[FAR](段间):RET子程序名ENDP二、现场保护PNAMEPROCNEARPUSHAXPUSHBX:POPBXPOPAXRETPNAMEENDP例1:编写子程序STAR,其功能是连续显示N个‘*’,然后显示一个回车换行符。STARPROCNEARAGAIN:MOVDL,’*’MOVAH,2INT21HLOOPAGAINMOVDL,0DHMOVAH,2INT21HMOVDL,0AHMOVAH,2INT21HRETSTARENDPCODESEGMENT:MOVCX,10CALLSTARMOVCX,5CALLSTAR:CODEENDSENDSTART3.子程序的参数传递方法(1)通过寄存器传送变量(2)通过堆栈传送变量或变量地址(3)通过存储器传送变量*子程序和调用程序在同一程序模块中,则子程序可直接访问模块中的变量。*子程序和调用程序不在同一程序模块中,则有两种传送方式:建立公共数据区和使用外部符号。一、用寄存器传递参数例:编一数据块传送子程序1)源数据块首地址2)目的数据块首地址3)传送数据块的长度DATASEGMENTSOURCEDBd1,d2,…,dnLENTEQU$-SOURCEDESTDBLENTDUP(?)DATAENDSSTAKSEGMENTPARASTACK‘STACK’SPINTDB100DUP(?)TOPDB?STAKENDSSTAKENDSCODESEGMENTASSUMEDS:DATA,CS:CODE,SS:STAKSTART:MOVAX,DATAMOVDS,AXMOVAX,STAKMOVSS,AXLEASP,TOP:LEASI,SOURCELEADI,DESTMOVCX,LENTCALLMOVTOR:MOVTORPROCNEARLOPI:MOVAL,[SI]MOV[DI],ALINCSIINCDILOOPLOP1RETMOVTORENDPCODEENDSENDSTART子程序举例十进制到十六进制的转换程序(通过寄存器传送变量)键盘输入十进制数,以十六进制的形式在屏幕上输出。调用HEXIBIN调用CRLF调用BINIDEC调用CRLF从键盘输入十六进制数(字符串)转换成数值存放在BX中显示回车换行符将BX中的数值转换成十进制字符的形式输出DECIHEXSEGMENT;1016ASSUMECS:DECIHEXSTART:MOVAX,DATAMOVDS,AXREPEAT:CALLDECIBIN;102CALLCRLFCALLBINIHEX;216CALLCRLFJMPREPEAT;子程序定义DECIHEXENDSENDSTARTDECIBINPROCNEAR;102MOVBX,0NEWCHAR:MOVAH,1INT21HSUBAL,30HJLEXIT;<0退出CMPAL,9DJGEXIT;>9退出CBWXCHGAX,BXMOVCX,10DMULCXXCHGAX,BXADDBX,AXJMPNEWCHAREXIT:RETDECIBINENDPBINIHEXPROCNEAR;216MOVCH,4ROTATE:MOVCL,4ROLBX,CLMOVAL,BLANDAL,0FHADDAL,30HCMPAL,3AHJLPRINTITADDAL,7HPRINTIT:MOVDL,ALMOVAH,2INT21HDECCHJNZROTATERETBINIHEXENDPCRLFPROCNEARMOVDL,0DHMOVAH,2INT21HMOVDL,0AHMOVAH,2INT21HRETCRLFENDPDECIHEXENDSENDSTART2、通过堆栈传递参数[例7-2]利用堆栈传递参数的方法编制一子程序,实现对两个已定义的数组分别求和。说明:这里主程序和子程序在两个不同的代码段中,所以子程序为FAR类型DATASEGMENTARYADBa1,a2,…,anSUMADW?DATAENDSSTACKSEGMENTPARASTACK‘STACK’TAKDB100DUP(?)TOPDB?STACKENDSCODE1SEGMENTASSUMECS:CODE1,DS:DATA,SS:STACKMAIN:MOVAX,DATAMOVDS,AXMOVAX,STAKMOVSS,AXLEASP,TOP:MOVAX,(SUMA-ARYA)PUSHAXMOVAX,OFFSETARYAPUSHAXCALLFARPTRSUM:MOVAH,4CHINT21HCODE1ENDSCODE2SEGMENTASSUMECS:CODE2,DS:DATA,SS:STACKSUMPROCFARPUSHAXPUSHBXPUSHCXPUSHBPPUSHFMOVBP,SPMOVCX,[BP+16]MOVBX,[BP+14]MOVAX,0LOP1:ADDAL,[BX]INCBXADCAH,0LOOPLOP1MOV[BX],AXPOPFPOPBPPOPCXPOPBXPOPAXRET4SUMENDPCODE2ENDSENDMAIN3、用存储单元传递参数[例]把4个字节单元的非压缩BCD码(高4位为0)转换为4位压缩BCD码(两字节)后放到首址为BCDF的两个字节单元中。算法:1、取出第一字节单元的内容2、取出第二字节单元的内容左移4位,然后与1中字节单元内容合并3、取出第三字节单元内容4、取出第四字节单元的内容左移4位,然后与3中字节单元内容合并5、最后将4位BCD码送BCDF和BCDF+1中DATASEGMENTSRCFDB06H,02H,07H,04HBCDFDB2DUP(?)DATAENDSSTAKSEGMENTPARASTACK‘STACK’SPINTDB100DUP(?)TOPDB?STAKENDSCODESEGMENTASSUMEDS:DATA,SS:STAK,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVAX,STAKMOVSS,AXLEASP,TOP:CALLMERGE:RETMERGEPROCFARPUSHAXPUSHBXPUSHCXLEASI,SRCFMOVAH,[SI]MOVBH,[SI+1]MOVCL,4SHLAH,CLADDAH,BHMOVAL,[SI+2]MOVBL,[SI+3]SHLAL,CLADDAL,BLMOVBCDF,AHMOVBCDF+1,ALPOPCXPOPBXPOPAXRETMERGEENDPCODEENDSENDSTART例2累加数组中的元素(直接访问变量)datasegmentarydw1,2,3,4,5,6,7,8,9,10countdw10sumdw?dataendscodesegmentassumecs:code,ds:datastart:pushdssubax,axpushaxmovax,datamovds,axcallnearptrproaddretproaddprocnearpushaxpushcxpushsileasi,arymovcx,countxorax,axnext:addax,[si]addsi,2loopnextmovsum,axpopsipopcxpopaxretproaddendpcodeendsendstart4.子程序的嵌套子程序title的功能是输出*********************MerryChristmas!*********************其中星号用子程序star输出Bless.asm5.DOS系统功能调用5.1调用方式5.2功能调用分类5.3常用DOS系统功能调用常用输入输出功能调用1、键盘输入(1)格式:MOVAH,1INT21H功能:CONAL并回显调用参数:无返回参数:AL2、显示输出(2)格式:MOVDL,’CHAR’MOVAH,2INT21H参数:DL5、打印输出(5)格式:MOVDL,’CHAR’MOVAH,5INT21H功能:打印机输出DL调用参数:DL返回参数:无8、键盘输入(无回显)格式:MOVAH,8INT21H功能:键盘输入一个字符到AL调用参数:无返回参数:AL9、显示字符串(9)格式:LEADX,’STRING’MOVAH,9INT21H功能:将DS:DX指向字符串送显示器显示,直到遇‘$’参数:DX:串首地址10、键盘输入字符串(10)格式:LEADX,缓冲区MOVAH,10INT21H说明:1)缓冲区BUFDB区长DB?DB区长DUP(0)2)缓冲区在当前段程序举例用9号功能调用,输出显示指定的字符串。DATASEGMENTSTRINGDB“Hello,Howareyou!’,’$’CODESEGMENTASSUMECS:CODE,DS:DATABEGIN:MOVAX,DATAMOVDS,AXLEADX,STRINGMOVAH,9INT21H:[例7-6]利用0AH号功能调用,从键盘输入最多达80个字符的字符串存入以BUF为首址的缓冲区中。DATASEGMENTBUFDB80DB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,BUFMOVAH,0AHINT21HMOVAH,4CHINT21HCODEENDSENDSTART子程序设计举例例7-7:设在ADRM和ADRN单元中分别存放两个正整数M、N。编一程序求M和N的最大公约数,并将结果存入RESULT单元中。算法:辗转相除法1、取两个正整数M、N,M>N.2、M/N,余数为R3、若R=0,N即为最大公约数,否则,NM,RN,继续2的步骤子程序为:MCDSTPROCFARPUSHAXPUSHBXPUSHDXCMPAX,BXJZNEXTJAGREATXCHGAX,BXGREAT:XORDX,DXDIVBXANDDX,DXJZNEXTMOVAX,BXMOVBX,DXJMPGREATNEXT:MOVCX,BXPOPDXPOPBXPOPAXRETMCDSTENDP主程序:DATASEGMENTADRMDW?ADRNDW?RESULTDW?DATAENDSSTAKSEGMENTSTADB50DUP(?)TOPDB?STAKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STAKMOVAX,DATAMOVDS,AXMOVAX,STAKLEASP,TOPMOVAX,ADRMMOVBX,ADRNCALLFARPTRMCDSTMOVRESULT,CXMOVAH,4CHINT21HCODEENDSENDSTART例7-8:采用子程序设计方法,编制一简单的信息查询系统。在数据区中已定义有5条不同的文摘信息,编号为0~4。每条信息长度为48个字符,试编写一程序通过从键盘接收0~4之间的编号后,查询到对应的文摘信息在屏幕上显示输出。查不到时,则输出错误提示信息;输入‘$’字符,结束查询。 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 :DISPLAY:显示输出文摘信息DISPCHAR:显示单个字符DISPCRLF:输出回车换行符DATASEGMENTNDB48NO0DB‘*****************’NO1DB‘*******‘NO2DB‘*****************’NO3DB‘*******‘NO4DB‘*******‘DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART::AGAIN:MOVAH,1INT21HCMPAL,’$’JZEXITCMPAL,’0’JBERRORCMPAL,’4’JAERRORMOVBX,OFFSETNO0SUBAL,30HMULNADDBX,AXMOVCX,48CALLDISPLAYJMPAGAINERROR:LEABX,ERRMSMOVCX,22CALLDISPLAYJMPAGAINEXIT:MOVAH,4CH:DISPLAYPROCNEARLOOPR:MOVDL,[BX]CALLDISPCHARINCBXLOOPLOOPRCALLDISPCRLFRETDISPLAYENDPDISPCHARPROCNEARMOVAH,2INT21HRETDISPCHARENDPDISPCRLFPROCNEARMOVDL,0DHCALLDISPCHARMOVDL,0AHCALLDISPCHARRETDISPCRLFCODEENDSENDSTART
本文档为【子程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
丹丹陪你去流浪
暂无简介~
格式:ppt
大小:272KB
软件:PowerPoint
页数:0
分类:
上传时间:2021-09-12
浏览量:28