ImageVerifierCode 换一换
格式:DOC , 页数:14 ,大小:88.50KB ,
资源ID:9432097      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(微机原理课后第39题.doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

微机原理课后第39题.doc

1、 39.(上机题)编写程序实现下列5项功能,通过从键盘输入1~5进行菜单式选择: (1)按数字键“1”,完成将字符串中的小写字母变换成大写字母。用户输入由英文大 小写字母或数字0~9组成的字符串(以回车结束),变换后按下列格式在屏幕上显示: <原字符串>例如:abcdgyt0092 <新字符串> ABCDGYT0092 按任一键重做;按Esc键返回主菜单。 (2)按数字键“2”,完成在字符串中找最大值。用户输入由英文大小写字母或数字 0~9 组成的字符串(以回车结束),找出最大值后按下列格式在屏幕上显示: <原字符串> The maximum is <最大值>. 按任一键重

2、做;按Esc键返回主菜单。 (3)按数字键“3”,完成输入数据组的排序。用户输入一组十进制数值(小于255), 然后变换成十六进制数,并按递增方式进行排序,按下列格式在屏幕上显示: <原数值串> <新数值串> 按任一键重做;按Esc键返回主菜单。 (4)按数字键“4”,完成时间的显示。首先提示用户对时,即改变系统的定时器 HH:MM:SS(以冒号间隔,回车结束),然后在屏幕的右上角实时显示出时 间:HH:MM:SS。 按任一键重新对时;按Esc键返回主菜单。 (5)按数字键“5”,结束程序的运行,返回操作系统。 解: ※ 主程序的编程思路: 四、程序代码 STA

3、CK SEGMENT STACK DB 256 DUP(?) TOP LABELWORD STACK ENDS DATA SEGMENT TABLE DW G1, G2, G3, G4, G5 STRING1 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, '$' STRI

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

5、'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!

6、' KEYBUF DB 61 DB ? DB 61 DUP (?) NUMBUF DB ? DB 20 DUP (?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACK START: MOVAX, DATA MOV DS, AX MOVAX, STACK MOV SS, AX MOV SP, OFFSET TOP MAIN: CALL FAR PTR MENU ; 设置显示器 AGAIN: MOVAH, 2 MOV BH, 0 ; 页号 MOV DL, 41 ; 列号 MOV DH, 10

7、 ; 行号 INT 10H ; 光标位置设置 MOVAH, 1 INT 21H CMPAL, '1' JB AGAIN CMPAL, '5' JAAGAIN SUB AL, '1' ; N-1 SHLAL, 1 ; (N-1)*2 CBW ; AL->AX LEA BX, TABLE ADD BX, AX JMPWORD PTR [BX] G1: CALL FAR PTR CHGLTR MOVAH, 8 INT 21H CMPAL, 1BH JZ MAIN JMP G1 G2: CALL FAR PTR MAXLTR MOVAH, 8 INT 2

8、1H CMPAL, 1BH JZ MAIN JMP G2 G3: CALL FAR PTR SORTNUM MOVAH, 8 INT 21H CMPAL, 1BH JZ MAIN JMP G3 G4: CALL FAR PTR TIMCHK MOVAH, 8 INT 21H CMPAL, 1BH JZ MAIN JMP G4 G5: MOVAH, 4CH INT 21H MENU PROC FAR ; 显示主界面 ;设置显示器方式 MOVAH, 0 MOVAL, 3; MOV BL, 0; INT 10H ; 清屏 MOVAH, 2 MO

9、V BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 5 ; 行号 INT 10H ; 光标位置设置 MOVAH, 9 LEA DX, STRING1 INT 21H MOVAH, 2 MOV DL, 5 ; 列号 MOV DH, 6 ; 行号 INT 10H ; 光标位置设置 MOVAH, 9 LEA DX, STRING2 INT 21H MOVAH, 2 MOV DL, 5 ; 列号 MOV DH, 7 ; 行号 INT 10H ; 光标位置设置 MOVAH, 9 LEA DX, STRING3 INT 21H MOVAH, 2

10、 MOV DL, 5 ; 列号 MOV DH, 8 ; 行号 INT 10H ; 光标位置设置 MOVAH, 9 LEA DX, STRING4 INT 21H MOVAH, 2 MOV DL, 5 ; 列号 MOV DH, 9 ; 行号 INT 10H ; 光标位置设置 MOVAH, 9 LEA DX, STRING5 INT 21H MOVAH, 2 MOV DL, 5 ; 列号 MOV DH, 10 ; 行号 INT 10H ; 光标位置设置 MOVAH, 9 LEA DX, STRINGN INT 21H RET MENU ENDP CHG

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

12、LEA DX, KEYBUF INT 21H ; 输入字符串 CMP KEYBUF + 1, 0 JZ RECHG ; 判断输入字符串是否为空串 LEA BX, KEYBUF + 2 MOVAL, KEYBUF + 1 CBW MOV CX, AX ADD BX, AX MOV BYTE PTR [BX], '$' ; 在输入字符串尾加结束标志$ MOVAH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 7 ; 行号 INT 10H ; 源字符串提示光标位置设置 MOVAH, 9 LEA DX, PRESTR INT 21H

13、 ; 输出源字符串提示 MOVAH, 9 LEA DX, KEYBUF + 2 INT 21H ; 输出源字符串 LEA BX, KEYBUF + 2 LCHG: CMP BYTE PTR [BX], 61H JB NOCHG AND BYTE PTR [BX], 0DFH NOCHG: INC BX LOOP LCHG ; 将字符串中小写字母转换成大写字母 MOVAH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 8 ; 行号 INT 10H ; 新字符串提示光标位置设置 MOVAH, 9 LEA DX, NEWSTR

14、 INT 21H ; 输出新字符串提示 MOVAH, 9 LEA DX, KEYBUF + 2 INT 21H ; 输出新字符串 MOVAH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 9 ; 行号 INT 10H ; 提示信息光标位置设置 MOVAH, 9 LEA DX, HINTSTR INT 21H ; 输出提示信息 RET CHGLTR ENDP MAXLTR PROC FAR ; 在输入字符串中找出最大值 REMAX: ;设置显示器方式 MOVAH, 0 MOVAL, 3 MOV BL, 0 INT 10H

15、 ; 清屏 MOVAH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 5 ; 行号 INT 10H ; 输入提示光标位置设置 MOVAH, 9 LEA DX, IN_STR INT 21H ; 输入字符串提示 MOVAH, 2 MOV DL, 5 ; 列号 MOV DH, 6 ; 行号 INT 10H ; 输入字符串光标位置设置 MOVAH, 0AH LEA DX, KEYBUF INT 21H ; 输入字符串 CMP KEYBUF + 1, 0 JZ REMAX ; 判断输入字符串是否为空串 LEA BX, KEYBUF

16、 + 2 MOVAL, KEYBUF + 1 CBW MOV CX, AX ADD BX, AX MOV BYTE PTR [BX], '$' ; 在输入字符串位加结束标志$ MOVAH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 7 ; 行号 INT 10H ; 源字符串提示光标位置设置 MOVAH, 9 LEA DX, OUT_STR INT 21H ; 输出字符串提示 MOVAH, 9 LEA DX, KEYBUF + 2 INT 21H ; 输出字符串 MOVAH, 2 MOV BH, 0 ; 页号 MOV D

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

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

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

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

21、输出提示信息 RET SORTNUM ENDP CIN_INTPROC NEAR ; 读入整型数 ; 入口参数:无 ; 出口参数为:AL(有无错误标志,0为有,1为无) MOV CL, KEYBUF + 1 LEA SI, KEYBUF + 2 MOV CH, 0 ; 数据组数据个数置0 MOV DH, 10 MOVAL, 0 ; 当前数据x=0 MOV DL, 0 ; 有无数据标志置0,即无数据 FNDNUM: CMP BYTE PTR [SI], ' ' JZ ADDNUM ; 判断当前字符是否为空格 CMP BYTE PTR [SI], '0' JB ER

22、RNUM CMP BYTE PTR [SI], '9' JA ERRNUM ; 判断当前字符是否在'0'-'9'之间 MOV DL, 1 ; 有无数据标志置1,即有数据 MULDH XOR BH, BH MOV BL, [SI] ADD AX, BX SUB AX, '0' ; 计算出当前数据x CMPAH, 0 JA ERRNUM ; 判断x 是否越界 JMP NEXT ADDNUM: CMP DL, 1 JNZ NEXT ; 判断是否有数据 INC CH ; 数据组数据个数加1 CALLADDNEW MOV DL, 0 MOVAL, 0 ; 清零 NE

23、XT: INC SI DEC CL CMP CL, 0 JNZ FNDNUM ; 依次检查各字符 CMP DL, 1 JNZ TOTAL ; 判断是否有未加入的数据 INC CH CALLADDNEW TOTAL: MOV NUMBUF, CH ; 置数据组数据个数 MOVAL, 1 ; 输入数据无错误 JMP CRTNUM ERRNUM: MOVAL, 0 ; 输入数据有错误 CRTNUM: RET CIN_INT ENDP ADDNEW PROC NEAR ; 增加新数 ; 入口参数:CH(数据组数据个数)、AL(当前数据x) ; 出口参数:无 P

24、USH AX LEA BX, NUMBUF MOVAL, CH CBW ADD BX, AX POPAX MOV [BX], AL RET ADDNEW ENDP MPSORT PROC FAR ; 数据组排序 MOVAL, NUMBUF CMPAL, 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 ; 交

25、换标志置0 LP2: ; 内循环开始 MOVAL, [SI] CMPAL, [SI - 1] JAE NOXCHG XCHG AL, [SI - 1] ; 交换操作 MOV [SI], AL MOV DL, 1 ; 交换标志置1 NOXCHG: DEC SI LOOP LP2 POP SI POP CX CMP DL, 1 JNZ NOSORT ; 判断交换标志 LOOP LP1 NOSORT:RET MPSORTENDP INT_OUT PROC FAR ; 输出数据组 MOVAL, NUMBUF CBW MOV CX, AX MOV BL, 10

26、H LEA SI, NUMBUF + 1 PRINT: MOVAL, [SI] CALL OUTNUM INC SI MOVAH, 2 MOV DL, ' ' INT 21H LOOP PRINT RET INT_OUT ENDP OUTNUM PROC NEAR ; 将十进制数以十六进制输出 ; 入口参数:AL(待转换的数据),BL(转换进制数16) ; 出口参数:无 MOVAH, 0 DIV BL PUSH AX CMPAH, 10 JB PNUM ADD AH, 7 PNUM: ADD AH, 30H MOV DL, AH POPAX PU

27、SH DX CMPAL, 0 JZ OUTN CALL OUTNUM OUTN: POPDX MOVAH, 2 INT 21H RET OUTNUM ENDP TIMCHK PROC FAR ; 设定并显示时间 ;设置显示器方式 MOVAH, 0 MOVAL, 3; MOV BL, 0; INT 10H ; 清屏 MOVAH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 6 ; 行号 INT 10H ; 设置提示光标位置设置 MOVAH, 9 LEA DX, IN_TIM INT 21H ; 时间串提示 MOV

28、AH, 0AH LEA DX, KEYBUF INT 21H ; 输入时间串 MOV BL, 10 MOVAL, KEYBUF + 2 SUB AL, '0' MUL BL ADD AL, KEYBUF + 3 SUB AL, '0' CMPAL, 0 JB INVALID CMPAL, 24 JAE INVALID ; 判断时 有效性 MOV CH, AL MOVAL, KEYBUF + 5 SUB AL, '0' MUL BL ADD AL, KEYBUF + 6 SUB AL, '0' CMPAL, 0 JB INVALID CMPAL, 60

29、 JAE INVALID ; 判断分 有效性 MOV CL, AL MOVAL, KEYBUF + 8 SUB AL, '0' MUL BL ADD AL, KEYBUF + 9 SUB AL, '0' CMPAL, 0 JB INVALID CMPAL, 60 JAE INVALID ; 判断秒 有效性 MOV DH, AL MOV DL, 0 MOVAH, 2DH INT 21H ; 置系统时间 INVALID: CALL TIME RET TIMCHK ENDP TIME PROC ; 显示时间子程序 ;设置显示器方式 MOVAH, 0 MOV

30、AL, 3; MOV BL, 0; INT 10H ; 清屏 MOVAH, 2 MOV BH, 0 ; 页号 MOV DL, 10 ; 列号 MOV DH, 9 ; 行号 INT 10H ; 提示信息光标位置设置 MOVAH, 9 LEA DX, HINTSTR INT 21H ; 输出提示信息 DISP1: MOVAH, 2 MOV BH, 0 ; 页号 MOV DL, 72 ; 列号 MOV DH, 0 ; 行号 INT 10H ; 提示光标位置设置 MOVAH, 2CH ; 取系统时间,CH,CL,DH 分别存放时/分/秒 INT 21H MOVAL

31、 CH ; 显示时 CALL SHOWNUM MOVAH, 2 MOV DL, ':' INT 21H MOVAL, CL ; 显示分 CALL SHOWNUM MOVAH, 2 MOV DL, ':' INT 21H MOVAL, DH ; 显示: 秒 CALL SHOWNUM MOVAH,02H ; 设置光标位置 MOV DX,090AH MOV BH,0 INT 10H MOV BX,0018H RE: MOV CX,0FFFFH ; 延时 REA: LOOP REA DEC BX JNZ RE MOVAH, 0BH ; 或MOVAH, 01H

32、 INT 21H ; INT 16H CMPAL, 0 ; JE DISP1 JZ DISP1 ; 检查键盘状态 RET TIME ENDP SHOWNUM PROC ; 把AL中的数字以十进制输出 ; 入口参数:AL(待显示的数据) ; 出口参数:无 CBW PUSH CX PUSH DX MOV CL, 10 DIV CL ADD AH, '0' MOV BH, AH ADD AL, '0' MOVAH, 2 MOV DL, AL INT 21H MOV DL, BH INT 21H POPDX POP CX RET SHOWNUM ENDP CODE ENDS END START 五、实验结果 运行程序。 主菜单界面,如图5-1。 图5-1 主菜单界面

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服