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

上传人:b****8 文档编号:27887787 上传时间:2023-07-06 格式:DOCX 页数:31 大小:176.80KB
下载 相关 举报
字符串动画显示汇编语言程序设计.docx_第1页
第1页 / 共31页
字符串动画显示汇编语言程序设计.docx_第2页
第2页 / 共31页
字符串动画显示汇编语言程序设计.docx_第3页
第3页 / 共31页
字符串动画显示汇编语言程序设计.docx_第4页
第4页 / 共31页
字符串动画显示汇编语言程序设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

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

《字符串动画显示汇编语言程序设计.docx》由会员分享,可在线阅读,更多相关《字符串动画显示汇编语言程序设计.docx(31页珍藏版)》请在冰豆网上搜索。

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

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

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

1总体方案论证

1.1题目功能分析

(1)屏幕提示输入字符串;

(2)输入完成后,字符动画显示,显示方式可为:

从无到有,从左到右,从上到下,大小写变化、颜色变化等;

(3)可连续显示或定时显示,直至单击“Q”或“q”键退出程序。

1.2算法说明

(1)屏幕提示输入字符串主要运用中断INT21H的0AH功能;

(2)在确定光标位置后,通过循环改变其行列数值来达到左右上下移动功能;

大小写变化则通过将输入字符与‘a’和‘z’比较,若为小写字母,则减去20H,否则不变;

颜色变化则通过INT10H的09H功能循环调用实现;

(3)退出功能通过将输入‘Q’和‘q’与其ASC

比较,跳转到退出程序;而退出程序主要通过INT21H的4CH功能实现。

2流程图设计及说明

2.1主程序流程图设计

图2-1字符串动画总流程图

2.2分布具体功能实现流程图设计

2.2.1字符串右移

2.2.2字符串下移

2.2.3字符串闪烁

3软件设计关键问题或程序段落说明

3.1提示输入字符串显示功能实现

屏幕提示输入字符串主要运用中断INT21H的0AH功能,输入后回车则完成字符串在特定位置的显示。

另外,在此段程序中,还通过用空字符串的逐个显示来完成字符从无到有的功能实现。

leadx,buf

movah,0ah

int21h

movbx,2;多字符输入,回车结束,有效内容自第三个始。

movdi,0

B1:

moval,buf[bx]

cmpal,13;是否是回车?

jeAG1

movbuff1[di],al

incbx

incdi

jmpB1

AG1:

movah,0

moval,2

int10h;黑白文本

OTHER:

movcx,0ffffh;

AG:

movdh,7;hang

movdl,35;lie

movah,2

movbh,0;页号为0

int10h;置光标位置

leadx,buff1

movah,9

int21h;显示字符串

 

movdh,7

movdl,35

movah,2

movbh,0

int10h;置光标位置

leadx,buff2

movah,9

int21h;

subcx,1;

jnzAG;不等于转移

3.2向右、向下移动功能实现

如流程图可知,向下和向右移动,程序基本相同,只不过一个改变的是行,另一个改变的是列,以下以向右移动为例。

主要通过INT10H调用,且循环操作一定次数实现。

其中,在下一次输出时,为了清除前一个位置的输出,用空字符串替代。

另外,通过延时控制移动速度。

程序如下:

moval,3

movah,0

int10h;16色文本

movdl,0;字符串向右移动,给出起始列

bbb2:

MOVSI,OFFSETbuff1

movdi,0

bbb1:

movdh,7;dhhangdllie

incdl

movah,2

int10h;置光标位置2号置光标位置9号指定输出,每次显示一个

movah,09;9号功能

incdi

moval,[si]

incsi

movbh,0;显示页

movbl,0eh;color

movcx,01;显示字符的次数

int10h

cmpdi,0fh;立即数大小取决于字符串大小

jbbbb1

calldelay1

subdl,0fh;设置列

movSI,OFFSETbuff2

movdi,0

ccc1:

movdh,7;dhhangdllie

incdl

movah,2

int10h;置光标位置

movah,09;9号功能

incdi

moval,[si]

incsi

movbh,0;显示页

movbl,0eh;color

movcx,01;字符重复一次

int10h

cmpdi,0fh

jbccc1

calldelay2

;movah,07

;int21h首先在一个位置输出然后输出空白覆盖掉在输出下一个位置

cmpdl,25

jnbxiangxia;在这里跳出右移,转到向下

subdl,0dh

jmpbbb2

3.3字符串大小写变化实现

因为在ASC

表中大小写相差20H,所以通过将输入字符与‘a’和‘z’比较,若为小写字母,则减去20H,否则不变。

程序如下:

daxiaoxie:

movdl,7

movdh,35

MOVSI,OFFSETbuff1

movdi,0

a1:

moval,[SI]

cmpal,'$'

jeshansuo

cmpal,'a'

jbnext

cmpal,'z'

janext

subal,20h

mov[SI],al

next:

incSI

jmpa1

3.4颜色变化功能实现

颜色变化功能实现相当于对字符串属性定义,表现出颜色差别,然后循环调用并插入延时。

以下程序效果是三种颜色闪烁,其中aaa1表示黄色,aaa2表示绿色,aaa3表示红色。

具体程序如下:

shansuo:

;三种颜色闪烁

callaaa1

calldelay1

callaaa2

calldelay1;内部转换后还是用BIOS10h9号功能调用

callaaa3

calldelay1

jmpshansuo

3.5退出功能实现

退出功能通过将输入‘Q’和‘q’与其ASC

比较,跳转到退出程序;而退出程序主要通过INT21H的4CH功能实现。

movah,08h;q键退出

int21H

cmpAL,'Q'

jeexit

cmpAL,'q'

jeexit

exit:

movah,4ch

int21h

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课程设计收获及心得

学完《微机原理与接口技术》,本以为自己学到的东西挺多,直到课程设计开始,才深刻了解到自己似乎只了解个皮毛。

作为微原中的核心,汇编语言的程序设计在课程学习中只有一章,而且书本上的例题与这次课程设计任务相比,难度不大。

几乎整整一周的微原课程设计结束,对于我,感受颇深,收获颇多。

除了一些以前学过的指令,最深的感触是对中断INT21H和INT10H中一些常用功能的运用。

经过此次课程设计,我通过自己查资料、自己设计编程到最后完成功能实现,最终的成就感比平时更大,因为我感受到了学以致用,将理论用于实际的效果。

在以后的学习中,我会继续保持这样良好的态度对待任何学习,不论是课程设计还是实习,抑或只是平时课程学习,我将为了提高自身实践能力而有目的的学习与收获,而不仅仅是为了应付考试或者拿到学位证。

6参考文献

[1]彭虎等编著.微机原理与接口技术(第二版).北京:

电子工业出版社,2008

[2]沈美明,温东禅.IBM-PC汇编语句程序设计(第2版).北京:

清华大学出版社,2001

[3]任向明,卢惠林.汇编语言程序设计实用教程.北京:

清华大学出版社,2009

[4]马力妮.80x86汇编语言程序设计.北京:

机械工业出版社,2004

[5]艾德才.Pentium系列微型计算机原理与接口技术.北京:

高等教育出版社,2000

附录:

程序清单

datasegment

buff1db'$'

buff2db'$'

bufdb100dup('$')

buff3db'pleaseinputastring!

',13,10,'$'

buff4db'PressQorqtoexit!

',13,10,'$'

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

leadx,buff3;显示提示信息

movah,09h

int21h

leadx,buff4;显示提示信息

movah,09h

int21h

 

leadx,buf

movah,0ah

int21h

movbx,2;多字符输入,回车结束,有效内容自第三个始。

movdi,0

B1:

moval,buf[bx]

cmpal,13;是否是回车?

jeAG1

movbuff1[di],al

incbx

incdi

jmpB1

AG1:

movah,0

moval,2

int10h;黑白文本

OTHER:

movcx,0ffffh;

AG:

movdh,7;hang

movdl,35;lie

movah,2

movbh,0;页号为0

int10h;置光标位置

leadx,buff1

movah,9

int21h;显示字符串

 

movdh,7

movdl,35

movah,2

movbh,0

int10h;置光标位置

leadx,buff2

movah,9

int21h;

subcx,1;

jnzAG;不等于转移

;*********************************************************

moval,3

movah,0

int10h;16色文本

movdl,0;字符串向右移动,给出起始列

bbb2:

MOVSI,OFFSETbuff1

movdi,0

bbb1:

movdh,7;dhhangdllie

incdl

movah,2

int10h;置光标位置2号置光标位置9号指定输出,每次显示一个

movah,09;9号功能

incdi

moval,[si]

incsi

movbh,0;显示页

movbl,0eh;color

movcx,01;显示字符的次数

int10h

cmpdi,0fh;立即数大小取决于字符串大小

jbbbb1

calldelay1

;*********************************************************

subdl,0fh;设置列

MOVSI,OFFSETbuff2

movdi,0

ccc1:

movdh,7;dhhangdllie

incdl

movah,2

int10h;置光标位置

movah,09;9号功能

incdi

moval,[si]

incsi

movbh,0;显示页

movbl,0eh;color

movcx,01;字符重复一次

int10h

cmpdi,0fh

jbccc1

calldelay2

;movah,07

;int21h首先在一个位置输出然后输出空白覆盖掉在输出下一个位置

cmpdl,25

jnbxiangxia;在这里跳出右移,转到向下

subdl,0dh

jmpbbb2

xiangxia:

;字符串向下移动

movdl,0

movdh,7;dhhangdllie

ddd2:

MOVSI,OFFSETbuff1

movdi,0

eee1:

incdl

movah,2

int10h;置光标位置

movah,09;9号功能

incdi

moval,[si]

incsi

movbh,0;显示页

movbl,0ah;color

movcx,01;字符重复一次

int10h

cmpdi,0fh

jbeee1

calldelay1

subdl,0fh;列回到原处,输出空白覆盖

MOVSI,OFFSETbuff2

movdi,0

fff1:

incdl

movah,2

int10h;置光标位置

movah,09;9号功能

incdi

moval,[si]

incsi

movbh,0;显示页

movbl,0eh;color

movcx,01;字符重复一次

int10h

cmpdi,0fh

jbfff1

calldelay2

cmpdh,13;从第7行下移到13行退出到大小写转换

jnbdaxiaoxie

incdh

subdl,0fh

jmpddd2;字符串向下移动结束

daxiaoxie:

movdl,7

movdh,35

MOVSI,OFFSETbuff1

movdi,0

a1:

moval,[SI]

cmpal,'$'

jeshansuo

cmpal,'a'

jbnext

cmpal,'z'

janext

subal,20h

mov[SI],al

next:

incSI

jmpa1

shansuo:

;三种颜色闪烁

callaaa1

calldelay1

callaaa2

calldelay1;内部转换后还是用BIOS10h9号功能调用

callaaa3

calldelay1

MOVAH,08h;q键退出

INT21H

cmpAL,'Q'

jeexit

cmpAL,'q'

jeexit

jmpshansuo

exit:

movah,4ch

int21h

;*********************************************************

aaa1procnear;黄色

MOVSI,OFFSETbuff1

movdi,0

movdl,20

aa1:

movdh,20;dhhangdllie

incdl

movah,2

int10h;置光标位置

movah,09;9号功能

incdi

moval,[si]

incsi

movbh,0;显示页

movbl,0eh;color

movcx,01;字符重复一次

int10h

cmpdi,0ch

jbaa1

ret

aaa1endp

;******************************************************

aaa2procnear;绿色

MOVSI,OFFSETbuff1

movdi,0

movdl,20

aa2:

movdh,20;dhhangdllie

incdl

movah,2

int10h;置光标位置

movah,09;9号功能

incdi

moval,[si]

incsi

movbh,0;显示页

movbl,0ah;color

movcx,01;字符重复一次

int10h

cmpdi,0ch

jbaa2

ret

aaa2endp

;********************************************************

aaa3procnear;红色

MOVSI,OFFSETbuff1

movdi,0

movdl,20

aa3:

movdh,20;dhhangdllie

incdl

movah,2

int10h;置光标位置

movah,09;9号功能

incdi

moval,[si]

incsi

movbh,0;显示页

movbl,05h;color

movcx,01;字符重复一次

int10h

cmpdi,0ch

jbaa3

ret

aaa3endp;三种颜色闪烁

;**********************************************************

delay1procnear

pushcx

pushbx

movbx,1fffh

wait4:

movcx,0ffffh

wait5:

loopwait5

decbx

jnzwait4

popbx

popcx

ret

delay1endp

;延迟1比延迟二长

;*********************************************************

delay2procnear

pushcx

pushbx

movbx,0ffh

wait2:

movcx,0ffffh

wait3:

loopwait3

decbx

jnzwait2

popbx

popcx

ret

delay2endp;字符串向右移动结束

codeends

endstart

 

本科生课程设计成绩评定表

姓名

张丹

性别

专业、班级

自动化专业、自动化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以下)

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

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

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