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

    2023年实验报告子程序设计实验.docx

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

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

    2023年实验报告子程序设计实验.docx

    实验5子程序实验.实验目的1 .掌握主程序与子程序之间的调用关系及调用方法;2 .掌握子程序调用过程中近程调用与远程调用的区别;3 .掌握通过堆栈转送参数的方法。4 .掌握多模块程序设计方法.实验内容1 .将BUF开始的1 0个单元中的二进制数转换成两位十六进制数的ASCI I码,在屏幕 上显示出来。规定码型转换通过子程序HEXAC实现,在转换过程中,通过子程序D ISP实 现显示。DATAS SEGMENToBUF DB 0 0 0 00111B,OO1OOOO1B,OO1O 0 0 10B, 0 000 0 01 1 B,0000 0lOIBJOOOOO I0BJ001 0OIIB,OOl OOIOOBJ 1 1000l0B,010100l0BCAN D B $- B UF ;定义常量CANDATAS ENDSCODE S SEGMENTASSUME CS : CODES, DS:DATASMAIN PROC FAR;主程序块START:MOV AX.DATA SMOV D S ,AXMOV CLJOLEA SI,BUFLOOP1:LOOP1:;调用子程序语句MOVDL,C LANDDL, OFHCMPDL,9JBECAN3ADDDL,7C AN3:ADDDL, 3 OHMOVAH,2INT21H;显示记录个数JMPCONTINUEQUIT:LEADX,str4;退出的子程序MOVAH.9INT2iHMOVAH, 1INT21HCMPAL,1 BH;按ESC退出JEEXITC ONTINUE:LEADX,st r 3;用户是否继续执行当前程序MOVAH,9INT2 1 HMOVAH.II NT21HCMPALY;按y继续,按n退出,不需区分大小写JEYESCMPAL, 'y'JEYESCMPAL/ N,J ESTARTCMPA L:n'JESTARTYES:J MPopt|D I EXIT:MOVAH,4 CH;退出INT21HMA I N ENDP;继续运营当前子程序CODES E NDSHEXA C CODES SEGM ENTASSUME CS:HEXACCO DESHEXAC PROC FAR;二进制转换成十六进制了程序MOVBL, SIINCSIRETHEXAC ENDPHEX A CCODESENDSDISPCODES SEGM ENTASSUM E CS:D I SPCODESDIS P PROC FAR;显示子程序MOV CL, 4MOV CH, 2MOVE:RO L BL,CLMOV DL,B LAND D L,0FHADD DL, 30HCMP DL/ 9'JBE PRINTADD DL,07HPRINT:MOV AH,0 2HINT 21 HDEC CHJNZ MOVEMOV D L,''MOV AH, 02HINT 2 IHR ETDISP ENDPDISP CODES ENDSCHARCODE SEGMENTASS UMECS: CHARCODECHE C K PROC FARPUSH BP;移位语句;显示语句;子程序部分MOVBP,SPMOVSI4BP+1OMOVCX, BP+8MOVAX, BP+6JXORAH, AHAGAIN:CMPAL,SIJNECAN1INCAHCAN1:INCSILOOPAGAINMOV AL, AHMOVBP+ 1 0,AXPOPBPRET4CHECK END PCHARCOD E ENDSE ND STARTTHE MENU: <1>HEXAC GAME <2>CHftR STATISTICS PROGRAM <3>PRESS "ESC" TO QUIT 1Your selection isprogram will execute HEXAC GAME721 22 03 05 82 93 2452 01will you continue program really?<Y:N>n THE MENU: <1>HEXAC GAME <2>CHAR STATISTICS PROGRAM <3>PRESS “ESC" TO QUIT2 Vour selection is 2,the program will execute CHAR STATISTICS PROGRAM? PLEASE INPUT YOUR STRING:bdbfbbbbsdjfhWETHE NUMBER OF b is:6 will you continue program really?<Y:N>n THE MENU: <1>HEXAC GAME <2>CHAR STATISTICS PROGRAM <3>PRESS “ESC” TO QUIT L C1>HEXAC GAME (2>CHAR STATISTICS PROGRAM (3>PRESS ”ESC“ TO QUIT Lfour selection is 1,the program will execute HEXAC GAME?21 22 03 05 82 93 24 E2 52 01"ill you continue program really?<?:N>n FHE MENU: C1>HEXAC GAME C2>CHAR STATISTICS PROGRAM (3>PRESS ”ESC“ TO QUIT2 four selection is 2,the program will execute CHAR STATISTICS PROGRAM? PLEASE INPUT YOUR STRING:bdbfbbbbsdjfh FHE NUMBER OF b is:6 Mill you continue program really?<V:N>n FHE MENU: C1>HEXAC GAME C2>CHAR STATISTICS PROGRAM C3>PRESS “ESC” TO QUIT 3三.实验规定1 .第一个实验程序用子程序的近程调用实现。由于在调用HEX AS C子程序时,子程序又 调用了 DISP子程序,这叫子程序的嵌套调用。实验过程中可以从堆栈的内容看到两个子程序 的返回地址值。由于是近调用,地址值只涉及返回地址的段内偏移量。在每个子程序的执行 中,检查CS值是不变的。2 .第二个程序是运用远调用的方法调用子程序的。在远调用情况下,主程序与子程序 处在不同的逻辑代码段中,可在子程序执行中查看CS值,它与主程序中的CS值是不同的。 子程序调用后,堆栈中保存了返回地址的段地址及段内偏移量。3 .第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。一段是将参数(此 处是用首址TABL E,串的长度N及待记录的字符“ b ")顺序压如堆栈,在子程序调用后, 通过BP指针对堆栈中的参数访问,并将记录的结果通过堆栈返回。有关该方法的原理此处 不再介绍。4 .第三个程序,请采用分文献多模块程序设计方法实现,需注意和实验4中的习题4中 采用的地址跳跃表实现方法区分开来,需注意外部符号的定义及其使用方法。5 .预习子程序设计的基本方法,根据实验内容规定,画出子程序及主程序的流程图;熟 悉键盘键入字符串及用堆栈传送参数的程序段编制方法。四.实验环境PC微机DOS操作系统或Window s操作系统MASM.EXE,LINK.EXE, DE B UGCO M 或宏汇编集成环境.实验环节1 .编辑、汇编三个源程序,生成相应的可执行文献(.EXE)2 .用DEBUG的R命令,T命令或G命令和D命令检查远程调用及近程调用时堆栈的 变化。特别是通过堆栈传送的参数和子程序取出的参数是返回参数的具体过程。3 .检查程序执行的结果是否对的。五 .实验报告规定1 .说明用堆栈传送参数的过程及其具体方法。2 .分析实验结果及所碰到问题,并说明解决的方法。3、列出各实验题目的程序实现清单,写清楚程序设计思绪、各程序模块调用关系及参 数传递方式,源程序中对子程序的人口参数和出口参数及功能应进行适当的注释。六 .思考题分析远程调用与近程调用的区别,在用DEBUG有关命令观测时,执行过程有何不同。子程序的远程调用是段间的调用,也就是主程序和子程序不在一个段。 近程的调用是段内的调用。八、实验小结call HEX ACcal 1 D I SPDEC CANJNZ LOOP1EXIT:MOV AH, 4 cHI NT 21HMAIN ENDPHEXAC PROC NEAR;二进制转换成十六进制子程序MOVBL,SII NC SIRETH EXAC ENDPD I SP PROC N EAR;显示子程序MOV C L,4MOV C H,2MOVE:;移位语句ROL BL,C LMOV DL,BLAND DL, OFHADD DL,3 0 HCMP DL/ 9'J BE PRINTADD DL, 07HP RINT:MOV AH,02H;显示语句INT 2 1HDEC CHJNZ MOVEMOV DL:'MOV AH, 02HINT 21HRETDISP ENDPCODES ENDSEND STARTD: nasti5.0>1 .exe21 22 03 05 82 93 24 E2 522 .编写一个主程序,从键盘接受若干个字符,然后用远调用的方法,调用子程序记录字符 串中字符,b,的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符“ b”.子 程序返回字符" b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符"b"及其 个数(设为一位十六进制数)。DATA SEGMENTSTR 1 DB Oah,Od h , ' PLEAS E INPUT YOUR STRINGS'STR2 DB Oah, Odh/ THE NUMBER OF b i s:$'TABLE DB 50, ?,50DUP(?) :$'DATA ENDSCODE SEG MENTASSUME CS:CODE, DS: D ATASTART:MOV AX,DATAMOVD S,AXLEADX,STR1MOVAH,9INT21 HleaDX, TABLEMOVAH,0AHINT2 1 HLEAS I , TABLEMOVcl, rsi+nMOVCH, 0INCSIINCSIMOVAL,' b 'MOVAH, 0PUSHS IPUSHCXPUSHAXCALLFAR PTR CHECKPOPAXMOVC L,ALLEADX, STR 2MOVAH, 9I NT21HMOVDL,CLANDDL, OFHCM PDL, 9JBECANADDDL,7CAN:ADD DL,3 0 HMOV AH,2INT 21HEXIT:MOV AH,4CHINT 21HCODE ENDSS COD E SEGMENTASSUME CS:S C ODECHECK PROC F ARPUSHBPMOVBP,SPMOVSI, BP+1OMOV CX, BP+8MOVAX, BP+ 6XOR AH, AHAGAIN:CMP AL, SIJN E CAN1INC AHCAN1:INC SILOOP AGAINMOV AL, AHMOV BP+lOb AXPOP B PRET 4C HECK ENDPSCOD E ENDSEND S T ARTPLEASE INPUT YOUR S T RI NG:e hrbu baIhf bdas b THE NUMBER OF b is:43 .请编写一个程序来实现简朴的程序菜单显示。(采用多模块程序设计方法)显示一个菜单规定用户从下表中选择:(1 ) HEXAC GAME(相应一,程序 1 )(2>CHAR STAT I ST I CS PROGRAM (相应程序 2)(3) PRESS “ESC” TO QUIT用户作出选择13时,显示输出要执行操作的名字,如“ Your selcc t ion is l,the p ro g r a m wi 1 1 ex e cute HEXAC NUMBER GAME! ”然后转向相应的程序去执行, 执行结束前进行退出的判断,显示一个提醒信息“ w ill you co n t i n ue p rogr a m really?(Y:N)"规定用户从键盘键入字符,若是“Y”键,则继续程序的执行,若是“N”键,则 返回到菜单。若用户选择3,规定程序显示提醒信息“Please press ESC key to ex it!", 并能按规定对的退出。DAT AS SEGMENT。OP T DW YIDW ERmenu DB ODH, 0AH;THE MENU:*;显示菜单DB 0 D H, OAH; (l)HEXAC GAME,;相应一程序 1DB 0DH,0AH, * (2)CHAR STAT I ST I CS PROGRAM'相应一>程序2DB ODH, 0AH;(3) PRES S "ESC" TO QUITS'BUF DB 00000 1 11B,00 1 00001B,00 1 00 0 1 0B,000000 1 1 B, 00 00 01 OlBJOOOO 0 10B, 1 001 0011B,00100 100B.1110001 0 B,0 1 0 1 00 1 OBCAN DB$-BUF;定义常量 CANs tr 1 DB 0 D H,0 A H/ Y ou r s electio n i s 1, t he progr a m will exe c ute HEXAC GAME$str2 DB 0 dh, 0 ah,'Your s ele c tion is 2,th e prog r am will execu t e CHAR S T ATI S TICS PROGRAM! $'s t r3 DB 0DH, 0 A H , 'will y ou c o n t inue program re a lly?( Y :N)$'str4 DB 0 DH, 0AH,'Please pre s s ESC key to e x it!$'TABLE DB50,?,50DUP(?),c h a r 1 db Oah.Odh/PL EASE I NPU T YOUR STRING: $'char 2 db 0 ah,Odh, 'THE NUMBER 0 F b i sDATAS ENDSC ODES SEGMENTMAIN PROC FARASSUME CS :CODES,DS:DATASSTART:MOVAX,DATASMOV D S ,AXXORDI, DIsubb x, b xxor s i, s iLEA D X,mcnu;显示主菜单MOVAH, 9I NT 21Hdl.O d h;显示回车YI:m o vah,2int2 1 hMOVDL,0AH;显示换行MOVAH,2I N T21HMOVAH, 1;输入选项INT2 1HCMPAL,TJEYICMPAL/ 2'J EERCMPAL, ' 3'JEQUITMOVDI,0leadx,s t rim o vah,9int2 1 hMOVCL,10LEASLBUFCALLHEX AC;调用子程序语句call11 EX ACcallDISPDECCANJNZLOO PlLOOP1:JMPCONTINUEER:MOVDI, 0 2H1 e ad x, s tr2m o vah, 9i n t21 hLEADX, c har 1MOVAH,91NT21HLEADX,TABLEMOVAH,0 AH;输入字符串INT2 1 HLEASI , TABLEMOVCL, SI+ 1 MOVC 11,0;CX中为字符串长度INCS IINCS I;SI指向串首址TABLEMOVAL;b'MOVAH,0;AX中为待查字符PUSHSIPUSHCXPUSHAX;参数送堆栈CALLCHECKPOPAX;记录个数在AL中MOVCL, ALLEAD X ,char2;显示结果MOVAH,9INT2IH

    注意事项

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

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




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

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

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

    收起
    展开