




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
39(上机题)编写程序实现下列5项功能,通过从键盘输入15进行菜单式选择:(1)按数字键“1”,完成将字符串中的小写字母变换成大写字母。用户输入由英文大小写字母或数字09组成的字符串(以回车结束),变换后按下列格式在屏幕上显示:例如:abcdgyt0092 ABCDGYT0092按任一键重做;按Esc键返回主菜单。(2)按数字键“2”,完成在字符串中找最大值。用户输入由英文大小写字母或数字09 组成的字符串(以回车结束),找出最大值后按下列格式在屏幕上显示: The maximum is 按任一键重做;按Esc键返回主菜单。(3)按数字键“3”,完成输入数据组的排序。用户输入一组十进制数值(小于255),然后变换成十六进制数,并按递增方式进行排序,按下列格式在屏幕上显示:按任一键重做;按Esc键返回主菜单。(4)按数字键“4”,完成时间的显示。首先提示用户对时,即改变系统的定时器HH:MM:SS(以冒号间隔,回车结束),然后在屏幕的右上角实时显示出时间:HH:MM:SS。按任一键重新对时;按Esc键返回主菜单。(5)按数字键“5”,结束程序的运行,返回操作系统。解: 主程序的编程思路:四、程序代码STACK SEGMENT STACKDB 256 DUP(?)TOP LABELWORDSTACK ENDSDATA SEGMENTTABLE DW G1, G2, G3, G4, G5STRING1 DB 1. Change small letters into capital letters of string;, 0DH, 0AH, $STRING2 DB 2. Find the maximum of string;, 0DH, 0AH, $STRING3 DB 3. Sort for datas;, 0DH, 0AH, $STRING4 DB 4. Show Time;, 0DH, 0AH, $STRING5 DB 5. Exit., 0DH, 0AH, $STRINGN DB Input the number you select (1-5) : $IN_STR DB Input the string (including letters & numbers, less than 60 letters) :, 0DH, 0AH, $PRESTR DB Original string : $NEWSTR DB New string : $OUT_STR DB The string is $MAXCHR DB The maximum is $IN_NUM DB Input the numbers (0 - 255, no more than 20 numbers) : , 0DH, 0AH, $OUT_NUM DB Sorted numbers : , 0DH, 0AH, $IN_TIM DB Correct the time (HH:MM:SS) : $HINTSTR DB Press ESC, go back to the menu; or press any key to play again!$KEYBUF DB 61DB ?DB 61 DUP (?)NUMBUF DB ?DB 20 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART:MOVAX, DATAMOV DS, AXMOVAX, STACKMOV SS, AXMOV SP, OFFSET TOPMAIN: CALL FAR PTR MENU ; 设置显示器AGAIN:MOVAH, 2MOV BH, 0 ; 页号MOV DL, 41 ; 列号MOV DH, 10 ; 行号INT 10H ; 光标位置设置MOVAH, 1INT 21HCMPAL, 1JB AGAINCMPAL, 5JAAGAINSUB AL, 1 ; N-1SHLAL, 1 ; (N-1)*2CBW ; AL-AXLEA BX, TABLEADD BX, AXJMPWORD PTR BXG1:CALL FAR PTR CHGLTRMOVAH, 8INT 21HCMPAL, 1BHJZ MAINJMP G1G2:CALL FAR PTR MAXLTRMOVAH, 8INT 21HCMPAL, 1BHJZ MAINJMP G2G3:CALL FAR PTR SORTNUMMOVAH, 8INT 21HCMPAL, 1BHJZ MAINJMP G3G4:CALL FAR PTR TIMCHKMOVAH, 8INT 21HCMPAL, 1BHJZ MAINJMP G4G5:MOVAH, 4CHINT 21HMENU PROC FAR ; 显示主界面;设置显示器方式MOVAH, 0MOVAL, 3;MOV BL, 0;INT 10H ; 清屏MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 5 ; 行号INT 10H ; 光标位置设置MOVAH, 9LEA DX, STRING1INT 21HMOVAH, 2MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 光标位置设置MOVAH, 9LEA DX, STRING2INT 21HMOVAH, 2MOV DL, 5 ; 列号MOV DH, 7 ; 行号INT 10H ; 光标位置设置MOVAH, 9LEA DX, STRING3INT 21HMOVAH, 2MOV DL, 5 ; 列号MOV DH, 8 ; 行号INT 10H ; 光标位置设置MOVAH, 9LEA DX, STRING4INT 21HMOVAH, 2MOV DL, 5 ; 列号MOV DH, 9 ; 行号INT 10H ; 光标位置设置MOVAH, 9LEA DX, STRING5INT 21HMOVAH, 2MOV DL, 5 ; 列号MOV DH, 10 ; 行号INT 10H ; 光标位置设置MOVAH, 9LEA DX, STRINGNINT 21HRETMENU ENDPCHGLTR PROC FAR ; 将输入字符串中小写字母便换成大写字母RECHG:;设置显示器方式MOVAH, 0MOVAL, 3MOV BL, 0INT 10H ; 清屏MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 5 ; 行号INT 10H ; 输入提示光标位置设置MOVAH, 9LEA DX, IN_STRINT 21H ; 输入字符串提示MOVAH, 2MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 输入字符串光标位置设置MOVAH, 0AHLEA DX, KEYBUFINT 21H ; 输入字符串CMP KEYBUF + 1, 0JZ RECHG ; 判断输入字符串是否为空串LEA BX, KEYBUF + 2MOVAL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR BX, $ ; 在输入字符串尾加结束标志$MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 7 ; 行号INT 10H ; 源字符串提示光标位置设置MOVAH, 9LEA DX, PRESTRINT 21H ; 输出源字符串提示MOVAH, 9LEA DX, KEYBUF + 2INT 21H ; 输出源字符串LEA BX, KEYBUF + 2LCHG:CMP BYTE PTR BX, 61HJB NOCHGAND BYTE PTR BX, 0DFHNOCHG:INC BXLOOP LCHG ; 将字符串中小写字母转换成大写字母MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 8 ; 行号INT 10H ; 新字符串提示光标位置设置MOVAH, 9LEA DX, NEWSTRINT 21H ; 输出新字符串提示MOVAH, 9LEA DX, KEYBUF + 2INT 21H ; 输出新字符串MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 9 ; 行号INT 10H ; 提示信息光标位置设置MOVAH, 9LEA DX, HINTSTRINT 21H ; 输出提示信息RETCHGLTR ENDPMAXLTR PROC FAR ; 在输入字符串中找出最大值REMAX:;设置显示器方式MOVAH, 0MOVAL, 3MOV BL, 0INT 10H ; 清屏MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 5 ; 行号INT 10H ; 输入提示光标位置设置MOVAH, 9LEA DX, IN_STRINT 21H ; 输入字符串提示MOVAH, 2MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 输入字符串光标位置设置MOVAH, 0AHLEA DX, KEYBUFINT 21H ; 输入字符串CMP KEYBUF + 1, 0JZ REMAX ; 判断输入字符串是否为空串LEA BX, KEYBUF + 2MOVAL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR BX, $ ; 在输入字符串位加结束标志$MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 7 ; 行号INT 10H ; 源字符串提示光标位置设置MOVAH, 9LEA DX, OUT_STRINT 21H ; 输出字符串提示MOVAH, 9LEA DX, KEYBUF + 2INT 21H ; 输出字符串MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 8 ; 行号INT 10H ; 新字符串提示光标位置设置MOVAH, 9LEA DX, MAXCHRINT 21H ; 输出字符串中最大值提示MOV DL, 0LEA BX, KEYBUF + 2LCMP:CMP BX, DLJB NOLCHGMOV DL, BXNOLCHG:INC BXLOOP LCMP ; 找出字符串中最大字符,放入DLMOVAH, 2INT 21H ; 输出字符串中最大字符MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 9 ; 行号INT 10H ; 提示信息光标位置设置MOVAH, 9LEA DX, HINTSTRINT 21H ; 输出提示信息RETMAXLTR ENDPSORTNUM PROC FAR ; 对输入数据组排序RESORT:;设置显示器方式MOVAH, 0MOVAL, 3MOV BL, 0INT 10H ; 清屏MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 5 ; 行号INT 10H ; 输入提示光标位置设置MOVAH, 9LEA DX, IN_NUMINT 21HMOVAH, 2MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 输入数据组光标位置设置MOVAH, 0AHLEA DX, KEYBUFINT 21H ; 输入数据组字符串CALL CIN_INT ; 字符串转换成数据串CMPAL, 0JZ RESORT ; 判断数据串是否有错CMP NUMBUF, 0JZ RESORT ; 判断数据串是否为空MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 7 ; 行号INT 10H ; 输出提示光标位置设置MOVAH, 9LEA DX, OUT_NUMINT 21H ; 输出数据串提示MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 8 ; 行号INT 10H ; 输出数据组光标位置设置CALL FAR PTR MPSORT ; 数据组排序CALL FAR PTR INT_OUT ; 数据组的输出MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 9 ; 行号INT 10H ; 提示信息光标位置设置MOVAH, 9LEA DX, HINTSTRINT 21H ; 输出提示信息RETSORTNUM ENDPCIN_INTPROC NEAR ; 读入整型数; 入口参数:无; 出口参数为:AL(有无错误标志,0为有,1为无)MOV CL, KEYBUF + 1LEA SI, KEYBUF + 2MOV CH, 0 ; 数据组数据个数置0MOV DH, 10MOVAL, 0 ; 当前数据x=0MOV DL, 0 ; 有无数据标志置0,即无数据FNDNUM:CMP BYTE PTR SI, JZ ADDNUM ; 判断当前字符是否为空格CMP BYTE PTR SI, 0JB ERRNUMCMP BYTE PTR SI, 9JA ERRNUM ; 判断当前字符是否在0-9之间MOV DL, 1 ; 有无数据标志置1,即有数据MULDHXOR BH, BHMOV BL, SIADD AX, BXSUB AX, 0 ; 计算出当前数据xCMPAH, 0JA ERRNUM ; 判断x 是否越界JMP NEXTADDNUM:CMP DL, 1JNZ NEXT ; 判断是否有数据INC CH ; 数据组数据个数加1CALLADDNEWMOV DL, 0MOVAL, 0 ; 清零NEXT:INC SIDEC CLCMP CL, 0JNZ FNDNUM ; 依次检查各字符CMP DL, 1JNZ TOTAL ; 判断是否有未加入的数据INC CHCALLADDNEWTOTAL:MOV NUMBUF, CH ; 置数据组数据个数MOVAL, 1 ; 输入数据无错误JMP CRTNUMERRNUM:MOVAL, 0 ; 输入数据有错误CRTNUM:RETCIN_INT ENDPADDNEW PROC NEAR ; 增加新数; 入口参数:CH(数据组数据个数)、AL(当前数据x); 出口参数:无PUSH AXLEA BX, NUMBUFMOVAL, CHCBWADD BX, AXPOPAXMOV BX, ALRETADDNEW ENDPMPSORT PROC FAR ; 数据组排序MOVAL, NUMBUFCMPAL, 1JBE NOSORT ; 若只有一个元素,停止排序CBWMOV CX, AXLEA SI, NUMBUF ; SI指向数据组首地址ADD SI, CX ; SI指向数据组末地址DEC CX ; 外循环次数LP1: ; 外循环开始PUSH CXPUSH SIMOV DL, 0 ; 交换标志置0LP2: ; 内循环开始MOVAL, SICMPAL, SI - 1JAE NOXCHGXCHG AL, SI - 1 ; 交换操作MOV SI, ALMOV DL, 1 ; 交换标志置1NOXCHG:DEC SILOOP LP2POP SIPOP CXCMP DL, 1JNZ NOSORT ; 判断交换标志LOOP LP1NOSORT:RETMPSORTENDPINT_OUT PROC FAR ; 输出数据组MOVAL, NUMBUFCBWMOV CX, AXMOV BL, 10HLEA SI, NUMBUF + 1PRINT:MOVAL, SICALL OUTNUMINC SIMOVAH, 2MOV DL, INT 21HLOOP PRINTRETINT_OUT ENDPOUTNUM PROC NEAR ; 将十进制数以十六进制输出; 入口参数:AL(待转换的数据),BL(转换进制数16); 出口参数:无MOVAH, 0DIV BLPUSH AXCMPAH, 10JB PNUMADD AH, 7PNUM: ADD AH, 30HMOV DL, AHPOPAXPUSH DXCMPAL, 0JZ OUTNCALL OUTNUMOUTN:POPDXMOVAH, 2INT 21HRETOUTNUM ENDPTIMCHK PROC FAR ; 设定并显示时间;设置显示器方式MOVAH, 0MOVAL, 3;MOV BL, 0;INT 10H ; 清屏MOVAH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 设置提示光标位置设置MOVAH, 9LEA DX, IN_TIMINT 21H ; 时间串提示MOVAH, 0AHLEA DX, KEYBUFINT 21H ; 输入时间串MOV BL, 10MOVAL, KEYBUF + 2SUB AL, 0MUL BLADD AL, KEYBUF + 3SUB AL, 0CMPAL, 0JB INVALIDCMPAL, 24JAE INVALID ; 判断时 有效性MOV CH, ALMOVAL, KEYBUF + 5SUB AL, 0MUL BLADD AL, KEYBUF + 6SUB AL, 0CMPAL, 0JB INVALIDCMPAL, 60JAE INVALID ; 判断分 有效性MOV CL, ALMOVAL, KEYBUF + 8SUB AL, 0MUL BLADD AL, KEYBUF + 9SUB AL, 0CMPAL, 0JB INVALIDCMPAL, 60JAE INVALID ; 判断秒 有效性MOV DH, ALMOV DL, 0MOVAH, 2DHINT 21H ; 置系统时间INVALID:CALL TIMERETTIMCHK ENDPTIME PROC ; 显示时间子程序;设置显示器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山大老年护理试题及答案
- 算盘考试题目及答案
- 2025年数学多元函数题库及答案
- 安全培训空间先进性评估课件
- 将来时态课件
- 东南亚跨境电商市场新兴电商平台崛起与竞争策略研究报告
- 安全培训矩阵法大庆油田课件
- 安徽中职考试真题及答案
- 电网常识的题目及答案
- 2025年农病试题及答案
- 在线教研室活动方案
- 安保日常培训课件
- 具身智能行业深度:技术路线、市场机遇、产业链及相关公司深度梳理
- 1《我三十万大军胜利南渡长江》跨学科公开课一等奖创新教案统编版语文八年级上册
- 工程概算、预算、结算审核报告模板
- 2025至2030年中国不锈钢氢退丝行业投资前景及策略咨询报告
- 《民营经济促进法》全文学习解读
- 江西省防雷减灾白皮书 (2024年)
- 2025年新疆风力发电市场调查报告
- 面向新质生产力培育的科技成果转化策略与实践路径
- DB50-T233-2020-道路照明设施维护技术规程-重庆市
评论
0/150
提交评论