华北科技学院课程设计报告
push si
push ax 保存寄存器的内容 dec bp ;计数单元减1 jnz display ;如未计到100,则直接转显示
mov di,offset BUFDA
mov bp,0064h mov al,[di+05]
inc al mov [di+05],al
cmp al,0ah jnz display mov al,00 mov [di+05],al mov al,[di+04]
inc al 零,前一位加1 mov [di+04],al
cmp al,06 jnz display mov al,00 mov [di+04],al mov al,[di+03]
inc al 而分位加1
;计数单元设置初值 ;秒位加1 ;是否引起进位 ;无进位则转显示 ;有进位则本位清 ;是否满60秒 ;否,则转显示 ;是则本位清零,15
华北科技学院课程设计报告
mov [di+03],al
cmp al,0ah ;是否引起分位有进位 jnz display ;否,则转显示 mov al,00 mov [di+03],al mov al,[di+02] inc al
mov [di+02],al 零,前一位加1
cmp al,06 jnz display mov al,00 mov [di+02],al mov al,[di+01]
inc al 零,前一位加1 mov [di+01],al
cmp al,04 jnz display mov al,00 mov [di+01],al mov al,[di]
inc al 前一位加1 mov [si],al
;有进位,则本位清 ;是否满60分 ;否,则转显示 ;有进位,则本位清 ;是否引起时位有进位 ;否,则转显示 ;是则本位清零,16
华北科技学院课程设计报告
cmp al,02 ;是否满24小时 jnz display ;否,则转显示 mov al,00
mov [di],al ;是则本位清零 display:
call displ mov dx,210h mov al,20h
out dx,al pop ax pop si iret
intr endp 程序调用的显示程序 displ proc near push dx push cx push bx push si
mov cx,0006 mov bx,offset TABLE mov si,offset BUFDA mov ah,11011111b displ1:
mov dx,portbit
17
;调用显示程序 手动结束中断 ;被中断处理 ;显示位数 ; 华北科技学院课程设计报告
mov al,0ffh
out dx,al ;关显示 push cx mov cx,0100h wait1:
loop wait1 mov dx,portseg mov al,[si]
xlat out dx,al mov dx,portbit mov al,ah
out dx,al mov cx,0100h wait2:
loop wait2 pop cx ror ah,1 inc si loop displ1 pop si pop bx pop cx pop dx ret
18
;软件延时 ;转换 ;输出段码 ;输出位码 ;延时 华北科技学院课程设计报告
displ endp
******************************************************* TABLE: db 3fh ;“0”的段码 db 06h db 5bh db 4fh db 66h db 6dh db 7dh db 07h db 7fh db 6fh db 00h
db 76h db 79h db 38h db 38h
db 5ch BUFDA:
db 0,2,5,9,5,5,11,12,13,14,15,16
code ends end start
19
;“1”的段码 ;“2”的段码 ;“3”的段码 ;“4”的段码 ;“5”的段码 ;“6”的段码 ;“7”的段码 ;“8”的段码 ;“9”的段码 ;“H”的段码 ;“E”的段码 ;“L”的段码 ;“L”的段码 ;“o”的段码