位数CMPBL0JNEERR2输入数字个数为奇数则出错RETURNPOPDI恢复现场POPDXPOPCXPOPBXPOPAXRETGETNUMENDP回车换行输出字符串,入口参数为DXPRINTPROCPUSHAXMOVAH09HINT21HPOPAXRETPRINTENDP查找最小的数子程序FINDMINPROCPUSHDI保护现场PUSHAXPUSHCXMOVDI2数组下标MOVCLCOUNT把数组长度移入CXMOVALCLCBWMOVCXAXLOPADDDI2
第20页
f微机原理软件实验报告
CMPCXDI是否已经比较完毕JEEXIT2如果比较完毕所有数则退出
MOVAHINPUTDI否则接着比较,移入十位数MOVALINPUTDI1移入个位数CMPAHMINTMP比较十位数,MINTMP低地址为十位JALOP如果MINTMP小,则直接比较下一个数JEHIGHEQU如果十位数相等,比较个位数再否则十位大就直接存储STOMINMOVMINTMPAHMOVMINTMP1ALJMPLOPHIGHEQUCMPALMINTMP1比较个位数JNBLOP个位数比MINTMP大则跳到下一个数JMPSTOMIN否则将当前数写入为MINTMPEXIT2POPCXPOPAXPOPDIRETFINDMINENDPCODEENDSENDMAIN
四实验分析四实验分析下图是实验输出结果截图。实验中以空格为分隔符,空格的个数不限制,以回车为输入结束标志符。对输入的数字进行了位数和范围的严格限制,即必须是两位数字,如果数字小于10,需要补齐零。
实验中对输入错误执行严格的检查,出错则重新输入。判断输入错误的核心思路为:以空格为分割,以回车结束,要求必须是两位数,也即,一位数字后不能有空格,两位数字后必须有空格,回车之后总的输入进行判断,第21页
f微机原理软件实验报告数字个数必须为偶数,以上三种情况囊括了所有可能的格式错误,不满足任何一个条件即出错。满足格式输入后,再判断字符的是否0~9,不是则出错。每项错误均已错误列表的形式给出,打印出错误提示。总结实验中的关键设计思路如下:1、严格的输入格式检查,严格的输入字符有效性检查。2、以数组方式进行存储,每两个BYTE存储一个输入的两位数,存储格式为字符ASCII码。不进行字符ASCII码到数字的转换。3、比较数字大小时,采用分别比较高位ASCII码和低位ASCII码的方式,从而不用在输入时将字符存储为数字,输出时也不用再进行逆转换。程序效率大为提高。4、为使得程序结构清晰,减小代码耦合度,采用了多子程序的设计方式。把实验任务分为三步:读取输入、找出最小、输出打印,分别以子程序方式实现,主调函数依次调用完成实验任务。
五、实验总结
本实验的关键点在于如何设计r