微机原理上机答案(西电)_第1页
微机原理上机答案(西电)_第2页
微机原理上机答案(西电)_第3页
微机原理上机答案(西电)_第4页
微机原理上机答案(西电)_第5页
免费预览已结束,剩余25页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理上机答案(西电) 上机作业(三) 编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用户从键盘输入的 五个命令( 1-5 ),各命令功能分别为:( 1)按下 “1”键,完成字符串小写字母变成大写字母。 用户输入一由英文大小写字母或数字0-9 组成的字符串(以回车结束) ,程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其他字符不变,并在屏幕上显示。用 户按任一键,重做,按 ESC 键,返回主菜单。( 2)按下 “2”键,完成找最大值(二选一) 。a. 接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来;b. 接收用户输入若干个无符

2、号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按 ESC 键,返回主菜单。( 3)按下 “3”键,完成排序(二选一) 。ASCII 码值大小由大到小a. 接收用户输入的可显示字符串,以回车结束。程序按 排序并输出显示;b. 接收用户输入若干个有符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按 ESC 键,返回主菜单。( 4)按下 “4”键,显示时间。 首先提示用户对时,即用户输入时、分、秒(以空格或逗号为分隔符,以回车结 束),然后,在屏幕上不断显示时间,格式为:XX (时):XX (分):XX

3、(秒) 最好定点显示。用户按任一键,重新对时,按 ESC 键,返回主菜单。( 5)按下 “5”键,结束程序运行,返回系统提示符。程序代码STACKTOPSTACKSEGMENT STACKDB 256 DUP(?) LABEL WORD ENDSSEGMENTDW G1, G2, G3, G4, G5DB 1. Change small letters into capital letters of string;, 0DH, 0AH, $DB 2. Find the maximum of string;, 0DH, 0AH, $DB 3. Sort for datas;, 0DH, 0AH,

4、 $DB 4. Show Time;, 0DH, 0AH, $DB 5. Exit., 0DH, 0AH, $DB Input the number you select (1-5) : $DATATABLESTRING1STRING2STRING3STRING4STRING5 STRINGNDB Original string : $ DB New string : $DB The string is $DB The maximum is $IN_STR DB Input the string (including letters & numbers, less than 60 letter

5、s) :, 0DH, 0AH, $ PRESTR NEWSTROUT_STR MAXCHRIN_NUMOUT_NUMIN_TIMHINTSTRKEYBUFDB Input the numbers (0 - 255, no more than 20 numbers) : , 0DH, 0AH, $DB Sorted numbers : , 0DH, 0AH, $DB Correct the time (HH:MM:SS) : $DB Press ESC, go back to the menu; or press any key to play again!$DB 61DB ?NUMBUFDB

6、61 DUP (?)DB ?DATADB 20 DUP (?)ENDSCODESEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART:MAIN:AGAIN:; 设置显示器MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS, AXMOV SP, OFFSET TOP CALL FAR PTR MENUMOV AH, 2; 页号; 列号; 行号; 光标位置设置MOV BH, 0MOV DL, 41MOV DH, 10INT 10HMOV AH, 1INT 21HCMP AL, 1JB AGAINCMP AL, 5JA AGAIN;

7、 N-1; (N-1)*2 ; AL-AXSUB AL, 1SHL AL, 1CBWLEA BX, TABLEADD BX, AXJMP WORD PTR BXG1:CALL FAR PTR CHGLTRMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G1G2:G3:CALL FAR PTR MAXLTRMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G2G4:CALL FAR PTR SORTNUMMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G3CALL FAR PTR TIMCHKMOV AH, 8IN

8、T 21HCMP AL, 1BHJZ MAINJMP G4G5:MOV AH, 4CHINT 21HMENUPROC FAR; 显示主界面;设置显示器方式MOV AH, 0MOV AL, 3;MOV BL, 0; 清屏INT 10HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 5INT 10H; 页号; 列号; 行号; 光标位置设置MOV AH, 9LEA DX, STRING1INT 21HMOV AH, 2MOV DL, 5MOV DH, 6INT 10H; 列号; 行号; 光标位置设置MOV AH, 9CHGLTRRECHG:LEA DX, STRING2INT

9、21HMOV AH, 2MOV DL, 5; 列号MOV DH, 7; 行号INT 10H; 光标位置设置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

10、 AH, 9LEA DX, STRINGNINT 21HRETENDPMENUPROC FAR; 将输入字符串中小写字母便换成大写字母;设置显示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10H; 清屏MOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 5INT 10H; 页号; 列号; 行号; 输入提示光标位置设置MOV AH, 9 LEA DX, IN_STRINT 21H; 输入字符串提示MOV AH, 2MOV DL, 5MOV DH, 6INT 10H; 列号; 行号; 输入字符串光标位置设置MOV AH, 0AHLEA DX, KEYBUF

11、; 输入字符串INT 21HCMP KEYBUF + 1, 0; 判断输入字符串是否为空串JZ RECHGLEA BX, KEYBUF + 2MOV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR BX, $MOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 7INT 10H; 在输入字符串尾加结束标志 $; 页号; 列号; 行号; 源字符串提示光标位置设置MOV AH, 9LEA DX, PRESTR; 输出源字符串提示INT 21HMOV AH, 9LEA DX, KEYBUF + 2; 输出源字符串INT 21HLEA

12、 BX, KEYBUF + 2LCHG:CMP BYTE PTR BX, 61HJB NOCHGAND BYTE PTR BX, 0DFH NOCHG:INC BXLOOP LCHG; 将字符串中小写字母转换成大写字母MOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 8INT 10H; 页号; 列号; 行号; 新字符串提示光标位置设置MOV AH, 9LEA DX, NEWSTRINT 21H; 输出新字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H; 输出新字符串MOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 9INT

13、10H; 页号; 列号; 行号; 提示信息光标位置设置MOV AH, 9LEA DX, HINTSTR; 输出提示信息INT 21HRETCHGLTRENDPMAXLTRPROC FAR; 在输入字符串中找出最大值REMAX:;设置显示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10H; 清屏MOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 5INT 10HMOV AH, 9LEA DX, IN_STRINT 21H; 输入字符串提示; 页号; 列号; 行号; 输入提示光标位置设置MOV AH, 2MOV DL, 5MOV DH, 6INT 10HM

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

15、MOV AH, 9LEA DX, KEYBUF + 2; 输出字符串INT 21HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 8INT 10H; 输出字符串中最大值提示; 页号; 列号; 行号; 新字符串提示光标位置设置MOV AH, 9LEA DX, MAXCHRINT 21HMOV DL, 0LEA BX, KEYBUF + 2LCMP:CMP BX, DLJB NOLCHGMOV DL, BXNOLCHG:INC BXLOOP LCMP; 找出字符串中最大字符,放入 DLMOV AH, 2INT 21H; 输出字符串中最大字符MOV AH, 2MOV BH, 0

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

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

18、DH, 8INT 10HCALL FAR PTR MPSORTCALL FAR PTR INT_OUT; 页号; 列号; 行号; 输出数据组光标位置设置; 数据组排序; 数据组的输出; 页号; 列号; 行号MOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 9INT 10H; 提示信息光标位置设置MOV AH, 9; 输出提示信息LEA DX, HINTSTRINT 21HRETSORTNUM ENDPCIN_INT PROC NEAR; 入口参数:无; 出口参数为: AL (有无错误标志,MOV CL, KEYBUF + 1LEA SI, KEYBUF + 2MOV CH,

19、 0MOV DH, 10MOV AL, 0MOV DL, 0FNDNUM:; 读入整型数0 为有, 1 为无); 数据组数据个数置 0; 当前数据 x=0; 有无数据标志置 0,即无数据CMP BYTE PTR SI, ; 判断当前字符是否为空格JZ ADDNUMCMP BYTE PTR SI, 0JB ERRNUMCMP BYTE PTR SI, 9JA ERRNUMMOV DL, 1MUL DH; 判断当前字符是否在 0-9 之间; 有无数据标志置 1,即有数据XOR BH, BH MOV BL, SI ADD AX, BX; 计算出当前数据 xSUB AX, 0; 判断 x 是否越界CM

20、P AH, 0 JA ERRNUMJMP NEXTADDNUM:CMP DL, 1 JNZ NEXTINC CH; 判断是否有数据; 数据组数据个数加 1CALL ADDNEW; 清零MOV DL, 0MOV AL, 0NEXT:INC SIDEC CLCMP CL, 0 JNZ FNDNUM; 依次检查各字符CMP DL, 1 JNZ TOTAL; 判断是否有未加入的数据INC CHCALL ADDNEWTOTAL:MOV NUMBUF, CHMOV AL, 1 JMP CRTNUM; 置数据组数据个数; 输入数据无错误ERRNUM:MOV AL, 0CRTNUM:; 输入数据有错误RETC

21、IN_INT ENDPADDNEW; 入口参数: ; 出口参数:PROC NEARCH (数据组数据个数)无; 增加新数、 AL (当前数据 x)PUSH AXLEA BX, NUMBUF MOV AL, CHCBWADD BX, AXPOP AXMOV BX, ALRETADDNEWENDPMPSORT PROC FAR; 数据组排序LP1:LP2:MOV AL, NUMBUFCMP AL, 1JBE NOSORTCBWMOV CX, AX LEA SI, NUMBUF ADD SI, CXDEC CXPUSH CXPUSH SIMOV DL, 0MOV AL, SICMP AL, SI -

22、 1JAE NOXCHGXCHG AL, SI - 1MOV SI, AL; 若只有一个元素,停止排序; SI 指向数据组首地址 ; SI 指向数据组末地址; 外循环次数; 外循环开始; 交换标志置 0; 内循环开始; 交换操作MOV DL, 1; 交换标志置 1NOXCHG:DEC SILOOP LP2POP SIPOP CXCMP DL, 1JNZ NOSORT; 判断交换标志LOOP LP1NOSORT:RETMPSORT ENDPINT_OUTPROC FAR; 输出数据组MOV AL, NUMBUFCBWMOV CX, AXMOV BL, 10HLEA SI, NUMBUF + 1P

23、RINT:MOV AL, SICALL OUTNUMINC SIMOV AH, 2MOV DL, INT 21HLOOP PRINTRETINT_OUT ENDPOUTNUMPROC NEAR; 将十进制数以十六进制输出; 入口参数: AL (待转换的数据) , BL (转换进制数 16); 出口参数:无MOV AH, 0DIV BLPUSH AXCMP AH, 10JB PNUMADD AH, 7PNUM:ADD AH, 30HMOV DL, AHPOP AXPUSH DXCMP AL, 0JZ OUTNCALL OUTNUMJAE INV ALID; 判断 分 有效性OUTN:POP DX

24、MOV AH, 2INT 21HRETOUTNUM ENDP; 设定并显示时间TIMCHK PROC FAR ;设置显示器方式 MOV AH, 0MOV AL, 3;MOV BL, 0; 清屏INT 10HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 6INT 10HMOV AH, 9LEA DX, IN_TIM; 页号; 列号; 行号; 设置提示光标位置设置INT 21H; 时间串提示MOV AH, 0AHLEA DX, KEYBUF; 输入时间串INT 21HMOV BL, 10MOV AL, KEYBUF + 2SUB AL, 0MUL BLADD AL, KEY

25、BUF + 3SUB AL, 0CMP AL, 0JB INV ALIDCMP AL, 24 JAE INV ALID; 判断 时 有效性MOV CH, ALMOV AL, KEYBUF + 5SUB AL, 0MUL BLADD AL, KEYBUF + 6SUB AL, 0CMP AL, 0JB INV ALIDCMP AL, 60MOV CL, ALMOV AL, KEYBUF + 8SUB AL, 0MUL BLADD AL, KEYBUF + 9SUB AL, 0CMP AL, 0JB INV ALIDCMP AL, 60 JAE INV ALID; 判断 秒 有效性MOV DH,

26、ALMOV DL, 0MOV AH, 2DH; 置系统时间INT 21HINV ALID:CALL TIMERETTIMCHKENDPTIMEPROC ;设置显示器方式 MOV AH, 0 MOV AL, 3;MOV BL, 0;INT 10H; 显示时间子程序; 清屏MOV AH, 2MOV BH, 0MOV DL, 10MOV DH, 9INT 10H; 页号; 列号; 行号; 提示信息光标位置设置DISP1:MOV AH, 9LEA DX, HINTSTRINT 21H; 输出提示信息MOV AH, 2MOV BH, 0MOV DL, 72MOV DH, 0INT 10HMOV AH,

27、2CHINT 21H; 页号; 列号; 行号; 提示光标位置设置; 取系统时间 ,CH,CL,DH 分别存放时 /分 /秒MOV AL, CHCALL SHOWNUM; 显示 时MOV AH, 2MOV DL, :INT 21HMOV AL, CL; 显示 分CALL SHOWNUMMOV AH, 2MOV DL, :INT 21HMOV AL, DH; 显示 : 秒CALL SHOWNUMMOV AH,02H; 设置光标位置RE:MOV DX,090AHMOV BH,0INT 10HMOV BX,0018HMOV CX,0FFFFH; 延时REA:LOOP READEC BXJNZ REMO

28、V AH, 0BH; 或MOV AH, 01HINT 21H; INT 16HCMP AL, 0; JE DISP1JZ DISP1; 检查键盘状态TIMERETENDPSHOWNUM PROC; 把 AL 中的数字以十进; 入口参数: AL (待显示的数据); 出口参数:无CBWPUSH CXPUSH DXMOV CL, 10DIV CLADD AH, 0 MOV BH, AHADD AL, 0MOV AH, 2MOV DL, ALINT 21HMOV DL, BHINT 21HPOP DXPOP CXRETSHOWNUM END PCODE ENDSEND START五、实验结果运行程序。

29、主菜单界面,如图5-1 。G F:MASM4_39.EXE-ID x| - n 123451Chinngp1 I Imtn n Api t aI Iptt:* ve nf n ti*! n(j ;Find the maximum of string;Sori: f DK fldtdS ;Shou Time;Exit.put the nvnbcT you select : _图5-1主菜单界面在主菜单界面(图5-1)输入1,进入功能1界面,实现将字符串中的小写字母变换成 大写字母。功能1界面,如图5-2。输入字符串,女口: HuangCui02061488,输出结果如图5-3。 按ESC键,返回主菜单界面(图 5-1);按其他任意键,返回功能1界面(图5-2)。乔 r:;MA5M4_3gLff-igj jdlnpij.t ths string including lattaro 说 nunhsrs. loss tliJin tfl letters图5-2功能1界面niu-t the* E-tfeinu HuanmCu 地!细 IbvbIni T Cr Iphii = HlmihuOi4flftNeu atriJiq: HUHHGGIIlKHblUBESC yu Ihiu-k Lu Llw pivjiu; op出n乎g

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论