为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

字符串动画显示汇编语言程序设计

2020-03-09 40页 doc 114KB 37阅读

用户头像

is_842972

暂无简介

举报
字符串动画显示汇编语言程序设计目 录 1总体方案论证    1 1.1题目功能分析    1 1.2算法说明    2 2流程图设计及说明    3 2.1主程序流程图设计    3 2.2分布具体功能实现流程图设计    4 2.2.1字符串右移    4 2.2.2字符串下移    5 2.2.3字符串闪烁    6 3软件设计关键问题或程序段落说明    6 3.1提示输入字符串显示功能实现    6 3.2向右、向下移动功能实现    7 3.3字符串大小写变化实现    9 3.4颜色变化功能实现    9 3.5退出功能实现    9 4调试...
字符串动画显示汇编语言程序设计
目 录 1总体方案论证    1 1.1目功能    1 1.2算法说明    2 2流程图及说明    3 2.1主程序流程图设计    3 2.2分布具体功能实现流程图设计    4 2.2.1字符串右移    4 2.2.2字符串下移    5 2.2.3字符串闪烁    6 3软件设计关键问题或程序段落说明    6 3.1提示输入字符串显示功能实现    6 3.2向右、向下移动功能实现    7 3.3字符串大小写变化实现    9 3.4颜色变化功能实现    9 3.5退出功能实现    9 4调试说明、结果及分析    10 4.1调试说明    10 4.2结果记录与分析    10 4.2.1 提示输入字符串    10 4.2.2输入后显示字符串    11 4.2.3在特定位置从无到有显示    11 4.2.4在特定位置向右移动    12 4.2.5在特定位置向下移动    12 4.2.6小写变成大写加闪烁    13 5课程设计收获及心得    14 6参考文献    14 字符串动画显示汇编语言程序设计 1总体方案论证 1.1题目功能分析 (1)屏幕提示输入字符串; (2)输入完成后,字符动画显示,显示方式可为:从无到有,从左到右,从上到下,大小写变化、颜色变化等; (3)可连续显示或定时显示,直至单击“Q”或“q”键退出程序。 1.2算法说明 (1)屏幕提示输入字符串主要运用中断INT 21H的0A H功能; (2)在确定光标位置后,通过循环改变其行列数值来达到左右上下移动功能; 大小写变化则通过将输入字符与‘a’和‘z’比较,若为小写字母,则减去20H,否  则不变; 颜色变化则通过INT 10H的09H功能循环调用实现; (3)退出功能通过将输入‘Q’和‘q’与其ASC 比较,跳转到退出程序;而退出程序主  要通过INT 21H的4C H功能实现。 2流程图设计及说明 2.1主程序流程图设计 图2-1  字符串动画总流程图 2.2分布具体功能实现流程图设计 2.2.1字符串右移 2.2.2字符串下移 2.2.3字符串闪烁 3软件设计关键问题或程序段落说明 3.1提示输入字符串显示功能实现 屏幕提示输入字符串主要运用中断INT 21H的0A H功能,输入后回车则完成字符串在特定位置的显示。另外,在此段程序中,还通过用空字符串的逐个显示来完成字符从无到有的功能实现。 lea dx,buf mov ah,0ah int 21h mov bx,2  ;多字符输入,回车结束,有效内容自第三个始。 mov di,0 B1:    mov al,buf[bx] cmp al,13    ;是否是回车? je  AG1 mov buff1[di],al inc  bx inc  di jmp B1 AG1: mov ah,0 mov al,2 int 10h;黑白文本 OTHER:              mov cx,0ffffh; AG: mov dh,7 ;hang mov dl,35 ;lie mov ah,2 mov bh,0 ;页号为0 int 10h  ;置光标位置 lea dx,buff1 mov ah,9 int 21h  ;显示字符串 mov dh,7 mov dl,35 mov ah,2 mov bh,0 int 10h    ;置光标位置 lea dx,buff2 mov ah,9 int 21h; sub cx,1 ; jnz AG            ;不等于转移 3.2向右、向下移动功能实现 如流程图可知,向下和向右移动,程序基本相同,只不过一个改变的是行,另一个改变的是列,以下以向右移动为例。主要通过INT 10H 调用,且循环操作一定次数实现。其中,在下一次输出时,为了清除前一个位置的输出,用空字符串替代。另外,通过延时控制移动速度。程序如下: mov al,3 mov ah,0 int 10h ;16色文本 mov dl,0    ;字符串向右移动, 给出起始列 bbb2: MOV  SI,OFFSET buff1 mov di,0 bbb1: mov dh,7 ;dh hang  dl lie inc dl mov ah,2 int 10h    ;置光标位置 2号置光标位置 9号指定输出,每次显示一个 mov ah,09  ;9号功能 inc di mov al,[si] inc si mov bh,0    ;显示页 mov bl,0eh  ;color mov cx,01  ;显示字符的次数 int 10h cmp di,0fh  ; 立即数大小取决于字符串大小 jb bbb1 call delay1 sub dl,0fh        ; 设置列 mov  SI,OFFSET buff2 mov di,0 ccc1: mov dh,7 ;dh hang  dl lie inc dl mov ah,2 int 10h ;置光标位置 mov ah,09  ;9号功能 inc di mov al,[si] inc si mov bh,0    ;显示页 mov bl,0eh ;color mov cx,01 ;字符重复一次 int 10h cmp di,0fh jb ccc1 call delay2 ; mov ah,07 ;  int 21h  首先在一个位置输出 然后输出空白覆盖掉在输出下一个位置 cmp dl,25 jnb xiangxia          ; 在这里跳出右移, 转到向下 sub dl,0dh jmp bbb2 3.3字符串大小写变化实现 因为在ASC 表中大小写相差20H,所以通过将输入字符与‘a’和‘z’比较,若为小写字母,则减去20H,否则不变。程序如下: daxiaoxie: mov dl,7 mov dh,35 MOV  SI,OFFSET buff1 mov di,0 a1: mov al,[SI] cmp al,'$' je shansuo cmp al,'a' jb next cmp al,'z' ja next sub al,20h mov [SI],al next:inc SI jmp a1 3.4颜色变化功能实现 颜色变化功能实现相当于对字符串属性定义,表现出颜色差别,然后循环调用并插入延时。以下程序效果是三种颜色闪烁,其中aaa1表示黄色,aaa2表示绿色,aaa3表示红色。具体程序如下: shansuo:        ;三种颜色闪烁 call aaa1 call delay1 call aaa2 call delay1      ;内部转换后  还是用BIOS 10h 9号功能调用 call aaa3 call delay1 jmp shansuo      3.5退出功能实现 退出功能通过将输入‘Q’和‘q’与其ASC 比较,跳转到退出程序;而退出程序主要通过INT 21H的4C H功能实现。 mov ah,08h;q键退出 int 21H cmp AL,'Q' je  exit cmp AL,'q' je  exit exit: mov ah,4ch int 21h    4调试说明、结果记录及分析 4.1调试说明 所谓程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。编完计算机程序,必须送入计算机中测试。 调试过程中出现很多问题。很多次,程序更改后得不到目标文件,主要原因是编程过程中不够细心,而且没有整体把握。例如,有段名重复的错误,还有对调用不熟悉造成编程过程很痛苦。  4.2结果记录与分析 4.2.1 提示输入字符串 以下是在运行程序后窗口出现的界面,提示输入字符串以及按‘Q’或‘q’退出。如图3.1: 图3.1  提示输入字符串 4.2.2输入后显示字符串 以下是输入字符串后按回车前显示的界面。如图3.2: 图3.2  输入字符串 4.2.3在特定位置从无到有显示 以下是按完回车键后依照程序设定位置,光标先跳到第七行、第三十五列,然后逐个字符循环显示字符串的界面对比。如图3.3: 图3.3  字符串从无到有 4.2.4在特定位置向右移动 以下是字符串从第七行、第零列开始右移的对比界面。如图3.4: 图3.4  字符串右移 4.2.5在特定位置向下移动 以下是字符串从第七行、第零列开始下移的对比界面。如图3.5: 图3.5  字符串下移 4.2.6小写变成大写加闪烁 以下是字符串中所有小写字母变成大写后进行黄、绿、红依次变化现象对比界面。如图3.6: 图3.6  字符串颜色变化 5课程设计收获及心得 学完《微机原理与接口技术》,本以为自己学到的东西挺多,直到课程设计开始,才深刻了解到自己似乎只了解个皮毛。作为微原中的核心,汇编语言的程序设计在课程学习中只有一章,而且书本上的例题与这次课程设计任务相比,难度不大。 几乎整整一周的微原课程设计结束,对于我,感受颇深,收获颇多。除了一些以前学过的指令,最深的感触是对中断INT 21H和INT 10H中一些常用功能的运用。 经过此次课程设计,我通过自己查资料、自己设计编程到最后完成功能实现,最终的成就感比平时更大,因为我感受到了学以致用,将理论用于实际的效果。 在以后的学习中,我会继续保持这样良好的态度对待任何学习,不论是课程设计还是实习,抑或只是平时课程学习,我将为了提高自身实践能力而有目的的学习与收获,而不仅仅是为了应付考试或者拿到学位证。 6参考文献 [1] 彭虎等编著.微机原理与接口技术(第二版).北京:电子工业出版社,2008 [2] 沈美明,温东禅.IBM-PC汇编语句程序设计(第2版).北京:清华大学出版社,2001 [3] 任向明,卢惠林.汇编语言程序设计实用教程.北京:清华大学出版社,2009 [4] 马力妮.80x86汇编语言程序设计.北京:机械工业出版社,2004 [5] 艾德才.Pentium系列微型计算机原理与接口技术.北京:高等教育出版社,2000 附录:程序清单 data segment buff1 db '                $' buff2 db '                $' buf db  100 dup('$') buff3 db 'please input a string !',13,10,'$' buff4 db 'Press Q or q to exit!',13,10,'$' data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax lea dx,buff3;显示提示信息 mov ah,09h int 21h lea dx,buff4;显示提示信息 mov ah,09h int 21h lea dx,buf mov ah,0ah int 21h mov bx,2  ;多字符输入,回车结束,有效内容自第三个始。 mov di,0 B1:    mov al,buf[bx] cmp al,13    ;是否是回车? je  AG1 mov buff1[di],al inc  bx inc  di jmp B1 AG1: mov ah,0 mov al,2 int 10h;黑白文本 OTHER:              mov cx,0ffffh; AG: mov dh,7 ;hang mov dl,35 ;lie mov ah,2 mov bh,0 ;页号为0 int 10h  ;置光标位置 lea dx,buff1 mov ah,9 int 21h  ;显示字符串 mov dh,7 mov dl,35 mov ah,2 mov bh,0 int 10h    ;置光标位置 lea dx,buff2 mov ah,9 int 21h; sub cx,1 ; jnz AG            ;不等于转移 ;********************************************************* mov al,3 mov ah,0 int 10h ;16色文本 mov dl,0    ;字符串向右移动, 给出起始列 bbb2: MOV  SI,OFFSET buff1 mov di,0 bbb1: mov dh,7 ;dh hang  dl lie inc dl mov ah,2 int 10h    ;置光标位置 2号置光标位置 9号指定输出,每次显示一个 mov ah,09  ;9号功能 inc di mov al,[si] inc si mov bh,0    ;显示页 mov bl,0eh  ;color mov cx,01  ;显示字符的次数 int 10h cmp di,0fh  ; 立即数大小取决于字符串大小 jb bbb1 call delay1 ;********************************************************* sub dl,0fh        ; 设置列 MOV  SI,OFFSET buff2 mov di,0 ccc1: mov dh,7 ;dh hang  dl lie inc dl mov ah,2 int 10h ;置光标位置 mov ah,09  ;9号功能 inc di mov al,[si] inc si mov bh,0    ;显示页 mov bl,0eh ;color mov cx,01 ;字符重复一次 int 10h cmp di,0fh jb ccc1 call delay2 ; mov ah,07 ;  int 21h  首先在一个位置输出 然后输出空白覆盖掉在输出下一个位置 cmp dl,25 jnb xiangxia          ; 在这里跳出右移, 转到向下 sub dl,0dh jmp bbb2 xiangxia:            ;字符串向下移动        mov dl,0              mov dh,7 ;dh hang  dl lie ddd2: MOV  SI,OFFSET buff1 mov di,0 eee1: inc dl mov ah,2 int 10h ;置光标位置 mov ah,09  ;9号功能 inc di mov al,[si] inc si mov bh,0    ;显示页 mov bl,0ah ;color mov cx,01 ;字符重复一次 int 10h cmp di,0fh jb eee1 call delay1 sub dl,0fh            ; 列回到原处,输出空白覆盖 MOV  SI,OFFSET buff2 mov di,0 fff1: inc dl mov ah,2 int 10h ;置光标位置 mov ah,09  ;9号功能 inc di mov al,[si] inc si mov bh,0    ;显示页 mov bl,0eh ;color mov cx,01 ;字符重复一次 int 10h cmp di,0fh jb fff1 call delay2 cmp dh,13      ;从第7行 下移到13行  退出到大小写转换 jnb daxiaoxie inc dh sub dl,0fh jmp ddd2      ;字符串向下移动 结束 daxiaoxie: mov dl,7 mov dh,35 MOV  SI,OFFSET buff1 mov di,0 a1: mov al,[SI] cmp al,'$' je shansuo cmp al,'a' jb next cmp al,'z' ja next sub al,20h mov [SI],al next:inc SI jmp a1 shansuo:        ;三种颜色闪烁 call aaa1 call delay1 call aaa2 call delay1      ;内部转换后  还是用BIOS 10h 9号功能调用 call aaa3 call delay1 MOV AH,08h;q键退出 INT 21H cmp AL,'Q' je  exit cmp AL,'q' je  exit jmp shansuo exit: mov ah,4ch int 21h          ;********************************************************* aaa1 proc near    ;黄色 MOV  SI,OFFSET buff1 mov di,0 mov dl,20 aa1: mov dh,20 ;dh hang  dl lie inc dl mov ah,2 int 10h ;置光标位置 mov ah,09  ;9号功能 inc di mov al,[si] inc si mov bh,0    ;显示页 mov bl,0eh ;color mov cx,01 ;字符重复一次 int 10h cmp di,0ch jb aa1 ret aaa1 endp ;****************************************************** aaa2 proc near  ;绿色 MOV  SI,OFFSET buff1 mov di,0 mov dl,20 aa2: mov dh,20 ;dh hang  dl lie inc dl mov ah,2 int 10h ;置光标位置 mov ah,09  ;9号功能 inc di mov al,[si] inc si mov bh,0    ;显示页 mov bl,0ah ;color mov cx,01 ;字符重复一次 int 10h cmp di,0ch jb aa2 ret aaa2 endp ;******************************************************** aaa3 proc near    ;红色 MOV  SI,OFFSET buff1 mov di,0 mov dl,20 aa3: mov dh,20 ;dh hang  dl lie inc dl mov ah,2 int 10h ;置光标位置 mov ah,09  ;9号功能 inc di mov al,[si] inc si mov bh,0    ;显示页 mov bl,05h ;color mov cx,01 ;字符重复一次 int 10h cmp di,0ch jb aa3 ret aaa3 endp        ;三种颜色闪烁 ;********************************************************** delay1 proc near push cx push bx mov bx,1fffh wait4: mov cx,0ffffh wait5: loop wait5 dec bx jnz wait4 pop bx pop cx ret delay1 endp ;      延迟1 比延迟二长 ;********************************************************* delay2 proc near push cx push bx mov bx,0ffh wait2: mov cx,0ffffh wait3: loop wait3 dec bx jnz wait2 pop bx pop cx ret delay2 endp              ;字符串向右移动结束 code ends end start 本科生课程设计成绩评定表 姓 名 张丹 性 别 女 专业、班级 自动化专业、自动化0805班 课程设计题目:字符串动画显示汇编语言程序设计 课程设计答辩或质疑记录: 成绩评定依据: 详见成绩评分表 最终评定成绩(以优、良、中、及格、不及格评定)         指导教师签字:                年    月    日 成绩评分表 项目 评分标准 得分 课 程 设 计 说 明 书 撰 写 60分 方案 论证 10分 能正确分析设计内容,算法选择合理,并有详细的说明、论证。 10≥X≥8   能分析设计内容,算法选择满足设计要求,有简单说明 7≥X≥4 设计方案不太满足设计内容及要求,无说明 3≥X≥0 流程图 设计 10分 流程设计正确,并有详细的说明,流程图绘制规范 10≥X≥8   流程设计符合设计内容及要求,并有一定说明,流程图绘制正确 7≥X≥4 流程设计不太满足设计内容及要求,且无说明,流程图绘制不太正确 3≥X≥0 软件 设计 说明 10分 程序设计关键问题或段落有详细说明,程序代码正确 10≥X≥8   程序设计关键问题或段落有说明,程序代码基本正确 7≥X≥4 程序设计关键问题或段落基本无说明,程序代码不完整或不太满足设计要求 3≥X≥0 结果 分析 10分 能正确记录调试结果,并能分析结果,给出合理的建议 10≥X≥8   能记录调试结果,并加以分析 7≥X≥4 记录调试结果,但无分析 3≥X≥0 心得 体会 10分 基本上真实、客观地反映了本人课程设计的收获、心得 10≥X≥6   无感而发,空洞,套话。 5≥X≥0 规范 10分 完全按照报告格式要求,内容充实、详细,完全符合规范 10≥X≥8   基本按报告格式要求,内容完整,基本符合规范 7≥X≥4 未按报告格式要求,不太符合规范 3≥X≥0 程序调试 10分 程序上机调试运行结果完全正确 10≥X≥8   程序上机调试运行结果基本满足设计要求 7≥X≥4 程序上机调试运行结果不太满足设计要求 3≥X≥0 设计答辩 10分 能详细完整地表述设计内容,并能正确回答问题 10≥X≥8   能完整地表述设计内容,并能回答相关问题 7≥X≥4 基本表述设计内容,但不能回答相关问题 3≥X≥0 难度分值 10分 一~三题:7分 四~七题:8分 八~十二题:9分 十三~十七题:10分   纪律及考勤 10分 按照课程设计进度安排完成课程设计任务,按时参加中期检查及答疑、程序演示及答辩环节。缺席一次扣5分。   总评分数 优秀(100~90) 良好(89~80) 中等(79~70) 及格(69~60) 不及格(60以下)                            
/
本文档为【字符串动画显示汇编语言程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索