报告三源代码三源代码
DATASEGMENTINPUTDB100DUPMINTMPDB930H930H置最小值的初始值为99COUNTDB0DIFERRORDB0D用于判断调用输入子程序是否有错提示信息字符串WELCOMEDBPleasei
put
umbersOUTTIPDBMi
imumisCRDB0DH0AH回车换行各种错误输入提示ERROR1DBERRORCharacteris
otvalidERROR2DBERRORNumbermustco
tai
stwodigitsERROR3DBERRORNumberisemptyERROR4DBERRORNeedseparatecharDATAENDSCODESEGMENTASSUMECSCODEDSDATAMAINPROCFARMOVAXDATAMOVDSAXMOVDXOFFSETWELCOME调用欢迎提示CALLPRINTMOVDXOFFSETCR回车换行CALLPRINTCALLGETNUM获取用户输入CMPIFERROR0判断输入过程是否有错JNZBACK错误则直接返回DOSMOVDXOFFSETCR回车换行CALLPRINTCALLFINDMIN查找最小数MOVDXOFFSETOUTTIP调用输出提示
第17页
f微机原理软件实验报告
CALLPRINTMOVAH02HMOVDLMINTMP输出最小值的十位ADDDL30HINT21HMOVAH02HMOVDLMINTMP1输出最小值的个位ADDDL30HINT21HBACKMOVAX4C00H返回DOSINT21HMAINENDP获取输入,出口参数为IFERROR,表示是否有错GETNUMPROCPUSHAX保存现场PUSHBXPUSHCXPUSHDXPUSHDIMOVDI0数组偏移地址MOVCX0标识数字的位数GETLOOPMOVAH01H从键盘读取一个字符INT21HCMPAL0DH和回车比较JEEXIT1是回车则结束输入CMPCX0数字位数为空JECMPSPACE0CMPCX1数字位数为1JECMPSPACE1CMPCX2数字位数为2JECMPSPACE2
CMPSPACE0CMPAL20H
第18页
f微机原理软件实验报告
JEGETLOOP数字位数为0且输入空格则忽略,继续输入
JMPASCBIN不是空格就读取该字符CMPSPACE1CMPAL20HJEERR2数字位数为1且输入空格则位数不是两位数出错
JMPASCBIN否则读取该字符CMPSPACE2CMPAL20HJNEERR4数字位数为2后,不输入空格则分隔符错误XORCXCX输入空格则清零重新计数JMPGETLOOPASCBINSUBAL30H化为二进制数字JLERR1小于则无效字符ERR1大于9则是无效字符CMPAL9和9比较JGMOVINPUTDIAL保存输入的数INCCOUNT统计输入的数字个数,为判断是否输入为两位数INCDI向后移动数组INCCXJMPGETLOOPERR1MOVIFERROR1输出错误1MOVDXOFFSETERROR1CALLPRINTJMPRETURNERR2MOVIFERROR1输出错误2MOVDXOFFSETERROR2CALLPRINTJMPRETURNERR3MOVIFERROR1输出错误3MOVDXOFFSETERROR3CALLPRINTJMPRETURNERR4MOVIFERROR1输出错误4MOVDXOFFSETERROR4CALLPRINTJMPRETURN
第19页
f微机原理软件实验报告
EXIT1MOVBLCOUNT判断输入数的个数是否为零CMPBL0JEERR3输入数目为0则输出错误并退出
ANDBL01H判断数字是否为两r