综合程序设计实验报告_第1页
综合程序设计实验报告_第2页
综合程序设计实验报告_第3页
综合程序设计实验报告_第4页
综合程序设计实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学号:0740303104姓名:雷凤

综合程序设计实验报告一、实验目的:1、训练常用程序的编程技巧,如数值计算、代码转换等。2、熟悉和掌握中断调用的使用方法3、熟悉串操作指令的功能与应用,掌握其使用方法;学会编写常用的字符串处理程序4、复习巩固文件的建立、汇编、链接,以及静态、动态调试的全部过程,熟练掌握运用调试工具进行排除和差错的方法,进一步提高调试程序的能力。5、上机前要求写好被调试程序的程序文本,并进行静态调试,然后拟定好调试计划和上机操作步骤。二、实验要求:1、具体了解和掌握分支,循环,子程序,输入输出的使用和在使用时应注意的问题2、学习设计综合性程序的的一般方法。三、实验内容1、实验任务编写两个双字节无符号十进制的加法程序。要求1.两个加数在程序运行时键盘上输入。检查键入的十进制数是否正确?错误要报错在屏幕上输出两个数的和。输入和结果前应该有提示信息2、实验的原理要显示提示信息,调用9号功能键。从键盘上输入一个十进制数后,要分别调用GETNUM和SHOWNUM俩个子程序,进而从屏幕上输出一个数,当从屏幕上显示出俩个数后,将俩数所在的寄存器进栈,相加,再次调用SHOWNUM子程序,在屏幕上输出相加结果。3、程序设计流程图

调用GETNUM得到一个数V四、实验步骤1、编辑(纪事本)DATASSEGMENTCLUE1DB0AH,0DHDB'INPUTANUM:$CLUE2DB0AH,0DHDB'INPUTANUM:$RESULTDB0AH,0DHDB'THESESULTIS;JIEGUODB?;此处输入数据段代码DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKS

MAINPROCFAR ;主程序PUSHDSSUBAX,AXPUSHAXMOVAX,DATASMOVDS,AX;MOVAX,STACKMOVSS,AX;START:MOVAX,DATASMOVDS,AXLEADX,CLUE1;显示第一条提示信息MOVAH,9INT21HCALLGETNUM;调用子程序,得到一个数PUSHAX;保护现场;CALLSHOWNUM;调用子程序,从屏幕上输出一个数LEADX,CLUE2;显示第二条提示信息MOVAH,9INT21HCALLGETNUM;调用子程序,得到一个数;MOVBX,AX;将AX的数送给BXPUSHAX;保护现场;CALLSHOWNUM;调用子程序,从屏幕上输出一个数LEADX,RESULT;显示结果MOVAH,9INT21HPOPAX;将人乂和BX弹栈POPBXADDAX,BX;俩数相加;ADDAL,30H;ConvertnumbertoASCIIcharacter;M;OVDL,AL;MOVAH,02H;INT21H;MOVAL,[BX];相加的结果送给AL;MOVJIEGUO,AL;结果存入JIEGUO单元;LEADX,JIEGUO;显示输出结果;MOVAH,9;INT21H;CALLGETNUM;PUSHAXCALLSHOWNUM

;POPAXRETMAINENDPGETNUMPROCPUSHPUSHBXCX;Savethecontentsofallregisters;exceptforAX,whichwillcontainthePUSHDX;numberwhichwasreadMOVBX,0H;ZerotheBXregisterNEXTDIGIT:MOVAH,1H;DOSinputcharacterfunction#1hexINT21H;GetacharacterCMPAL,'0';Ifthecharacterislessthan0,thenJLDONE;wehaveallthenumberandareDoneCMPAL,'9';Ifthecharacterismorethan9,thenJGDONE;wehaveallthenumberandareDoneSUBAL,30H;ConvertASCIItointegervalueXORAH,AH;ZerothehighbyteofAXPUSHAX;SavethedigitonthestackMOVAX,10D;Place10decimalinAXtomultiplybyMULBX;Multiplythenumberby10MOVBX,AX;GetnumberfromAXandputinBXPOPAX;GetthedigitbackfromthestackADDBX,AX;AddthedigittothenumberJMPNEXTDIGIT;GetthenextdigitDONE:MOVAX,BX;ReturntheNUMBERinAXregisterPOPDX;RestoretheregistersinreverseorderPOPCXJPOPBXJRET;ReturntoCallingprocedureGETNUMENDPSHOWNUMPROC;PUSHA;Savethecontentsofall;PUSHAregisters

MOVCX,0H;ZerotheCXregisterfordigitcounterMOVBX,10D;Setupdivisorof10decimalNEXTOUT:MOVDX,0H;ZeroDXregforhighorderwordofdivDIVBX;DividenumberinAXby10PUSHDX;SaveremainderonthestackINCCX;CountthedigitCMPAX,0H;IsnumberinAXgreaterthan0JGNEXTOUT;Yes,getnextdigitCHAROUT:POPAX;GetnumberfromthestackADDAX,30H;ConvertnumbertoASCIIcharacterMOVDL,AL;MovetocharacterprintregisterMOVAH,2INT21H;PrintthecharacterDECCX;ReducecharacterstoprintbyoneJNZCHAROUT;IfCX>0looptoprintnextdigit;POPA;RestoretheregistersRET;ReturntoCallingprocedureSHOWNUMENDP;此处输入代码段代码;MOVAH,4CH;INT21HCODESENDSENDMAIN2、 汇编(masm/ML)3、 连接(link)4、 调试(debug)5、运行INPUTANUM:45INPUTANUM:34THESESULTIS:79Pressanykeytocontinue五、实验中各个步骤遇到的问题及解决方法、1、 汇编(masm/ML)2、 连接(link)3、 调试(debug)刚开始时就是只能显示俩条提示信息,不能输出输出结果的提示信息,也不能输出结果,这个问题是在给老师检查时老师在子程序CHAROUT部分调用了2号功能键,然后问题就迎刃而解了。六、总结经验这个程序如果完全要自己来写,是很难完全写对的,由于所有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论