用汇编语言实现闪烁文字

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.设计任务

用汇编语言实现闪烁文字的效果

2.原理

2.1题目功能分析

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

(2)输入完成后,字符动画显示颜色变化;

(3)单击“Q”或“q”键退出程序。

2.2算法说明

(1)屏幕提示输入字符串主要运用中断INT 21H的0A H功能;

(2)颜色变化则通过INT 10H的09H功能循环调用实现;

(3)退出功能通过将输入‘Q’和‘q’与其ASCII比较,跳转到退出程序;而退出程序主要通过INT 21H的4C H功能实现。

2.3.流程图

开始

获取字符

设置字符串颜色

设置起始位置

是否输出?

输出字符串

N N

次数已到?

延迟

Y

结束

图1

字符串闪烁流程图

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 ;

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颜色变化功能实现

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

用并插入延时。以下程序效果是三种颜色闪烁,其中aaa1表示白色,aaa2表示黑色,aaa3表示绿色,aaa4表示红色,aaa5表示紫色。往复调用彩色和黑色,

在各种颜色变换之间插入黑色即可实现彩色间断闪烁的效果。具体程序如下:shanshuo: ;

call aaa1 ;white

call delay1

call aaa2;black

call delay1

call aaa3 ;white

call delay1

call aaa2;black

call delay1

call aaa4 ;white

call delay1

call aaa2;black

call delay1

call aaa5 ;white

call delay1

call aaa2;black

call delay1

MOV AH,08h;Q,q键退出

INT 21H

cmp AL,'Q'

je exit

cmp AL,'q'

je exit

jmp shanshuo

3.3退出功能实现

退出功能通过将输入‘Q’和‘q’与其ASCII比较,跳转到退出程序;

mov ah,08h;q键退出

int 21H

cmp AL,'Q'

je exit

cmp AL,'q'

je exit

exit: mov ah,4ch

int 21h

3.4完整程序

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;黑白文本

相关文档
最新文档