急!!国防科大自考汇编实验题目解决方法(完成填空)
;*********************************************************************
;实验题目:制作电子钟
;原理:利用定时器产生的中断信号作为时钟计数值,制作一个电子钟,(XX分XX秒)
;要求:(1)看懂参考程序的流程,理解关键语句部分的作用.
; (2)参考程序中没有保存和恢复中断向量的入口值,程序退出后,系统死机,
; 请在适当位置添加相应语句,保证程序退出后,系统正常,保存中断向量
; 入口值语句位置已指出,恢复部分请自己确定适当位置.
;*********************************************************************
data segment para public'data'
count100 db 100
tenmin db 0
minute db 0
db':'
tensec db 0
second db 0
data ends
stack segment para stack'stack'
db 256 dup(?)
stack ends
code segment para public'code'
start proc far
assume cs:code
push ds
sub ax,ax
push ax
mov ax,data
mov es,ax
assume es:data
mov si,82h
mov di,offset tenmin
mov cx,5
cld
rep movsb ;取命令行参数
mov ds,ax
assume ds:data
mov ah,0
mov al,1
int 10h
mov ah,2
mov dh,10
mov dl,20
int 10h
mov ah,9
mov al,' '
mov bl,2eh
mov cx,5
int 10h
mov ah,2
mov dh,10
mov dl,20
int 10h
mov ah,0
int 16h
cli
;************************************
;在此处完成填空,保存中断向量入口值,
;并且接管中断处理
;************************************
sti
cli
mov al,36h
out 43h,al
mov bx,11932
mov al,bl
out 40h,al
mov al,bh
out 40h,al
mov al,bh
out 40h,al
mov al,0bch
out 21h,al
sti ;初始化定时器8253
forever: mov ah,2
mov dh,10
mov dl,20
int 10h
mov bx,offset tenmin
mov cx,5
dispclk: mov al,[bx]
call dispchar
inc bx
loop dispclk
mov al,second
waitl: cmp al,second
jz waitl
mov ah,1
int 16h
jnz ppp
mov al,7
mov ah,14
int 10h
jmp forever
ppp: jmp rrr
timer proc far
push ax
dec count100
jnz timerx
mov count100,100
inc second
cmp second,'9'
jle timerx
mov second,'0'
inc tensec
cmp tensec,'6'
jl timerx
mov tensec,'0'
inc minute
cmp minute,'9'
jle timerx
mov minute,'0'
inc tenmin
cmp tenmin,'6'
jl timerx
mov tenmin,'0'
timerx: mov al,20h
out 20h,al
pop ax
iret
timer endp ;中断处理程序
dispchar proc near
push bx
mov bx,0
mov ah,14
int 10h
pop bx
ret
dispchar endp ;字符显示过程
rrr: ret
start endp
code ends
end start
;此源代码我编译连接成功,但时钟没起作用.