You are on page 1of 6

TSR Program Example 2

============================================
.model tiny
code_seg segment 'code'
assume cs:code_seg
main proc far
.startup
jmp codepart
oldint8 dd (?)
oldint15 dd (?)
nvalue dw 0741h
tik db 0h
dhr db 0h
dmin db 0h
dsec db 0h
s1 db ?
s2 db ?
m1 db ?
m2 db ?
h1 db ?
h2 db ?
hid db 07h
pos dw 0010d

codepart:
xor bx,bx
xor ax,ax
mov ah,2ch
int 21h
mov dsec,dh
mov dmin,cl
mov dhr,ch
;for clrscr
mov ax,0B800h
mov es,ax
mov di,0
mov cx,2000d
start: mov word ptr es:[di],0720h
add di,2
loop start

xor ax,ax
;for int15a
mov ax,0
mov es,ax
mov ax,word ptr es:[15h*4]
mov word ptr cs:oldint15,ax
mov ax,word ptr es:[15h*4+2]
mov word ptr cs:oldint15[2],ax

mov word ptr es:[15h*4],offset newint2


mov word ptr es:[15h*4+2],cs
;for int 8
mov ax,0
mov es,ax
mov ax,word ptr es:[8*4]
mov word ptr cs:oldint8,ax
mov ax,word ptr es:[8*4+2]
mov word ptr cs:oldint8[2],ax

mov word ptr es:[8*4],offset newint


mov word ptr es:[8*4+2],cs

mov ax,3100h
mov dx,1000
int 21h
main endp

newint2 proc

cmp ah,4Fh
jne skipall
;chk right arow
cmp al,4DH
je body1
;chk down arow s
cmp al,50h
je body2
;chk up arow w
cmp al,48h
je body3
;chk left arow a
cmp al,4Bh
je body4
;chk hide key h
cmp al,23h
je body5
;chk unhide key s
cmp al,1Fh
je body6
jmp skipall

body1:
add pos,2d
jmp skipall
body2:
add pos,160d
jmp skipall
body3:
sub pos,160d
jmp skipall
body4:
sub pos,2d
jmp skipall
body5:
mov hid,00h
jmp skipall
body6:
mov hid,07h
skipall:

;for clrscr
mov ax,0B800h
mov es,ax
mov di,0
mov cx,2000d
start1:
mov word ptr es:[di],0720h
add di,2
loop start1

jmp dword ptr cs:oldint15


newint2 endp
newint proc
push es
push ax

xor bx,bx
xor ax,ax

cmp tik,12h
jne isec
mov tik,0h
add dsec,01h

cmp dsec,3Ch
jne isec
mov dsec,00h
add dmin,01h

cmp dmin,3Ch
jne isec
mov dmin,00h
add dhr,01h

cmp dhr,18h
jne isec
mov dhr,00h

isec:
add tik,01h
;sec
mov al,dsec
mov bl,10d
div bl
add ax,3030h
mov s1,al
mov s2,ah
;minute
xor bx,bx
xor ax,ax
mov al,dmin
mov bl,10d
div bl
add ax,3030h
mov m1,al
mov m2,ah
;Hour
xor bx,bx
xor ax,ax
mov al,dhr
mov bl,10d
div bl
add ax,3030h
mov h1,al
mov h2,ah

mov di,pos
mov ax,0B800h
mov es,ax
XOR BX,BX
mov bx,0741h
mov bh,hid
;dis hr
mov bl,h1
mov word ptr es:[di],bx
mov bl,h2
mov word ptr es:[di+2],bx
;dis space
mov word ptr es:[di+4],0720h
;dis minute
mov bl,m1
mov word ptr es:[di+6],bx
mov bl,m2
mov word ptr es:[di+8],bx
;dis space
mov word ptr es:[di+10],0720h
;dis sec
mov bl,s1
mov word ptr es:[di+12],bx
mov bl,s2
mov word ptr es:[di+14],bx

pop ax
pop es
jmp dword ptr cs:oldint8
newint endp
code_seg ends
end
http://www.ravianeducation.blogspot.com
FARHAN: 03008855006

You might also like