用汇编语言实现闪烁文字
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;黑白文本