




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学汇编程序语言设计课程设计说明书学 号: 0121010340422课 程 设 计题 目打印ASCII码表及九九乘法表学 院计算机科学与技术专 业计算机科学与技术班 级计算机1004班姓 名李骄指导教师许毅2012年6月28日课程设计任务书学生姓名: 李骄 专业班级: 计算机1004班 指导教师: 许毅 工作单位:计算机科学与技术学院 题目: 打印ASCII码表及九九乘法表初始条件:理论:完成了汇编语言程序设计课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。实践:完成了汇编语言程序设计的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。具体的设计任务及要求:1) 将字母和数字的ASCII表在屏幕上打印出来;2) 将九九乘法表屏幕上打印出来;3) 程序采用子程序结构,结构清晰;4) 友好清晰的用户界面,能识别输入错误并控制错误的修改。在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。阅读资料:1)IBMPC汇编语言程序设计实验教程实验2.42)IBMPC汇编语言程序设计(第2版)例6.11时间安排:设计安排一周:周1、周2:完成系统分析及设计。周3、周4:完成程序调试,和验收。周5:撰写课程设计报告。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日打印ASCII码表及九九乘法表1 设计内容及要求1.1 设计内容 (1) 程序用汇编语言完成打印ASCII码表及九九乘法表的功能。 (2) 有相应的提示性内容,分别对ASCII码表及九九乘法表的操作和显示,能设计出清晰友好的菜单式界面。 1.2 设计要求(1)程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。 (2)正确有效的测试数据,能完成测试程序的各项功能,能最后正常返回到DOS,方便使用,可读性好。2 设计中使用的关键技术和方法 2.1 DOS系统功能调用(INT 21H)程序中使用了DOS系统功能调用的一种功能,如表1:表1AH功能调用参数返回参数01键盘输入并回显AL=输入字符02显示输出DL=输出字符09显示字符串DS:DX=串首地址,字符串以$结尾 2.2 其它方法与技术本次课程设计设计中的一些主要方法与技术:(1) 子程序设计的实现与调用;(2) 处理界面菜单时的,换行与空格辅助设计的实现;(3) 多重嵌套菜单的设计与实现。3设计方案说明 3.1 模块层次图 系统各级层次说明如图1所示:主菜单 9*9乘法表的输出形式显示菜单退出程序, 返回DOS界面输入有错误 提示ASCII码的输出形式显示 菜单返回上一级返回上一级右三角输出左三角输出矩阵式输出目录式输出表格式输出图1 系统各级层次说明3.2 各模块说明3.2.1主菜单功能为在屏幕上显示用户可以选择的菜单界面,从键盘接收字符。调用参数AH=01功能类型。返回参数AL=输入字符的ASCII码。并根据得到的字符,调用不同的子程序,继续执行,程序的其他模块。3.2.2 ASCII码的输出形式显示菜单功能在屏幕已经显示出菜单时,从键盘接收字符。调用参数AH=01功能类型,返回参数AL=输入的字符的ASCII码,并根据得到的字符,分别调用不同的子程序,显示ASCII的不同形式的输出。3.2.3 返回上一级功能为返回到上一级菜单显示。从键盘接收字符,调用参数AH=01功能类型,返回参数AL=输入的字符的ASCII码,并根据得到的字符,是否继续或返回上一级。3.2.4 返回DOS窗口功能为退出程序,返回DOS。调用参数AH=4CH功能类型,结束程序,返回DOS。3.2.4 输出 功能为输出字符显示到窗口。调用参数AH=02功能类型,DL=要显示的字符,结果将该字符输出到终端显示出来。3.3 程序流程图程序运行操作流程如图所示:开始 显示主菜单 输入choice输入choice字符为1字符为0显示菜单 N字符为1显示ASCII菜单字符为2输入choice N字符为2字符为1字符为 N字符为2输入有误目录显示ASCII用表显示ASCII矩阵显示左三角显示右三角显示图 程序运行操作流程3.4主要数据结构的定义和说明3.4.1 主菜单字符串:LIST1 DB 5 DUP(0DH,0AH) DB 0DH,0AH,23 DUP(20H),ASCII Table & 9*9 MutTable,0DH,0AH DB 20 DUP(20H),-,0DH,0AH DB 20 DUP(20H),0. print 9*9 MutTable,0DH,0AH DB 20 DUP(20H),1. Aearch in ASCII,0DH,0AH DB 20 DUP(20H),2. end,0DH,0AH DB 20 DUP(20H),others Print ,0DH,0AH,20 DUP(20H),- DB 12 DUP(0DH,0AH),Your choice:,$3.4.2 字符串3.4. 二级菜单字符串:ascll DB 20 DUP(0DH,0AH),23 DUP(20H),ASCII Table ,0DH,0AH DB 20 DUP(20H),-,0DH,0AH db 20 DUP(20H),1.show ASCLL with a table,0DH,0AH db 20 DUP(20H),2.show ASCLL with columns,0DH,0AH db 20 DUP(20H),others ,0DH,0AH db 20 DUP(20H),- db 12 DUP(0DH,0AH),your choice:,$ nine_nine DB 5 DUP(0DH,0AH),30 DUP(20H),9*9 MutTable ,0DH,0AH DB 20 DUP(20H),-,0DH,0AH db 20 DUP(20H),1.show 9*9 MutTable with block tpye,0DH,0AH db 20 DUP(20H),2.show 9*9 MutTable with lift triangle,0DH,0AH db 20 DUP(20H),3.show 9*9 MutTable with right triangle,0DH,0AH db 20 DUP(20H),others ,0DH,0AH db 20 DUP(20H),- db 12 DUP(0DH,0AH),your choice:,$ 3.4. 判断语句字符串:ContinueList DB 0DH,0AH,Do you want to continue running programme?(Y/N),$ ContinueList2 DB 2 DUP(0DH,0AH),Do you want to continue showingASCII(20HFFH)?(Y/N),$3.5 程序界面描述(1)程序主菜单界面为一个2580的窗口,详细如图:图3 主菜单界面截图 (2)程序二级菜单ASCII输出选择窗口,如图4:图4 ASCII输出选择界面截图(3)程序二级菜单9*9乘法表输出选择窗口,如图5:图5 9*9乘法表输出界面截图4测试及评估4.1 测试结果主要流程:主界面-9*9乘法表界面-主界面-ASCII界面-推出程序内部流程:(1)9*9乘法表的输出:矩阵形式-左三角形式-右三角形式-主界面 (2)ASCII的输出:表格形式-目录形式-主界面“打印ASCII码表及九九乘法表”运行各步操作与结果截图如下:图6矩阵显示9*9乘法表图7左三角显示9*9乘法表图8右三角显示9*9乘法表图9表格显示ASCII表图10目录显示ASCII表4.2 评估程序基本达到了本次课程设计的要求,自己还扩充了更的细节内容,实验做的不错。5 设计心得本次课程设计过程中遇到的问题主要有:界面设计时候,多重嵌套菜单难以设计,并且设计区域边界和区域内布局比较难确定;运用中断时候容易搞错调用参数;编码过长,所以程序之间的调用比较复杂,涉及漂亮界面的要求,数据段定义的数据庞大且复杂,内存占用比较多。通过此次实验,我对汇编语言程序设计有了进一步的了解。对于DOS中断有了很深刻的理解,我有了更广泛的认识,对于其功能调用有了一定的掌握。并且很想继续学习其强大的BIOS中断的相关知识。这次实验最主要的是让我,非常熟悉了分支程序、子程序设计和一定的宏汇编的相关知识,这也是最基础的内容,对寄存器之间的换用、寄存等也不再含糊,能够轻松运用。本次课程设计的程序只是在DOS窗口界面运行操作,以后此程序也可以用磁盘文件输入输出的方式实现。同时字符样式和颜色也可以扩展。在后继的学习中,我准备不断加深这方面的知识。附件: F1参考资料沈美明,温冬蝉.IBM-PC汇编语言程序设计(第2版).北京:清华大学出版社,2001沈美明、温冬蝉、张赤红.IBM-PC汇编语言程序设计实验教程(第2版).北京:清华大学出版社,1996 F2源程序DATA SEGMENT LIST1 DB 5 DUP(0DH,0AH) DB 0DH,0AH,23 DUP(20H),ASCII Table & 9*9 MutTable,0DH,0AH DB 20 DUP(20H),-,0DH,0AH DB 20 DUP(20H),0. print 9*9 MutTable,0DH,0AH DB 20 DUP(20H),1. Aearch in ASCII,0DH,0AH DB 20 DUP(20H),2. end,0DH,0AH DB 20 DUP(20H),others Print ,0DH,0AH,20 DUP(20H),- DB 12 DUP(0DH,0AH),Your choice:,$ ContinueList DB 0DH,0AH,Do you want to continue running programme?(Y/N),$ ContinueList2 DB 2 DUP(0DH,0AH),Do you want to continue showing ASCII(20HFFH)?(Y/N),$ LIST2 DB 0DH,0AH,20 DUP(20H),9*9 MutTable: ,3 DUP(0DH,0AH),$ LIST3 DB 0DH,0AH,20 DUP(20H),ASCII: ,0DH,0AH,$ ascll DB 20 DUP(0DH,0AH),23 DUP(20H),ASCII Table ,0DH,0AH DB 20 DUP(20H),-,0DH,0AH DB 20 DUP(20H),1.show ASCLL with a table,0DH,0AH DB 20 DUP(20H),2.show ASCLL with columns,0DH,0AH DB 20 DUP(20H),others ,0DH,0AH DB 20 DUP(20H),- DB 12 DUP(0DH,0AH),your choice:,$ nine_nine DB 5 DUP(0DH,0AH),30 DUP(20H),9*9 MutTable ,0DH,0AH DB 20 DUP(20H),-,0DH,0AH DB 20 DUP(20H),1.show 9*9 MutTable with block tpye,0DH,0AH DB 20 DUP(20H),2.show 9*9 MutTable with lift triangle,0DH,0AH DB 20 DUP(20H),3.show 9*9 MutTable with right triangle,0DH,0AH DB 20 DUP(20H),others ,0DH,0AH DB 20 DUP(20H),- DB 12 DUP(0DH,0AH),your choice:,$ STARS DB 0DH,0AH,*,$ 17nextline DB 0DH,0AH,$ lines db 5 DUP(0DH,0AH),$ BLANK DB 3 dup(20H),$ mark DB 0 mark2 DB 14 table db 10 dup(?) ERR DB 2 DUP(0DH,0AH),error! $ MG DB 0,0,H ,$ CR DB 0DH,0AH,$ TAB DB 0123456789ABCDEF over DB 0DH,0AH,ASCII is shown over!$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA;,SS:STACKSmain proc farstart: mov ax,data mov ds,ax cmp mark,1 jnz ok lea dx,ContinueList mov ah,9 int 21h mov ah,01 int 21h cmp al,y jz ok jmp exitok: mov mark,1 lea dx,LIST1 mov ah,9 int 21h mov ah,01 int 21h cmp al,0 jz loop1 ;选择0的时候转入loop1 cmp al,1 jz loop2 ;选择1的时候转入loop2 cmp al,2 jz exit ;选择2的时候转入 JMP loop3 ;输入不匹配转入loop3loop1: ;转到子程序nine,显示九九乘法表 CALL MutTable loop2: ;转到子程序asc2,实现字符转换成对应的ASCII码 LEA DX,ascll MOV AH,9 INT 21h mov ah,01 int 21h cmp al,1 jnz T call asc22T: cmp al,2 jnz loop3 call printstars LEA DX,LIST3 MOV AH,9 INT 21h CALL asc2loop3: ;显示出错信息 LEA DX,ERR MOV AH,9 INT 21h mov mark,0 JMP start retexit: mov ah,4ch int 21hmain ENDP;子程序名:asc2;功能:显示ASC2码符号表asc2 proc near push ax push bx push cx push dx MOV CX,14 MOV DL,20H MOV SI,OFFSET TAB MOV DI,OFFSET MG AG: PUSH CX mov cx,16 call print_crlfR: PUSH DX MOV AX,0 MOV AL,DL MOV BL,10H DIV BL MOV BX,0 MOV BL,AH MOV DH,SI+BX MOV DI+1,DH MOV BL,AL MOV DH,SI+BX MOV DI,DH PUSH AX PUSH DX MOV DX,OFFSET MG MOV AH,9 INT 21H POP DX MOV AH,2 INT 21H call print_crlf POP AX POP DX INC DL LOOP R push ax push dx cmp mark2,1 jz QQ call printstars lea dx,ContinueList2 mov ah,09h int 21h pop dx mov ah,1 int 21h cmp al,y jz WW jmp QQWW: pop ax pop cx dec mark2 call printstars call print_crlf LOOP AG QQ: pop ax lea dx,over mov ah,09 int 21h call printstars mov mark2,14 pop dx pop cx pop bx pop ax JMP start retasc2 endpasc22 proc near push ax push bx push cx push dx call print_crlf call printstars MOV AL,0 MOV BL,00H MOV CX,15*16D: CMP AL,15 JA NEXT_LINE JMP CONTINUENEXT_LINE: LEA DX,nextline MOV AH,09H INT 21H MOV AL,0CONTINUE: MOV BH,BL PUSH AX CALL PRINT_RESULT LEA DX,BLANK MOV AH,09H INT 21H POP AX INC BL INC AL LOOP D pop dx pop cx pop bx pop ax call printstars jmp start retasc22 endp;子程序名: MutTable;功能:显示九九乘法表MutTable proc near push axpush bxpush cxpush dxs: lea dx,nine_nine mov ah,09 int 21h mov ah,1 int 21h cmp al,31h jnz n call blockn: cmp al,32h jnz mcall trianglem: cmp al,33h jnz q call triangle1q: mov mark,0 pop dx pop cxpop bxpop ax JMP startretMutTable endpblock proc near push axpush bxpush cxpush dxcall printstarscall print_crlfcall print_crlf mov al,1 mov ch,1 mov bl,al mov bh,10d mov si,9x: mul ch div bh mov dh,al mov cl,ah call output inc ch mov al,bl sub si,1 jnz x call print_crlf inc bl mov al,bl mov ch,1 mov si,9 cmp bl,10 jnz xpop dx pop cxpop bxpop axcall printstarscall rollprintjmp start retblock endptriangle proc near push ax push bx push cx push dx call printstars call print_crlfcall print_crlf mov al,1 mov ch,1 mov bl,al mov bh,bly: mov dh,10d mul ch div dh mov dh,al mov cl,ah call output inc ch mov al,bl dec bh jnz y call print_crlf inc bl mov al,bl mov ch,1 mov bh,bl cmp bl,10 jnz ypop dx pop cxpop bxpop axcall printstarscall rollprintjmp start rettriangle endptriangle1 proc near push axpush bxpush cxpush dxcall printstarscall print_crlfcall print_crlf mov al,1 mov ch,1 mov bl,al mov bh,bl mov dh,56 mov table,dhz: cmp dh,0 jz w call space dec dh jnz zw: mov dh,10d mul ch div dh mov dh,al mov cl,ah call output inc ch mov al,bl dec bh jnz w call print_crlf inc bl mov al,bl mov ch,1 mov bh,bl sub table,7 mov dh,table cmp bl,10 jnz zcall printstarscall rollprintpop dx pop cxpop bxpop axjmp start rettriangle1 endp output proc near add bl,30h
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中数学必修四知识点总结
- 多发伤的临床护理
- 幼儿园语言教育与活动设计 课件 第3、4章 幼儿园语言教育活动设计的原理;幼儿园语言教育活动与其他教育活动的交叉与融合
- 人美版小学五年级美术下册台历挂历的设计教学设计
- 汽车销售补充合同范本
- 预防医学招聘个人简历
- 科学护理宝宝
- 肢体断离伤的临床护理
- 断指再植的临床护理
- 2025年中小学落实双减工作总结模版
- 2025年江苏高处安装、维护、拆除作业-特种作业证考试复习题库(含答案)
- Unit7OutdoorfunIntegration(课件)-译林版(2024)英语七年级下册
- 成人重症患者人工气道湿化护理专家共识
- 2023年船员培训计划
- 2025中国铁路郑州局集团招聘614人(河南)笔试参考题库附带答案详解
- 陪玩店合同协议
- 货运司机雇佣合同协议
- 中国船用集装箱角件行业市场发展前景及发展趋势与投资战略研究报告2025-2028版
- 国家开放大学《统计与数据分析基础》形考任务1-5答案
- 2025年山东省淄博市中考二模地理试题及答案
- 开展2025年全国“安全生产月”活动的通知
评论
0/150
提交评论