ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:70.22KB ,
资源ID:7804485      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7804485.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理上机答案西电.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理上机答案西电.docx

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(秒)最好定点显示。用户按任一键,

3、重新对时,按ESC键,返回主菜单。 (5)按下“5”键,结束程序运行,返回系统提示符。程序代码:STACK SEGMENT STACK DB 256 DUP(?)TOP LABEL WORDSTACK 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

4、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 str

5、ing 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 61 DB ? DB 61 DUP (?)

6、NUMBUF DB ? DB 20 DUP (?)DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSTART: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX MOV SP, OFFSET TOPMAIN: CALL FAR PTR MENU ; 设置显示器AGAIN: MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 41 ; 列号 MOV DH, 10 ; 行号 INT 10H ; 光标位置设置 MOV AH, 1 INT 21H CMP AL, 1 JB AGA

7、IN CMP AL, 5 JA AGAIN SUB AL, 1 ; N-1 SHL AL, 1 ; (N-1)*2 CBW ; AL-AX LEA BX, TABLE ADD BX, AX JMP WORD PTR BXG1: CALL FAR PTR CHGLTR MOV AH, 8 INT 21H CMP AL, 1BH JZ MAIN JMP G1G2: CALL FAR PTR MAXLTR MOV AH, 8 INT 21H CMP AL, 1BH JZ MAIN JMP G2G3: CALL FAR PTR SORTNUM MOV AH, 8 INT 21H CMP AL, 1BH

8、 JZ MAIN JMP G3G4: CALL FAR PTR TIMCHK MOV AH, 8 INT 21H CMP AL, 1BHJZ MAIN JMP G4G5: MOV AH, 4CH INT 21HMENU PROC FAR ; 显示主界面 ;设置显示器方式 MOV AH, 0 MOV AL, 3; MOV BL, 0; INT 10H ; 清屏 MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 5 ; 行号 INT 10H ; 光标位置设置 MOV AH, 9 LEA DX, STRING1 INT 21H MOV AH, 2 MOV

9、 DL, 5 ; 列号 MOV DH, 6 ; 行号 INT 10H ; 光标位置设置 MOV AH, 9 LEA DX, STRING2 INT 21H MOV AH, 2 MOV DL, 5 ; 列号 MOV DH, 7 ; 行号 INT 10H ; 光标位置设置 MOV AH, 9 LEA DX, STRING3 INT 21H MOV AH, 2 MOV DL, 5 ; 列号 MOV DH, 8 ; 行号 INT 10H ; 光标位置设置 MOV AH, 9 LEA DX, STRING4 INT 21H MOV AH, 2 MOV DL, 5 ; 列号 MOV DH, 9 ; 行号

10、INT 10H ; 光标位置设置 MOV AH, 9 LEA DX, STRING5 INT 21H MOV AH, 2 MOV DL, 5 ; 列号 MOV DH, 10 ; 行号 INT 10H ; 光标位置设置 MOV AH, 9 LEA DX, STRINGN INT 21H RETMENU ENDPCHGLTR PROC FAR ; 将输入字符串中小写字母便换成大写字母RECHG: ;设置显示器方式 MOV AH, 0 MOV AL, 3 MOV BL, 0 INT 10H ; 清屏 MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 5

11、; 行号 INT 10H ; 输入提示光标位置设置 MOV AH, 9 LEA DX, IN_STR INT 21H ; 输入字符串提示 MOV AH, 2 MOV DL, 5 ; 列号 MOV DH, 6 ; 行号 INT 10H ; 输入字符串光标位置设置 MOV AH, 0AH LEA DX, KEYBUF INT 21H ; 输入字符串 CMP KEYBUF + 1, 0 JZ RECHG ; 判断输入字符串是否为空串 LEA BX, KEYBUF + 2 MOV AL, KEYBUF + 1 CBW MOV CX, AX ADD BX, AX MOV BYTE PTR BX, $ ;

12、 在输入字符串尾加结束标志$ MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 7 ; 行号 INT 10H ; 源字符串提示光标位置设置 MOV AH, 9 LEA DX, PRESTR INT 21H ; 输出源字符串提示 MOV AH, 9 LEA DX, KEYBUF + 2 INT 21H ; 输出源字符串 LEA BX, KEYBUF + 2LCHG: CMP BYTE PTR BX, 61H JB NOCHG AND BYTE PTR BX, 0DFHNOCHG: INC BX LOOP LCHG ; 将字符串中小写字母转换成大写字母

13、 MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 8 ; 行号 INT 10H ; 新字符串提示光标位置设置 MOV AH, 9 LEA DX, NEWSTR INT 21H ; 输出新字符串提示 MOV AH, 9 LEA DX, KEYBUF + 2 INT 21H ; 输出新字符串 MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 9 ; 行号 INT 10H ; 提示信息光标位置设置 MOV AH, 9 LEA DX, HINTSTR INT 21H ; 输出提示信息 RETCHGLTR EN

14、DPMAXLTR PROC FAR ; 在输入字符串中找出最大值REMAX: ;设置显示器方式 MOV AH, 0 MOV AL, 3 MOV BL, 0 INT 10H ; 清屏 MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 5 ; 行号 INT 10H ; 输入提示光标位置设置 MOV AH, 9 LEA DX, IN_STR INT 21H ; 输入字符串提示 MOV AH, 2 MOV DL, 5 ; 列号 MOV DH, 6 ; 行号 INT 10H ; 输入字符串光标位置设置 MOV AH, 0AH LEA DX, KEYBUF I

15、NT 21H ; 输入字符串 CMP KEYBUF + 1, 0 JZ REMAX ; 判断输入字符串是否为空串 LEA BX, KEYBUF + 2 MOV AL, KEYBUF + 1 CBW MOV CX, AX ADD BX, AX MOV BYTE PTR BX, $ ; 在输入字符串位加结束标志$ MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 7 ; 行号 INT 10H ; 源字符串提示光标位置设置 MOV AH, 9 LEA DX, OUT_STR INT 21H ; 输出字符串提示 MOV AH, 9 LEA DX, KEYB

16、UF + 2 INT 21H ; 输出字符串 MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 8 ; 行号 INT 10H ; 新字符串提示光标位置设置 MOV AH, 9 LEA DX, MAXCHR INT 21H ; 输出字符串中最大值提示 MOV DL, 0 LEA BX, KEYBUF + 2LCMP: CMP BX, DL JB NOLCHG MOV DL, BXNOLCHG: INC BX LOOP LCMP ; 找出字符串中最大字符,放入DL MOV AH, 2 INT 21H ; 输出字符串中最大字符 MOV AH, 2 MOV

17、 BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 9 ; 行号 INT 10H ; 提示信息光标位置设置 MOV AH, 9 LEA DX, HINTSTR INT 21H ; 输出提示信息 RETMAXLTR ENDPSORTNUM PROC FAR ; 对输入数据组排序RESORT: ;设置显示器方式 MOV AH, 0 MOV AL, 3 MOV BL, 0 INT 10H ; 清屏 MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 5 ; 行号 INT 10H ; 输入提示光标位置设置 MOV AH, 9 LEA DX,

18、 IN_NUM INT 21H MOV AH, 2 MOV DL, 5 ; 列号 MOV DH, 6 ; 行号 INT 10H ; 输入数据组光标位置设置 MOV AH, 0AH LEA DX, KEYBUF INT 21H ; 输入数据组字符串 CALL CIN_INT ; 字符串转换成数据串 CMP AL, 0 JZ RESORT ; 判断数据串是否有错 CMP NUMBUF, 0 JZ RESORT ; 判断数据串是否为空 MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 7 ; 行号 INT 10H ; 输出提示光标位置设置 MOV AH,

19、 9 LEA DX, OUT_NUM INT 21H ; 输出数据串提示 MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 8 ; 行号 INT 10H ; 输出数据组光标位置设置 CALL FAR PTR MPSORT ; 数据组排序 CALL FAR PTR INT_OUT ; 数据组的输出 MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 9 ; 行号 INT 10H ; 提示信息光标位置设置 MOV AH, 9 LEA DX, HINTSTR INT 21H ; 输出提示信息 RETSORTNU

20、M ENDPCIN_INT PROC NEAR ; 读入整型数; 入口参数:无; 出口参数为:AL(有无错误标志,0为有,1为无) MOV CL, KEYBUF + 1 LEA SI, KEYBUF + 2 MOV CH, 0 ; 数据组数据个数置0 MOV DH, 10 MOV AL, 0 ; 当前数据x=0 MOV DL, 0 ; 有无数据标志置0,即无数据FNDNUM: CMP BYTE PTR SI, JZ ADDNUM ; 判断当前字符是否为空格 CMP BYTE PTR SI, 0 JB ERRNUM CMP BYTE PTR SI, 9 JA ERRNUM ; 判断当前字符是否在

21、0-9之间 MOV DL, 1 ; 有无数据标志置1,即有数据 MUL DH XOR BH, BH MOV BL, SI ADD AX, BX SUB AX, 0 ; 计算出当前数据x CMP AH, 0 JA ERRNUM ; 判断x是否越界 JMP NEXTADDNUM: CMP DL, 1 JNZ NEXT ; 判断是否有数据 INC CH ; 数据组数据个数加1 CALL ADDNEW MOV DL, 0 MOV AL, 0 ; 清零NEXT: INC SI DEC CL CMP CL, 0 JNZ FNDNUM ; 依次检查各字符 CMP DL, 1 JNZ TOTAL ; 判断是否

22、有未加入的数据 INC CH CALL ADDNEWTOTAL: MOV NUMBUF, CH ; 置数据组数据个数 MOV AL, 1 ; 输入数据无错误 JMP CRTNUMERRNUM: MOV AL, 0 ; 输入数据有错误CRTNUM: RET CIN_INT ENDPADDNEW PROC NEAR ; 增加新数; 入口参数:CH(数据组数据个数)、AL(当前数据x); 出口参数:无 PUSH AX LEA BX, NUMBUF MOV AL, CH CBW ADD BX, AX POP AX MOV BX, AL RETADDNEW ENDPMPSORT PROC FAR ; 数

23、据组排序 MOV AL, NUMBUF CMP AL, 1 JBE NOSORT ; 若只有一个元素,停止排序 CBW MOV CX, AX LEA SI, NUMBUF ; SI指向数据组首地址 ADD SI, CX ; SI指向数据组末地址 DEC CX ; 外循环次数LP1: ; 外循环开始 PUSH CX PUSH SI MOV DL, 0 ; 交换标志置0LP2: ; 内循环开始 MOV AL, SI CMP AL, SI - 1 JAE NOXCHG XCHG AL, SI - 1 ; 交换操作 MOV SI, AL MOV DL, 1 ; 交换标志置1NOXCHG: DEC SI

24、 LOOP LP2 POP SI POP CX CMP DL, 1 JNZ NOSORT ; 判断交换标志 LOOP LP1NOSORT:RETMPSORT ENDPINT_OUT PROC FAR ; 输出数据组 MOV AL, NUMBUF CBW MOV CX, AX MOV BL, 10H LEA SI, NUMBUF + 1PRINT: MOV AL, SI CALL OUTNUM INC SI MOV AH, 2 MOV DL, INT 21H LOOP PRINT RETINT_OUT ENDPOUTNUM PROC NEAR ; 将十进制数以十六进制输出; 入口参数:AL(待转

25、换的数据),BL(转换进制数16); 出口参数:无 MOV AH, 0 DIV BL PUSH AX CMP AH, 10 JB PNUM ADD AH, 7PNUM: ADD AH, 30H MOV DL, AH POP AX PUSH DX CMP AL, 0 JZ OUTN CALL OUTNUMOUTN: POP DX MOV AH, 2 INT 21H RETOUTNUM ENDPTIMCHK PROC FAR ; 设定并显示时间 ;设置显示器方式 MOV AH, 0 MOV AL, 3; MOV BL, 0; INT 10H ; 清屏 MOV AH, 2 MOV BH, 0 ; 页

26、号 MOV DL, 5 ; 列号 MOV DH, 6 ; 行号 INT 10H ; 设置提示光标位置设置 MOV AH, 9 LEA DX, IN_TIM INT 21H ; 时间串提示 MOV AH, 0AH LEA DX, KEYBUF INT 21H ; 输入时间串 MOV BL, 10 MOV AL, KEYBUF + 2 SUB AL, 0 MUL BL ADD AL, KEYBUF + 3 SUB AL, 0 CMP AL, 0 JB INVALID CMP AL, 24 JAE INVALID ; 判断 时 有效性 MOV CH, AL MOV AL, KEYBUF + 5 SUB AL, 0 MUL BL ADD AL, KEYBUF + 6 SUB AL, 0 CMP AL, 0 JB INVALID CMP AL, 60 JAE INVALID ; 判断 分 有效性 MOV CL, AL

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1