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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(软件流程与软件程序的例子课设参考资料之一.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

软件流程与软件程序的例子课设参考资料之一.docx

1、软件流程与软件程序的例子课设参考资料之一微机原理与接口技术程序与流程编写程序实现下列5项功能,通过从键盘输入15进行菜单式选择:(1)按数字键“1”,完成将字符串中的小写字母变换成大写字母。用户输入由英文大小写字母或数字09组成的字符串(以回车结束),变换后按下列格式在屏幕上显示: 例如:abcdgyt0092 ABCDGYT0092 按任一键重做;按Esc键返回主菜单。 (2)按数字键“2”,完成在字符串中找最大值。用户输入由英文大小写字母或数字 09组成的字符串(以回车结束),找出最大值后按下列格式在屏幕上显示: The maximum is 按任一键重做;按Esc键返回主菜单。(3)按数

2、字键“3”,完成输入数据组的排序。用户输入一组十进制数值(小于255), 然后变换成十六进制数,并按递增方式进行排序,按下列格式在屏幕上显示: 按任一键重做;按Esc键返回主菜单。(4)按数字键“4”,完成时间的显示。首先提示用户对时,即改变系统的定时器 HH:MM:SS(以冒号间隔,回车结束),然后在屏幕的右上角实时显示出时 间:HH:MM:SS。 按任一键重新对时;按Esc键返回主菜单。(5)按数字键“5”,结束程序的运行,返回操作系统。解答过程:主程序的编程思路:此程序共5个功能,可采用跳转表法来实现多路分支结构程序设计。现将这5个程序段,各程序段的首地址分别标号为G1,G2,G3,G4

3、,G5。将5个程序段的入口地址做成表TABLE放入数据段,程序根据给定的参数计算出欲转入的程序段的首地址在TABLE中的位置后,取出该地址,跳转至该程序段。首先,通过调用子程序MENU,设置显示器,并输出提示文档。接着,读取1-5之间的ASCII表示数。然后,通过跳转表TABLE实现由输入参数转入相应的程序段。由于表中按“字”存放数据,则每个数据的位移量是:0、2、4、6、8。对于输入参数N,计算位移量的公式是N=(N-1)*2。当输入1时,跳转到标号G1。调用子程序CHGLTR,完成将输入字符串中的小写字母变换成大写字母。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G1

4、;当输入2时,跳转到标号G2。调用子程序MAXLTR,完成在输入字符串中找最大值。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G2;当输入3时,跳转到标号G3。调用子程序SORTNUM,完成输入数据组的排序。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G3。当输入4时,跳转到标号G4。调用子程序TIMCHK,完成时间的显示。用户按键,若为ESC,则转到主程序段首调用MENU,否则,转到标号G4。当输入5时,跳转到标号G5。结束程序的运行,返回操作系统。其流程框图见图3-1。子程序MENU的编程思路:注意:子程序不要用START开头!设置显示器显示方式

5、为80*25彩色文本方式,清屏。逐行设置光标位置,使提示文档左对齐整体居中。输出1-5的提示文档,再输出输入N的提示。其流程框图见图3-2。子程序CHGLTR的编程思路:设置显示器显示方式为80*25彩色文本方式,清屏。设置光标位置,使提示文档左对齐整体居中。输出输入字符串提示文档,读取输入字符串并将其放入KEYBUF。在输入字符串尾加结束标志$,输出输入字符串。从前往后,依次取字符串中的每个字符,若其为小写字母,则将其ASCII码减去20H。输出变换后的字符串。最后输出说明文档。其流程框图见图3-3。子程序MAXLTR的编程思路:设置显示器显示方式为80*25彩色文本方式,清屏。设置光标位置

6、,使提示文档左对齐整体居中。输出输入字符串提示文档,读取输入字符串并将其放入KEYBUF。在输入字符串尾加结束标志$,输出输入字符串。预设字符串中最大值为0。从前往后,依次取字符串中的每个字符,若其大于当前最大值,则进行替换,即可得到字符串中的最大值,并输出。最后输出说明文档。其流程框图见图3-4。子程序SORTNUM的编程思路:设置显示器显示方式为80*25彩色文本方式,清屏。设置光标位置,使提示文档左对齐整体居中。输出输入数据组提示文档,读取输入数据组字符串并将其放入KEYBUF。调用子程序CIN_INT,将字符串转换成数据串。判断数据串是否有错误或者为空,若是,则重新输入数据组。调用子程

7、序MPSORT,采用冒泡法对数据串进行排序。再调用子程序INT_OUT,输出排序后的数据组。最后输出说明文档。其流程框图见图3-5。子程序CIN_INT的编程思路:入口参数为:无;出口参数为:AL(有无错误标志,0为有,1为无)。从前往后,依次取字符串中的每个字符进行判断。CH表示数据组数据个数,AL表示当前数据x,DL作为有无数据标志。若当前字符为空格,则转到ADDNUM,判断DL是否为1,若为1,则CH增1,调用子程序ADDNEW,增加新数x,然后DL、AL清零;否则判断当前字符c是否在0-9之间,若不是,则判错,将AL置0,子程序CIN_INT返回;否则,DL置1,x=x*10+c-0,

8、判断x是否超过255,若是,则判错,将AL置0,子程序CIN_INT返回;否则,对下一个字符进行操作。字符串判断结束后,若DL为1,则有新数x未加至数据组,调用子程序ADDNEW,增加新数x。将数据组个数CH放入NUMBUF,将AL置1。其流程框图见图3-6。子程序ADDNEW的编程思路:入口参数为:CH(数据组数据个数)、AL(当前数据x);出口参数为:无。取出数据组NUMBUF的首地址,加上数据组数据个数,即为当前数据x的地址,将x放入该地址。其流程框图见图3-7。子程序MPSORT的编程思路:对N个数据进行从小到大排序,采用“冒泡法”:从前往后,每两个数据进行比较,当前者大于后者时,交换

9、两者的次序;否则不变。经过N-1次比较,可以将最大值交换到第N个单元。接着对前N-1个数据,重复上述过程,使次大值交换到第N-1个单元;依此类推,若某次比较过程,无任何交换,则终止其后的所有比较过程。最多进行N-1次比较过程,可以完成数据的排序操作。其流程图见图3-8。子程序IN_OUT的编程思路:从数据组中依次取出每个数据,调用OUTNUM,将十进制数据转成十六进制进行输出,数据之间输出一个空格作为分隔符。其流程图见图3-9。子程序OUTNUM的编程思路:入口参数:AL(待转换的数据),BL(转换进制数);出口参数:无。待转换数据x除以转换进制数,商为新的x,余数y为转换后的低位。保存y,调

10、用子程序OUTNUM本身,对新的x进行进制转换并输入。取出y,对其进行输入,若低于10,则直接输出,否则转换成字母输出。其流程图见图3-10。子程序TIMCHK的编程思路:设置显示器显示方式为80*25彩色文本方式,清屏。设置光标位置,输出设置时间提示文档。读取输入时间字符串并将其放入KEYBUF。分别判断时、分、秒是否在有效数字范围,若有效,则设置新的系统时间。调用子程序TIME,在屏幕的右上角实时显示时间。其流程框图见图3-11。子程序TIME的编程思路:设置显示器显示方式为80*25彩色文本方式,清屏。设置光标位置,输出说明文档。实时显示时间:设置光标至屏幕右上角;读取系统时间,调用子程

11、序SHOWNUM分别对时、分、秒进行显示,并用:作分隔符;设置光标等待位置,并进行延时;检查键盘状态,若无键盘输入,则重复上述步骤显示时间,否则子程序TIME返回。其流程框图见图3-12。子程序SHOWNUM的编程思路:入口参数:AL(待显示的数据);出口参数:无。待显示数据x除以10,商为y,余数为z。将数字y、z分别转换成字符数字,然后输出。其流程框图见图3-13。四、程序代码STACK SEGMENT STACK DB 256 DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTTABLE DW G1, G2, G3, G4, G5STRING1 DB 1

12、. 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, $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

13、string (including letters & numbers, less than 60 letters) :, 0DH, 0AH, $PRESTR DB Original string : $NEWSTR DB New string : $OUT_STR DB 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_

14、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 (?)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 TOPMA

15、IN: 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 AGAIN 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

16、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 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;

17、 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 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, STR

18、ING3 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 ; 行号 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 ENDPC

19、HGLTR 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 ; 行号 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, KEYBU

20、F 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, $ ; 在输入字符串尾加结束标志$ 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, K

21、EYBUF + 2 INT 21H ; 输出源字符串 LEA BX, KEYBUF + 2LCHG: CMP BYTE PTR BX, 61H JB NOCHG AND BYTE PTR BX, 0DFHNOCHG: INC BX LOOP LCHG ; 将字符串中小写字母转换成大写字母 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

22、21H ; 输出新字符串 MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 9 ; 行号 INT 10H ; 提示信息光标位置设置 MOV AH, 9 LEA DX, HINTSTR INT 21H ; 输出提示信息 RETCHGLTR ENDPMAXLTR 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 ;

23、输入提示光标位置设置 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 REMAX ; 判断输入字符串是否为空串 LEA BX, KEYBUF + 2 MOV AL, KEYBUF + 1 CBW MOV CX, AX ADD BX, AX MOV BYTE PTR BX, $ ; 在输入字符串位加结束标志$

24、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, KEYBUF + 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,

25、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 BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 9 ; 行号 INT 10H ; 提示信息光标位置设置 MOV AH, 9 LEA DX, HINTSTR INT 21H ; 输出提示信息 RETMAXLTR ENDPSORTNUM PROC FAR ; 对输入数据组排序RESORT: ;

26、设置显示器方式 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_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,

27、 0 JZ RESORT ; 判断数据串是否有错 CMP NUMBUF, 0 JZ RESORT ; 判断数据串是否为空 MOV AH, 2 MOV BH, 0 ; 页号 MOV DL, 5 ; 列号 MOV DH, 7 ; 行号 INT 10H ; 输出提示光标位置设置 MOV AH, 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 ; 输出提示信息 RETSORTNUM ENDPCIN_INT PROC NEAR ; 读入整型数; 入口参数:无; 出口参数为:AL(有无错误标志,0为有,1为无) MOV CL,

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

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