admin 管理员组

文章数量: 1086019


2024年12月31日发(作者:杨戬克星一览表)

(完整word版)字符串动画显示汇编语言程序设计

目 录

1总体方案论证 ...................................................................................................................... 1

1.1题目功能分析 ............................................................................................................ 1

1。2算法说明 ................................................................................................................. 1

2流程图设计及说明 .............................................................................................................. 2

2。1主程序流程图设计 ................................................................................................ 2

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

2。2.1字符串右移 ................................................................................................... 3

2。2。2字符串下移 ............................................................................................... 4

2。2。3字符串闪烁 ............................................................................................... 5

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

3。1提示输入字符串显示功能实现 ........................................................................... 5

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

3.3字符串大小写变化实现 ........................................................................................... 9

3.4颜色变化功能实现 ................................................................................................. 10

3。5退出功能实现 ....................................................................................................... 10

4调试说明、结果记录及分析 ........................................................................................... 11

4。1调试说明 ............................................................................................................... 11

4.2结果记录与分析 ...................................................................................................... 11

4.2。1 提示输入字符串 ....................................................................................... 11

4。2。2输入后显示字符串 ................................................................................. 11

4.2。3在特定位置从无到有显示 ........................................................................ 12

4.2.4在特定位置向右移动 ................................................................................... 13

4.2。5在特定位置向下移动 ................................................................................ 13

4。2.6小写变成大写加闪烁 ................................................................................ 14

5课程设计收获及心得 ....................................................................................................... 15

6参考文献 ............................................................................................................................ 16

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

1总体方案论证

1.1题目功能分析

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

(完整word版)字符串动画显示汇编语言程序设计

(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功能实现。

(完整word版)字符串动画显示汇编语言程序设计

2流程图设计及说明

2.1主程序流程图设计

开始

段地址初始化

进入Dos窗口

输出提示信息

输入字符串

显示输入字符串

字符串右移

字符串向下移动

字符串小写变大写

三色变换闪烁

N

Q,q?

Y

结束

图2-1 主程序流程图

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

(完整word版)字符串动画显示汇编语言程序设计

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

2.2。1字符串右移

开始

获取字符串

设置光标起始位置

输出字符串

N

输完?

Y

延迟1

输出空白覆盖字符串

延迟2

结束?

Y

N

横坐标更新

结束

图2-2 字符串右移流程图

(完整word版)字符串动画显示汇编语言程序设计

2.2。2字符串下移

开始

获取字符串

设置光标起始位置

输出字符串

N

输完?

Y

延迟1

输出空白覆盖字符串

延迟2

结束?

Y

N

纵坐标更新

结束

图2-3 字符串下移流程图

(完整word版)字符串动画显示汇编语言程序设计

2.2.3字符串闪烁

开始

获取字符串

设置字符串颜色

设置起始位置

输出字符串

N

是否输完?

Y

延迟1

N

次数已到?

Y

结束

图2-4 字符串闪烁流程图

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

3。1提示输入字符串显示功能实现

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

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

lea dx,buf

mov ah,0ah

(完整word版)字符串动画显示汇编语言程序设计

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

(完整word版)字符串动画显示汇编语言程序设计

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

(完整word版)字符串动画显示汇编语言程序设计

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

(完整word版)字符串动画显示汇编语言程序设计

; 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

(完整word版)字符串动画显示汇编语言程序设计

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

(完整word版)字符串动画显示汇编语言程序设计

4调试说明、结果记录及分析

4.1调试说明

所谓程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻

辑错误的过程.这是保证计算机信息系统正确性的必不可少的步骤。编完计算机程序,必须送入计算机中测试.

调试过程中出现很多问题。很多次,程序更改后得不到目标文件,主要原因是编程过程中不够细心,而

且没有整体把握.例如,有段名重复的错误,还有对调用不熟悉造成编程过程很痛苦.

4。2结果记录与分析

4.2.1 提示输入字符串

以下是在运行程序后窗口出现的界面,提示输入字符串以及按‘Q’或‘q'退出。如图3.1:

图3。1 提示输入字符串

4。2。2输入后显示字符串

以下是输入字符串后按回车前显示的界面。如图3。2:

(完整word版)字符串动画显示汇编语言程序设计

图3。2 输入字符串

4。2。3在特定位置从无到有显示

以下是按完回车键后依照程序设定位置,光标先跳到第七行、第三十五列,然后逐个字符循环显示字符

串的界面对比。如图3。3:

图3.3 字符串从无到有

(完整word版)字符串动画显示汇编语言程序设计

4。2.4在特定位置向右移动

以下是字符串从第七行、第零列开始右移的对比界面。如图3。4:

图3.4 字符串右移

4.2。5在特定位置向下移动

以下是字符串从第七行、第零列开始下移的对比界面.如图3.5:

(完整word版)字符串动画显示汇编语言程序设计

图3.5 字符串下移

4.2.6小写变成大写加闪烁

以下是字符串中所有小写字母变成大写后进行黄、绿、红依次变化现象对比界面。如图3。6:

图3.6 字符串颜色变化

(完整word版)字符串动画显示汇编语言程序设计

5课程设计收获及心得

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

只了解个皮毛.作为微原中的核心,汇编语言的程序设计在课程学习中只有一章,而且书本上的例题与这次课

程设计任务相比,难度不大.

几乎整整一周的微原课程设计结束,对于我,感受颇深,收获颇多。除了一些以前学过的指令,最深的

感触是对中断INT 21H和INT 10H中一些常用功能的运用.

经过此次课程设计,我通过自己查资料、自己设计编程到最后完成功能实现,最终的成就感比平时更大,因

为我感受到了学以致用,将理论用于实际的效果。

在以后的学习中,我会继续保持这样良好的态度对待任何学习,不论是课程设计还是实习,抑或只是平时

课程学习,我将为了提高自身实践能力而有目的的学习与收获,而不仅仅是为了应付考试或者拿到学位证.

(完整word版)字符串动画显示汇编语言程序设计

6参考文献

[1] 彭虎等编著.微机原理与接口技术(第二版).北京:电子工业出版社,2008

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

[3] 任向明,卢惠林.汇编语言程序设计实用教程.北京:清华大学出版社,2009

[4] 马力妮.80x86汇编语言程序设计.北京:机械工业出版社,2004

[5] 艾德才.Pentium系列微型计算机原理与接口技术.北京:高等教育出版社,2000

(完整word版)字符串动画显示汇编语言程序设计

附录:程序清单

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

(完整word版)字符串动画显示汇编语言程序设计

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

(完整word版)字符串动画显示汇编语言程序设计

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色文本

(完整word版)字符串动画显示汇编语言程序设计

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 ; 设置列

(完整word版)字符串动画显示汇编语言程序设计

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 ; 在这里跳出右移, 转到向下

(完整word版)字符串动画显示汇编语言程序设计

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

(完整word版)字符串动画显示汇编语言程序设计

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

退出到大小写转换

(完整word版)字符串动画显示汇编语言程序设计

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

(完整word版)字符串动画显示汇编语言程序设计

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

(完整word版)字符串动画显示汇编语言程序设计

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

(完整word版)字符串动画显示汇编语言程序设计

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

(完整word版)字符串动画显示汇编语言程序设计

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 ;三种颜色闪烁

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

***

(完整word版)字符串动画显示汇编语言程序设计

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

(完整word版)字符串动画显示汇编语言程序设计

pop bx

pop cx

ret

delay2 endp ;字符串向右移动结束

code ends

end start

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

姓 名

专业、班级

张丹

性 别

自动化专业、自动化0805班

课程设计题目:字符串动画显示汇编语言程序设计

课程设计答辩或质疑记录:

(完整word版)字符串动画显示汇编语言程序设计

成绩评定依据:

详见成绩评分表

最终评定成绩(以优、良、中、及格、不及格评定)

指导教师签字:

月 日

成绩评分表

项目

评分标准

能正确分析设计内容,算法选择合理,并有详细的

方案

论证

能分析设计内容,算法选择满足设计要求,有简单

10

说明

设计方案不太满足设计内容及要求,无说明

3≥X≥0

10≥X≥8

7≥X≥4

得分

10≥X≥8

说明、论证.

流程图

流程设计正确,并有详细的说明,流程图绘制规范

设计

流程设计符合设计内容及要求,并有一定说明,流

7≥X≥4

10

程图绘制正确

流程设计不太满足设计内容及要求,且无说明,流3≥X≥0

(完整word版)字符串动画显示汇编语言程序设计

程图绘制不太正确

程序设计关键问题或段落有详细说明,程序代码正

软件

设计

程序设计关键问题或段落有说明,程序代码基本正

说明

10

程序设计关键问题或段落基本无说明,程序代码不

完整或不太满足设计要求

结果

能正确记录调试结果,并能分析结果,给出合理的建

分析

60分

10≥X≥8

7≥X≥4

3≥X≥0

10≥X≥8

10

能记录调试结果,并加以分析

记录调试结果,但无分析

7≥X≥4

3≥X≥0

心得

基本上真实、客观地反映了本人课程设计的收获、

10≥X≥6

体会

心得

10

无感而发,空洞,套话。

报告

完全按照报告格式要求,内容充实、详细,完全符

10≥X≥8

规范

合规范

10

基本按报告格式要求,内容完整,基本符合规范

未按报告格式要求,不太符合规范

程序上机调试运行结果完全正确

程序调试

程序上机调试运行结果基本满足设计要求

10分

程序上机调试运行结果不太满足设计要求

5≥X≥0

7≥X≥4

3≥X≥0

10≥X≥8

7≥X≥4

3≥X≥0

(完整word版)字符串动画显示汇编语言程序设计

能详细完整地表述设计内容,并能正确回答问题

设计答辩

能完整地表述设计内容,并能回答相关问题

10分

基本表述设计内容,但不能回答相关问题

难度分值

10分

一~三题:7分 四~七题:8分

10≥X≥8

7≥X≥4

3≥X≥0

八~十二题:9分 十三~十七题:10分

纪律及考勤

按照课程设计进度安排完成课程设计任务,按时参加中期检查

10分

及答疑、程序演示及答辩环节.缺席一次扣5分。

总评分数

不及格(60以

优秀(100~90)

良好(89~80)

中等(79~70)

及格(69~60)

下)


本文标签: 字符串 显示 程序设计 程序 汇编语言