资源描述:
《实验三 代码转换程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验三代码转换程序设计一.实验目的:1.掌握几种最基本的代码转换方法;2.运用子程序进行程序设计.二.实验内容:1.从键盘上输入若干两位十进制数,寻找其中的最小值,然后在屏幕上显示出来.2.两个十进制数之间的分隔符,输入结束标志自定,但要在报告中说明.3.对输入要有检错措施,以防止非法字符输入,并有适当的提示.4.将整个程序分解为若干模块,分别用子程序实现.在报告中要给出模块层次图.三、创新功能:1、成功避免空格影响,在输入数据时,用户可以键入无限多用于分隔的空格,不会影响程序的输入,按回车结束一串待比较数的输入。2、扩充了题目要求,将判断范围扩展到负数领域,在一串数中允许有负数输入
2、,且可以输出最小数。运行结果如下,可以看到,负数存在时仍可正常判断,以回车作为结束标志四.预习题:1.如何将输入的两个字符(0--9)变为十进制或二进制数?答:将(高位ASCII码-‘0’)*10+低位ASCII码-‘0’即为对应10进制数。将高位ASCII码-‘0’后左移一位保存,再左移两位,求两者之和,在加上低位ASCII码-‘0’则可通过移位转移成二进制数。2.如何将选出的最小值(二进制或十进制)变为ASCII码再进行显示?答:可将两位数除10,对AL中的商+‘0’显示,AH中的余数+‘0’显示。3.你觉得采用二进制运算还是十进制运算更适合于这个实验?答:二进制运算。直接通过A
3、SCII码高低位判断大小。五、流程图:开始是是是是更新BH,BL更新CH,CL合法输入?读下一个字符显示不合法,终止程序判断是否为最小正数合法输入?判断是否为最小负数读下一个字符是否输入‘-’号输出最小值判断字符是否为回车是判断当前输入是否为空格六、代码分析JUDGEMACRO;判断字符是否合法CMPAL,'0'JBWRONG;不合法转去wrong处执行CMPAL,'9'JAWRONGENDMPRESENTMACROX,Y;显示两个字符MOVAH,02HMOVDL,XINT21HMOVAH,02HMOVDL,YINT21HENDMINPUTMACRO;从键盘读取字符MOVAH,01H
4、INT21HENDMDATASEGMENTSTRINGDB'Theminis:','$'STRING1DB0DH,'Inputillegal!','$'STRING3DB'Pleaseinputnumber:','$'DATAENDSSTACKSEGMENT'STACK'DB100DUP(?)STACKENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVDX,SEGDATAMOVDS,DXMOVBH,9+'0';BH中存放正的最小值的十位,并将其转换为ASCII码MOVBL,9+'0';BL中存放正的最小值的个位MOVCH,'0';CH中存放负的
5、最小值的十位MOVCL,'0';CL中存放负的最小值的十位MOVAH,09HMOVDX,SEGSTRING3MOVDS,DXLEADX,STRING3INT21HLOOP1:INPUTCMPAL,20HJZLOOP1;循环找到第一个不是空格的字符CMPAL,0DH;判断是否输入结束JZNEARPTRRACMPAL,'-';判断数的符号JZNEARPTRNEGT;负数则转去NEGT处执行JUDGE;判断数的合法性CMPAL,BH;输入的值与最小正数的十位相比较JNANEXT;当前输入的值有可能比得到的最小数小K:INPUT;把下一个不符合条件的字符读出JMPNEARPTRLOOP1RA
6、:JMPNEARPTREXITWRONG:CALLILLEGALJMPNEARPTRENDDNEXT:MOVBH,AL;判断当前输入的正数是否为最小数INPUTJUDGECMPAL,BLJAKMOVBL,ALJMPNEARPTRKNEGT:INPUTJUDGECMPAL,CH;判断当前输入的负数是否为最小负数JBKMOVCH,AL;是则更新CH的值INPUTJUDGECMPAL,CLJBK;MOVCL,ALJMPLOOP1EXIT:PRESENT0DH,0AHMOVAH,09HMOVDX,SEGSTRINGMOVDS,DXLEADX,STRINGINT21HCMPCH,'0';判断最
7、小数的符号是否为负(通过负数最高位是否被修改判断)JNZK1;不为0则说明最小数为负数CMPCL,'0'JNZK1PRESENTBH,BL;均不满足跳转条件说明最小数是正数,直接进行显示JMPNEARPTRENDDK1:MOVAH,02H;输出最小的负数MOVDL,'-'INT21HPRESENTCH,CLJMPENDDENDD:MOVAX,4C00HINT21HILLEGALPROC;显示不合法字符串MOVAH,09HMOVDX,SEGSTRING1MO