版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理上机答案(西电)上机作业(三)编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用户从键盘输入的五个命令(1-5),各命令功能分别为: (1)按下“1”键,完成字符串小写字母变成大写字母。用户输入一由英文大小写字母或数字0-9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其他字符不变,并在屏幕上显示。用户按任一键,重做,按ESC键,返回主菜单。(2)按下“2”键,完成找最大值(二选一)。 a.接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来; b.接收用户输入若干个无符号8位数(以空格或逗号为分隔符
2、,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。(3)按下“3”键,完成排序(二选一)。 a.接收用户输入的可显示字符串,以回车结束。程序按ASCII码值大小由大到小排序并输出显示; b.接收用户输入若干个有符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。(4)按下“4”键,显示时间。 首先提示用户对时,即用户输入时、分、秒(以空格或逗号为分隔符,以回车结束),然后,在屏幕上不断显示时间,格式为: XX(时): XX(分): XX(秒)最好定点显示。用户按任一键,重新对时,按ESC键
3、,返回主菜单。 (5)按下“5”键,结束程序运行,返回系统提示符。程序代码:STACKSEGMENT STACKDB 256 DUP(?)TOPLABEL WORDSTACKENDSDATASEGMENTTABLEDW G1, G2, G3, G4, G5STRING1DB 1. Change small letters into capital letters of string;, 0DH, 0AH, $STRING2DB 2. Find the maximum of string;, 0DH, 0AH, $STRING3DB 3. Sort for datas;, 0DH, 0AH, $
4、STRING4DB 4. Show Time;, 0DH, 0AH, $STRING5DB 5. Exit., 0DH, 0AH, $STRINGNDB Input the number you select (1-5) : $IN_STRDB Input the string (including letters & numbers, less than 60 letters) :, 0DH, 0AH, $PRESTRDB Original string : $NEWSTRDB New string : $OUT_STRDB The string is $MAXCHRDB The maxim
5、um is $IN_NUMDB Input the numbers (0 - 255, no more than 20 numbers) : , 0DH, 0AH, $OUT_NUMDB Sorted numbers : , 0DH, 0AH, $IN_TIMDB Correct the time (HH:MM:SS) : $HINTSTRDB Press ESC, go back to the menu; or press any key to play again!$KEYBUFDB 61DB ?DB 61 DUP (?)NUMBUFDB ?DB 20 DUP (?)DATAENDSCOD
6、ESEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART:MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS, AXMOV SP, OFFSET TOPMAIN:CALL FAR PTR MENU; 设置显示器AGAIN:MOV AH, 2MOV BH, 0; 页号MOV DL, 41; 列号MOV DH, 10; 行号INT 10H; 光标位置设置MOV AH, 1INT 21HCMP AL, 1JB AGAINCMP AL, 5JA AGAINSUB AL, 1; N-1SHL AL, 1; (N-1)*2CBW; AL-
7、AXLEA BX, TABLEADD BX, AXJMP WORD PTR BXG1:CALL FAR PTR CHGLTRMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G1G2:CALL FAR PTR MAXLTRMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G2G3:CALL FAR PTR SORTNUMMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G3G4:CALL FAR PTR TIMCHKMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G4G5:MOV AH,
8、4CHINT 21HMENUPROC FAR; 显示主界面;设置显示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H; 清屏MOV AH, 2MOV BH, 0; 页号MOV DL, 5; 列号MOV DH, 5; 行号INT 10H; 光标位置设置MOV AH, 9LEA DX, STRING1INT 21HMOV AH, 2MOV DL, 5; 列号MOV DH, 6; 行号INT 10H; 光标位置设置MOV AH, 9LEA DX, STRING2INT 21HMOV AH, 2MOV DL, 5; 列号MOV DH, 7; 行号INT 10H; 光标位置
9、设置MOV AH, 9LEA DX, STRING3INT 21HMOV AH, 2MOV DL, 5; 列号MOV DH, 8; 行号INT 10H; 光标位置设置MOV AH, 9LEA DX, STRING4INT 21HMOV AH, 2MOV DL, 5; 列号MOV DH, 9; 行号INT 10H; 光标位置设置MOV AH, 9LEA DX, STRING5INT 21HMOV AH, 2MOV DL, 5; 列号MOV DH, 10; 行号INT 10H; 光标位置设置MOV AH, 9LEA DX, STRINGNINT 21HRETMENUENDPCHGLTRPROC F
10、AR; 将输入字符串中小写字母便换成大写字母RECHG:;设置显示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10H; 清屏MOV AH, 2MOV BH, 0; 页号MOV DL, 5; 列号MOV DH, 5; 行号INT 10H; 输入提示光标位置设置MOV AH, 9LEA DX, IN_STRINT 21H; 输入字符串提示MOV AH, 2MOV DL, 5; 列号MOV DH, 6; 行号INT 10H; 输入字符串光标位置设置MOV AH, 0AHLEA DX, KEYBUFINT 21H; 输入字符串CMP KEYBUF + 1, 0JZ RECHG
11、; 判断输入字符串是否为空串LEA BX, KEYBUF + 2MOV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR BX, $; 在输入字符串尾加结束标志$MOV AH, 2MOV BH, 0; 页号MOV DL, 5; 列号MOV DH, 7; 行号INT 10H; 源字符串提示光标位置设置MOV AH, 9LEA DX, PRESTRINT 21H; 输出源字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H; 输出源字符串LEA BX, KEYBUF + 2LCHG:CMP BYTE PTR BX, 61H
12、JB NOCHGAND BYTE PTR BX, 0DFHNOCHG:INC BXLOOP LCHG; 将字符串中小写字母转换成大写字母MOV AH, 2MOV BH, 0; 页号MOV DL, 5; 列号MOV DH, 8; 行号INT 10H; 新字符串提示光标位置设置MOV AH, 9LEA DX, NEWSTRINT 21H; 输出新字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H; 输出新字符串MOV AH, 2MOV BH, 0; 页号MOV DL, 5; 列号MOV DH, 9; 行号INT 10H; 提示信息光标位置设置MOV AH, 9LEA D
13、X, HINTSTRINT 21H; 输出提示信息RETCHGLTRENDPMAXLTRPROC FAR; 在输入字符串中找出最大值REMAX:;设置显示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10H; 清屏MOV AH, 2MOV BH, 0; 页号MOV DL, 5; 列号MOV DH, 5; 行号INT 10H; 输入提示光标位置设置MOV AH, 9LEA DX, IN_STRINT 21H; 输入字符串提示MOV AH, 2MOV DL, 5; 列号MOV DH, 6; 行号INT 10H; 输入字符串光标位置设置MOV AH, 0AHLEA DX, KE
14、YBUFINT 21H; 输入字符串CMP KEYBUF + 1, 0JZ REMAX; 判断输入字符串是否为空串LEA BX, KEYBUF + 2MOV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR BX, $; 在输入字符串位加结束标志$MOV AH, 2MOV BH, 0; 页号MOV DL, 5; 列号MOV DH, 7; 行号INT 10H; 源字符串提示光标位置设置MOV AH, 9LEA DX, OUT_STRINT 21H; 输出字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H; 输出字符串M
15、OV AH, 2MOV BH, 0; 页号MOV DL, 5; 列号MOV DH, 8; 行号INT 10H; 新字符串提示光标位置设置MOV AH, 9LEA DX, MAXCHRINT 21H; 输出字符串中最大值提示MOV DL, 0LEA BX, KEYBUF + 2LCMP:CMP BX, DLJB NOLCHGMOV DL, BXNOLCHG:INC BXLOOP LCMP; 找出字符串中最大字符,放入DLMOV AH, 2INT 21H; 输出字符串中最大字符MOV AH, 2MOV BH, 0; 页号MOV DL, 5; 列号MOV DH, 9; 行号INT 10H; 提示信息
16、光标位置设置MOV AH, 9LEA DX, HINTSTRINT 21H; 输出提示信息RETMAXLTRENDPSORTNUMPROC FAR; 对输入数据组排序RESORT:;设置显示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10H; 清屏MOV AH, 2MOV BH, 0; 页号MOV DL, 5; 列号MOV DH, 5; 行号INT 10H; 输入提示光标位置设置MOV AH, 9LEA DX, IN_NUMINT 21HMOV AH, 2MOV DL, 5; 列号MOV DH, 6; 行号INT 10H; 输入数据组光标位置设置MOV AH, 0AHL
17、EA DX, KEYBUFINT 21H; 输入数据组字符串CALL CIN_INT; 字符串转换成数据串CMP AL, 0JZ RESORT; 判断数据串是否有错CMP NUMBUF, 0JZ RESORT; 判断数据串是否为空MOV AH, 2MOV BH, 0; 页号MOV DL, 5; 列号MOV DH, 7; 行号INT 10H; 输出提示光标位置设置MOV AH, 9LEA DX, OUT_NUMINT 21H; 输出数据串提示MOV AH, 2MOV BH, 0; 页号MOV DL, 5; 列号MOV DH, 8; 行号INT 10H; 输出数据组光标位置设置CALL FAR P
18、TR MPSORT; 数据组排序CALL FAR PTR INT_OUT; 数据组的输出MOV AH, 2MOV BH, 0; 页号MOV DL, 5; 列号MOV DH, 9; 行号INT 10H; 提示信息光标位置设置MOV AH, 9LEA DX, HINTSTRINT 21H; 输出提示信息RETSORTNUMENDPCIN_INTPROC NEAR; 读入整型数; 入口参数:无; 出口参数为:AL(有无错误标志,0为有,1为无)MOV CL, KEYBUF + 1LEA SI, KEYBUF + 2MOV CH, 0; 数据组数据个数置0MOV DH, 10MOV AL, 0; 当前
19、数据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,即有数据MUL DHXOR BH, BHMOV BL, SIADD AX, BXSUB AX, 0; 计算出当前数据xCMP AH, 0JA ERRNUM; 判断x是否越界JMP NEXTADDNUM:CMP DL, 1JNZ NEXT; 判断是否有数据INC CH;
20、数据组数据个数加1CALL ADDNEWMOV DL, 0MOV AL, 0; 清零NEXT:INC SIDEC CLCMP CL, 0JNZ FNDNUM; 依次检查各字符CMP DL, 1JNZ TOTAL; 判断是否有未加入的数据INC CHCALL ADDNEWTOTAL:MOV NUMBUF, CH; 置数据组数据个数MOV AL, 1; 输入数据无错误JMP CRTNUMERRNUM:MOV AL, 0; 输入数据有错误CRTNUM:RET CIN_INT ENDPADDNEWPROC NEAR; 增加新数; 入口参数:CH(数据组数据个数)、AL(当前数据x); 出口参数:无PU
21、SH AXLEA BX, NUMBUFMOV AL, CHCBWADD BX, AXPOP AXMOV BX, ALRETADDNEWENDPMPSORTPROC FAR; 数据组排序MOV AL, NUMBUFCMP AL, 1JBE NOSORT; 若只有一个元素,停止排序CBWMOV CX, AXLEA SI, NUMBUF; SI指向数据组首地址ADD SI, CX; SI指向数据组末地址DEC CX; 外循环次数LP1:; 外循环开始PUSH CXPUSH SIMOV DL, 0; 交换标志置0LP2:; 内循环开始MOV AL, SICMP AL, SI - 1JAE NOXCHG
22、XCHG AL, SI - 1; 交换操作MOV SI, ALMOV DL, 1; 交换标志置1NOXCHG:DEC SILOOP LP2POP SIPOP CXCMP DL, 1JNZ NOSORT; 判断交换标志LOOP LP1NOSORT:RETMPSORTENDPINT_OUTPROC FAR; 输出数据组MOV AL, NUMBUFCBWMOV CX, AXMOV BL, 10HLEA SI, NUMBUF + 1PRINT:MOV AL, SICALL OUTNUMINC SIMOV AH, 2MOV DL, INT 21HLOOP PRINTRETINT_OUT ENDPOUTN
23、UMPROC NEAR; 将十进制数以十六进制输出; 入口参数:AL(待转换的数据),BL(转换进制数16); 出口参数:无MOV AH, 0DIV BLPUSH AXCMP AH, 10JB PNUMADD AH, 7PNUM:ADD AH, 30HMOV DL, AHPOP AXPUSH DXCMP AL, 0JZ OUTNCALL OUTNUMOUTN:POP DXMOV AH, 2INT 21HRETOUTNUMENDPTIMCHKPROC FAR; 设定并显示时间;设置显示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H; 清屏MOV AH, 2MOV
24、BH, 0; 页号MOV DL, 5; 列号MOV DH, 6; 行号INT 10H; 设置提示光标位置设置MOV AH, 9LEA DX, IN_TIMINT 21H; 时间串提示MOV AH, 0AHLEA DX, KEYBUFINT 21H; 输入时间串MOV BL, 10MOV AL, KEYBUF + 2SUB AL, 0MUL BLADD AL, KEYBUF + 3SUB AL, 0CMP AL, 0JB INVALIDCMP AL, 24JAE INVALID; 判断 时 有效性MOV CH, ALMOV AL, KEYBUF + 5SUB AL, 0MUL BLADD AL,
25、 KEYBUF + 6SUB AL, 0CMP AL, 0JB INVALIDCMP AL, 60JAE INVALID; 判断 分 有效性MOV CL, ALMOV AL, KEYBUF + 8SUB AL, 0MUL BLADD AL, KEYBUF + 9SUB AL, 0CMP AL, 0JB INVALIDCMP AL, 60JAE INVALID; 判断 秒 有效性MOV DH, ALMOV DL, 0MOV AH, 2DHINT 21H; 置系统时间INVALID:CALL TIMERETTIMCHKENDPTIMEPROC; 显示时间子程序;设置显示器方式MOV AH, 0MO
26、V AL, 3;MOV BL, 0;INT 10H; 清屏MOV AH, 2MOV BH, 0; 页号MOV DL, 10; 列号MOV DH, 9; 行号INT 10H; 提示信息光标位置设置MOV AH, 9LEA DX, HINTSTRINT 21H; 输出提示信息DISP1:MOV AH, 2MOV BH, 0; 页号MOV DL, 72; 列号MOV DH, 0; 行号INT 10H; 提示光标位置设置MOV AH, 2CH; 取系统时间,CH,CL,DH分别存放时/分/秒INT 21HMOV AL, CH; 显示 时CALL SHOWNUMMOV AH, 2MOV DL, :INT
27、 21HMOV AL, CL; 显示 分CALL SHOWNUMMOV AH, 2MOV DL, :INT 21HMOV AL, DH; 显示 : 秒CALL SHOWNUMMOV AH,02H; 设置光标位置MOV DX,090AHMOV BH,0INT 10HMOV BX,0018HRE:MOV CX,0FFFFH; 延时REA:LOOP READEC BXJNZ REMOV AH, 0BH; 或MOV AH, 01HINT 21H; INT 16HCMP AL, 0; JE DISP1JZ DISP1; 检查键盘状态RETTIMEENDPSHOWNUM PROC; 把AL中的数字以十进制输出; 入口参数:AL(待显示的数据); 出口参数:无CBWPUSH CXPUSH DXMOV CL, 10DIV CLADD AH, 0MOV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 早绝经与绝经女性骨质疏松防治指南总结2026
- 2025朔州市朔城区神头职业中学校工作人员招聘考试试题
- 2025景德镇市体育运动学校工作人员招聘考试试题
- 2026年高考作文终极押题猜想新高考
- 基坑自动化监测专项施工方案
- 2026年美妆基因检测定制报告及未来五至十年精准美容报告
- 2026年四川省绵阳市中考数学模拟预测题
- 2026年制造业创新报告及工业机器人应用技术发展报告
- 幼儿园角色扮演游戏幼儿语言复杂度变化-基于2023年角色区对话录音词汇密度分析
- 智能精准教研在小学音乐课程开发中的创新与实践研究教学研究课题报告
- 2026重庆北碚区静观镇招聘在村挂职本土人才8人考试参考题库及答案解析
- 2025年神农架林区公安局招聘辅警真题
- 24J113-1 内隔墙-轻质条板(一)
- 公共卫生执业医师实践技能考试试题及答案
- 特种设备安全管理2026版
- 小学音乐中多元文化音乐元素的融合与创新教学课题报告教学研究课题报告
- 心脏再同步化治疗的精准医疗策略
- “十五五规划纲要”解读:托育服务解育儿忧
- 涉融资性贸易案件审判白皮书(2020-2024)-上海二中院
- 雨课堂学堂在线学堂云《生物大数据(福建农林大学 )》单元测试考核答案
- 专题11 环境与发展(讲义全国适用)(原卷版)
评论
0/150
提交评论