(汇编实现)显示系统时间
2008-12-05 22:17
218 查看
今天看到老师出的汇编的课程设计,是要完成一个显示系统时间的功能.根据要求上提供的源代码,很快的就实现了,但我想老师不会要求这么简单的,于是我想接下来的几天里就想办法完善一下,主要就是图形画界面显示,增加年月日,增加时间的设置功能等,这个简单的可以供大家参考一下!
code segment 'code'
assume cs:code,ds:code
org 100h
start: jmp install
msg db 'Current time is: '
time0 db ?,?
db ':'
time1 db ?,?
db ':'
time2 db ?,?,0,0
oldint1c dd ?
newint1c: push ax
push bx
push cx
push dx
push si
push di
push es
mov ax,0200h ;获取系统时间,ch→hours cl→minutes DH→seconds,均为BCD码格式
int 1ah
mov al,ch
lea si,time0
call bcd
mov al,cl
lea si,time1
call bcd
mov al,dh
lea si,time2
call bcd
mov ax,0b800h ;显存地址 采用直接写显存的方法输出字符
mov es,ax ;es:di 指向显存地址
mov di,54*2d
lea si,msg
disp: mov al,cs:[si]
inc si
or al,al
jz disp0 ;cs=ds
cld
stosb
inc di ;将cs:si指向的一个字节传送到es:di
jmp disp
disp0: pop es
pop di
pop si
pop dx
pop cx
pop bx
pop ax
jmp cs:oldint1c ;新1CH中断的事情做完后调用原来的1CH中断
bcd: mov ah,al
shr ah,1
shr ah,1
shr ah,1
shr ah,1
and al,0fh
add ax,'00'
xchg ah,al
mov cs:[si],ax
ret
install: push cs
pop ds
mov ax,351ch ;获取中断向量ES:BX指向中断向量
int 21h
mov word ptr oldint1c,bx
mov word ptr oldint1c+2,es
lea dx,newint1c
mov ax,251ch ;设置中断向量 DS:DX指向中断向量
int 21h
mov dx,offset install+120h ;+10H即可,因为如果驻留程序的长为36,如果不
mov cl,04h ; 加10H则计算的节为2,而实际应该为3节
shr dx,cl
mov ah,31h ;结束并驻留 DX:保留的长度(内存大小单位为节)
int 21h
code ends
end start
code segment 'code'
assume cs:code,ds:code
org 100h
start: jmp install
msg db 'Current time is: '
time0 db ?,?
db ':'
time1 db ?,?
db ':'
time2 db ?,?,0,0
oldint1c dd ?
newint1c: push ax
push bx
push cx
push dx
push si
push di
push es
mov ax,0200h ;获取系统时间,ch→hours cl→minutes DH→seconds,均为BCD码格式
int 1ah
mov al,ch
lea si,time0
call bcd
mov al,cl
lea si,time1
call bcd
mov al,dh
lea si,time2
call bcd
mov ax,0b800h ;显存地址 采用直接写显存的方法输出字符
mov es,ax ;es:di 指向显存地址
mov di,54*2d
lea si,msg
disp: mov al,cs:[si]
inc si
or al,al
jz disp0 ;cs=ds
cld
stosb
inc di ;将cs:si指向的一个字节传送到es:di
jmp disp
disp0: pop es
pop di
pop si
pop dx
pop cx
pop bx
pop ax
jmp cs:oldint1c ;新1CH中断的事情做完后调用原来的1CH中断
bcd: mov ah,al
shr ah,1
shr ah,1
shr ah,1
shr ah,1
and al,0fh
add ax,'00'
xchg ah,al
mov cs:[si],ax
ret
install: push cs
pop ds
mov ax,351ch ;获取中断向量ES:BX指向中断向量
int 21h
mov word ptr oldint1c,bx
mov word ptr oldint1c+2,es
lea dx,newint1c
mov ax,251ch ;设置中断向量 DS:DX指向中断向量
int 21h
mov dx,offset install+120h ;+10H即可,因为如果驻留程序的长为36,如果不
mov cl,04h ; 加10H则计算的节为2,而实际应该为3节
shr dx,cl
mov ah,31h ;结束并驻留 DX:保留的长度(内存大小单位为节)
int 21h
code ends
end start
相关文章推荐
- 汇编程序,显示系统时间
- MFC 实现 状态栏动态显示系统时间
- 显示系统时间(汇编) 图形化显示
- 地磅称量系统之(27~29)实现主界面显示用户的登录信息和日期时间星期的代码
- js实现动态获取系统时间,显示到页面上
- 80x86 汇编语言:在屏幕右上角显示系统时间
- 基于JS代码实现实时显示系统时间
- Qt 实现实时系统时间显示
- 用JS实现实时显示系统时间
- 利用线程实现动态显示系统时间
- 汇编 实时显示系统时间 年月日信息
- 使用js实现显示系统当前时间并实现倒计时功能并触发模态框(遮罩)功能
- 汇编语言显示系统时间代码分析(14)
- 基于javascript实现动态显示当前系统时间
- c语言里面的调用显示系统时间的函数及实现过程是什么
- jsp实现页面实时显示当前系统时间的方法
- 显示系统当前时间的汇编程序
- Java 程序设计 利用线程实现动态显示系统时间
- js实现 页面显示系统时间(中文显示星期)、动态倒计时页面跳转
- Edit控件实现系统时间动态显示