汇。编。语。
言。课。程。设。
计。姓名:
学号:专业班级:计科一班。
指导老师:袁全清。
一、 课程题目。
数字时钟,与计算机的时间同步显示。
二、 设计思想。
程序原理:程序先调用系统时间,然后将返回的二进制数转化成ascii码,再通过dos显示功能显示出来,并通过循环不断刷新显示的时间。在二进制转化成ascii码的过程中,我进一步地了解到,在转化过程中,二进制数首先转化为双四位的bcd码,再将高四位低四位分别相加30h,从而转化为ascii码,此时要对照书本的附录了解电脑cup如何将ascii码的信息转换成显示字符。
时间刷新:因为程序是不断对显示屏进行刷新的,所以调用了bctd程序,这是一个精确的计时程序,计数时间约为1秒,然后用了jmp display指令,刷新显示屏,从而达到时间的每秒显示。
屏幕显示:开始做完程序的时候由于采用了光标定位的方法,发现运行了程序后显示光标不停地在不同的位置上跳动,严重影响了程序的可看性。检查了解到光标的跳动跟程序的刷新频率还有人眼的视觉残象成影原理有关,只要系统的刷新频率大于1/25秒,那么人眼就会认为图象在改变,这跟电影为什么要设成25帧/秒的**速率的原理是一样的。
这样一来,就必须设计一较为精确的延时程序来改善画面的显示了,只要不让屏幕刷新得太快就可以打到要求,具体的显示时间是通过延时程序里的dx值决定的,通过调整dx的值,我们发现当dx等于04ff的时候显示效果是最好的。
系统退出:开始本程序是使用了dos中断的键盘功能调用,可是当加了比较跳转指令后整个程序就停了在那里,最后换成了键盘i/o功能调用,问题得到解决。
三、 程序流程图。
四、 源**。
data segment
mess1 db 'press esc button to quit ',0ah,0dh
db ' 0ah,0dh
db ' 0ah,0dh
db ' 0ah,0dh
dbelectronic clock0ah,0dh
db0ah,0dh
db0ah,0dh
dbhust wenhua college0ah,0dh
dbdesign by xuchengting0ah,0dh
db ' 0ah,0dh
db ' 0ah,0dh
db ' mess2 db 0dh,0ah,'$
t_buff db 20在数据段开辟一时间显示缓冲区。
data ends
stack segment
db 100 dup(?)
stack ends
code segment
assume cs:code,ss:stack,ds:data
main:call clear调用清屏子程序。
display:
mov ax, data
mov ds,ax
mov bx,offset t_buff ;送t_buff的偏移地址到bx
mov ah,2ch调用dos时间调用功能,功能号:2ch,小时,分钟,秒数分别保存在ch,cl,dh中。
int 21h
mov al,ch小时数设定。
mov ah,0
call bctd调用进制转换子程序。
push ax
and al,0f0h选取al高四位。
mov cl,4设置右循环的次数。
rol al,cl右循环。
or al,30h加30h得到acsii码。
mov [bx],al将得到的结果送到t_buff缓冲区。
inc bxbx自加1,指针指向下一个缓冲区的下一个地址。
pop ax
and al,0fh选取低四位,道理同上。
or al,30h
mov [bx],al将转换后的低四位值送入缓冲区的第二个地址。
inc bx
mov al,':显示分号。
mov [bx],al
inc bx
mov ah,2ch
int 21h
mov al,cl分钟数设定。
mov ah,0
call bctd
push ax
and al,0f0h
mov cl,4
rol al,cl
or al,30h
mov [bx],al
inc bx
pop ax
and al,0fh
or al,30h
mov [bx],al
inc bx
mov al显示;号。
mov [bx],al
inc bx
mov ah,2ch秒设定。
int 21h
mov al,dh
mov ah,0
call bctd
push ax
and al,0f0h
mov cl,4
rol al,cl
or al,30h
mov [bx],al
inc bx
pop ax
and al,0fh
or al,30h
mov [bx],al
inc bx
mov al将字符串的结束位送至显示缓冲区的最后一位。
mov [bx],al
push bx ;置光标位置 ,ah=2,bh=0,dh跟dl分别为行号与列号,并入栈保护bx
mov ah,2
mov bh,0
mov dh,11
mov dl,33
int 10h
pop bx
lea dx,t_buff ;送t_buff偏移地址到dx,并调用dos显示功能,功能号为9
mov ah,9
int 21h
push bx ;置光标位置。
mov ah,2
mov bh,0
mov dh,0
mov dl,0
int 10h
pop bx
lea dx,mess1
mov ah,9
int 21h
push bx ;置光标位置。
mov ah,2
mov bh,0
mov dh,17
mov dl,21
int 10h
pop bx
lea dx,mess2
mov ah,9
int 21h
call delay1
mov ah,1按任意键结束,调用键盘i/o中断功能号1,获取键值到al
int 16h
cmp al,1bh
jz quit是esc键的话就跳转。
jmp display
quit:mov ah,4ch
int 21h
retbctd proc near;二进制转bcd码子程序。
ax输入参数。
ax输出参数,存放调整过的bcd码。
mov dx,ax
mov ax,0
mov cx,16 ;设循环次数。
bctd1:
clc清进位标志c
rcl dx,1 ;通过进位的循环右移。
adc al,al ;带进位加法。
daa加法的十进制调整。
xchg al,ah ;交换高,低八位。
adc al,al
daaxchg al,ah
loop bctd1 ;循环,次数保存在cx里。
retbctd endp
clear proc near
push ax ;入栈保护现场。
push bx
push cx
push dx
mov ax,0600h;ah=06(滚动)al=00(全屏空白)
mov bh,8bh ;背景颜色(8),绿色前景(b)
sub cx,cx
mov dx,5f5fh
int 10h
pop dx ;出栈恢复现场。
pop cx
pop bx
pop ax
汇编语言课程设计
微机原理实践 课程设计报告。题目 汇编语言课程设计。专业 网络工程 班级 班 学号 姓名 指导教师 完成日期 2013年 1 月 6 日。一 课程设计目的。1 加深对汇编语言理论和基本知识的理解,掌握dos和bios系统功能调用,掌握运用汇编语言设计具有一定功能的软件的基本方法。2 通过编写一定规模...
汇编语言课程设计
学号 01211103402 18 课程设计。打字游戏的设计与实现。一 设计内容 1 功能菜单由 开始 速度调整 统计成绩 和 结束 等组成。2 游戏开始后,出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失,并得分 按esc键返回主界面 按空格键暂停 按...
汇编语言课程设计
课程设计报告。课程名称 汇编语言程序设计 课题名称系统时间显示 姓名阚鹏。班级 信息与计算科学082班 指导老师邢远秀老师。报告日期2010年。课程设计的主要目的是提高实践能力,包括对硬件的理解分析能力和汇编语言的编程能力。与其他课程不同的是,本课程对硬件有较高的依赖性,因此课程设计的灵活性受到了一...