西电微机原理上机实验报告.doc_第1页
西电微机原理上机实验报告.doc_第2页
西电微机原理上机实验报告.doc_第3页
西电微机原理上机实验报告.doc_第4页
西电微机原理上机实验报告.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

西电微机原理上机实验报告 学号: 姓名:1、 实验目的 1.增强和提高汇编语言程序设计的能力,掌握模块化程序设计的方法.2.熟练掌握DOS常用功能的调用方法.二、实验仪器 586微机 一台3、 实验内容编写如下程序,并在机器上调试成功。程序采用菜单式选择,可以接收用户从键盘输入的五个命令(1-5),各命令功能分别为: (1)按下“1”键,完成字符串小写字母变成大写字母。用户输入一由英文大小写字母或数字0-9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其他字符不变,并在屏幕上显示。用户按任一键,重做,按ESC键,返回主菜单。 (2)按下“2”键,完成找最大值(二选一)。 a.接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来; b.接收用户输入若干个无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。 (3)按下“3”键,完成排序(二选一)。 a.接收用户输入的可显示字符串,以回车结束。程序按ASCII码值大小由大到小排序并输出显示; b.接收用户输入若干个有符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。 (4)按下“4”键,显示时间。首先提示用户对时,即用户输入时、分、秒(以空格或逗号为分隔符,以回车结束),然后,在屏幕上不断显示时间,格式为: XX(时): XX(分): XX(秒)最好定点显示。用户按任一键,重新对时,按ESC键,返回主菜单。 (5)按下“5”键,结束程序运行,返回系统提示符。4、 实验内容对应的源程序及流程源程序如下:STACKSEGMENT STACKDB 256 DUP(?)TOPLABEL WORDSTACKENDSDATASEGMENTTABLEDW L1, L2, L3, L4, L5STRING1DB 1. Change string;, 0DH, 0AH, $STRING2DB 2. Find the maximum ;, 0DH, 0AH, $STRING3DB 3. Rank;, 0DH, 0AH, $STRING4DB 4. Time;, 0DH, 0AH, $STRING5DB 5. Exit., 0DH, 0AH, $STRINGNDB Input the number 1-5 : $STRBUFDB Input the string:, 0DH, 0AH, $MAXCHRDB The maximum is $NUMBERDB Input the numbers: , 0DH, 0AH, $TIMESDB Correct the time (HH:MM:SS) : $STRBUF2DB Press ESC to exit; or press any key to continue$KEYBUFDB 61DB ?DB 61 DUP (?)NUMBUFDB ?DB 20 DUP (?)DATAENDSCODESEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART:MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS, AXLEA SP, TOPMAIN:CALL FAR PTR MENUAGAIN:MOV AH, 2MOV BH, 0MOV DL, 41MOV DH, 10INT 10HMOV AH, 1INT 21HCMP AL, 1JB AGAINCMP AL, 5JA AGAINSUB AL, 1SHL AL, 1CBWLEA BX, TABLEADD BX, AXJMP WORD PTR BXL1:CALL FAR PTR CHGLTRMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP L1L2:CALL FAR PTR MAXLTRMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP L2L3:CALL FAR PTR SORTNUMMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP L3L4:CALL FAR PTR TIMCHKMOV AH, 8INT 21HCMP AL, 1BH JZ MAINJMP L4L5:MOV AH, 4CHINT 21HMENUPROC FAR ;设置显示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 5INT 10HMOV AH, 9LEA DX, STRING1INT 21HMOV AH, 2MOV DL, 5MOV DH, 6INT 10HMOV AH, 9LEA DX, STRING2INT 21HMOV AH, 2MOV DL, 5MOV DH, 7INT 10HMOV AH, 9LEA DX, STRING3INT 21HMOV AH, 2MOV DL, 5MOV DH, 8INT 10HMOV AH, 9LEA DX, STRING4INT 21HMOV AH, 2MOV DL, 5MOV DH, 9INT 10HMOV AH, 9LEA DX, STRING5INT 21HMOV AH, 2MOV DL, 5MOV DH, 10INT 10HMOV AH, 9LEA DX, STRINGNINT 21HRETMENUENDPCHGLTRPROC FARRECHG: MOV AH, 0MOV AL, 3MOV BL, 0INT 10HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 5INT 10HMOV AH, 9LEA DX, STRBUFINT 21H; 输入字符串提示MOV AH, 2MOV DL, 5MOV DH, 6INT 10HMOV AH, 0AHLEA DX, KEYBUFINT 21H; 输入字符串CMP KEYBUF + 1, 0JZ RECHG ; 判断输入字符串是否为空串LEA BX, KEYBUF + 2MOV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR BX, $ ; 在输入字符串尾加结束标志$MOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 7INT 10HLEA BX, KEYBUF + 2LCHG:CMP BYTE PTR BX, 61HJB NOCHGAND BYTE PTR BX, 0DFHNOCHG:INC BXLOOP LCHG; 将字符串中小写字母转换成大写字母MOV AH, 9LEA DX, KEYBUF + 2INT 21H; 输出新字符串MOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 9INT 10HMOV AH, 9LEA DX, STRBUF2INT 21H; 输出提示信息RETCHGLTRENDPMAXLTRPROC FAR ; 在输入字符串中找出最大值REMAX:;设置显示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 5INT 10HMOV AH, 9LEA DX, STRBUFINT 21H; 输入字符串提示MOV AH, 2MOV DL, 5MOV DH, 6INT 10HMOV 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, 2MOV BH, 0MOV DL, 5MOV DH, 8INT 10HMOV 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, 0MOV DL, 5MOV DH, 9INT 10HMOV AH, 9LEA DX, STRBUF2INT 21H; 输出提示信息RETMAXLTRENDPSORTNUMPROC FAR; 对输入数据组排序RESORT:;设置显示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 5INT 10HMOV AH, 9LEA DX, NUMBERINT 21HMOV AH, 2MOV DL, 5MOV DH, 6INT 10HMOV AH, 0AHLEA DX, KEYBUFINT 21H; 输入数据组字符串CALL CIN_INT; 字符串转换成数据串CMP AL, 0JZ RESORT; 判断数据串是否有错CMP NUMBUF, 0JZ RESORT; 判断数据串是否为空MOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 8INT 10HCALL FAR PTR MPSORT ; 数据组排序CALL FAR PTR INT_OUT ; 数据组的输出MOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 9INT 10HMOV AH, 9LEA DX, STRBUF2INT 21H ; 输出提示信息RETSORTNUMENDPCIN_INTPROC NEAR; 读入整型数MOV CL, KEYBUF + 1LEA SI, KEYBUF + 2MOV CH, 0; 数据组数据个数置0MOV DH, 10MOV AL, 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,即有数据MUL DH XOR BH, BHMOV BL, SIADD AX, BXSUB AX, 0; 计算出当前数据xCMP AH, 0JA ERRNUM; 判断x是否越界JMP NEXTADDNUM:CMP DL, 1JNZ NEXT; 判断是否有数据INC CH; 数据组数据个数加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 ; 增加新数PUSH 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 NOXCHGXCHG 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 ENDPOUTNUMPROC NEAR ;将十进制数以十六进制输出 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 10HMOV AH, 2MOV BH, 0MOV DL, 5MOV DH, 6INT 10HMOV AH, 9LEA DX, TIMESINT 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, 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;

温馨提示

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

评论

0/150

提交评论