Salut,
Voila mon programme, il n'est pas encore résident mais il y a un probleme. Lorsque je le lance sous Virtual Player Computer et que j'appuye une fois sur Printscreen l'heure s'affiche mais apres plus rien l'heure reste figée au dessus de l'écran.
.MODEL SMALL
.STACK
.DATA
prtscn DB 0
ancip DW ?
ancseg DW ?
mvideo DB 20 dup(' ')
.CODE
include a:hex2asc.asm
JMP START
ROUTINETIMER:
CLI
PUSH AX ; SAUVEGARDE DES DIFFÉRENT REGISTRES
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSH DS
PUSH ES
MOV AX, 0B800h
MOV ES, AX
MOV SI, 142
MOV AH, 02h ; LECTURE DE L'HEURE
INT 1Ah
MOV AL, CH ; AFFICHE LES HEURES
CALL HEX2ASCII
MOV AH, 07
MOV AL, ':' ; CARACTÈRE ':'
MOV ES:[SI], AX
INC SI
INC SI
MOV AL, CL ; AFFICHE LES MINUTES
CALL HEX2ASCII
MOV AH, 07
MOV AL, ':' ; CARACTÈRE ':'
MOV ES:[SI], AX
INC SI
INC SI
MOV AL, DH ; AFFICHE LES SECONDES
CALL HEX2ASCII
POP AX ; RECUPERATION DES DIFFÉRENT REGISTRES
POP CX
POP DX
POP SI
POP DI
POP DS
POP ES
STI
IRET
ROUTINE05h:
CLI
MOV AX, @DATA
MOV DS, AX
CMP prtscn, 1
JE ECRAN
MOV AL, 1Ch
MOV AH, 35h ;Lit l'ancien vecteur
CLI
INT 21h
MOV ancip, BX
MOV AX, ES
MOV ancseg, AX ;ancien IP et SEGMENT dans ES:BX
PUSH ES
MOV AX, 0B800h
MOV ES, AX
MOV SI, 142 ;Premier chiffre de l'heure
MOV DI, 0
SVGVIDEO1:
MOV BH, ES:[SI]
MOV mvideo[DI], BH ;Premier chiffre de l'heure sauve
INC DI
INC SI
MOV BL, ES:[SI] ;Second
MOV mvideo[DI], BL
CMP DI, 17
JE SUITE ;Quand toute l'heure est sauvegardée on arrete
INC DI
INC SI
JMP SVGVIDEO1
SUITE:
POP ES
PUSH DS
PUSH CS
POP DS
LEA DX, ROUTINETIMER ;Place la routine
MOV AH, 25h
MOV AL, 1Ch ;Detourne 1Ch
CLI
INT 21h
STI
POP DS
MOV prtscn, 1
JMP FIN
ECRAN:
MOV DX, ancip ;Remet l ancien IP
MOV AX, ancseg ;et SEGMENT
PUSH DS
MOV DS, AX
MOV AH, 25h
MOV AL, 1Ch
CLI
INT 21h
STI
POP DS
PUSH ES
MOV AX, 0B800h
MOV ES, AX
MOV SI, 142
MOV DI, 0
SVGVIDEO2:
MOV BH, mvideo[DI]
INC DI
MOV BL, mvideo[DI]
MOV ES:[SI], BX ;Réaffiche l'heure
CMP DI, 17
JE SUITE2
INC DI
INC SI
INC SI
JMP SVGVIDEO2
SUITE2:
POP ES
MOV prtscn, 0
FIN:
STI
IRET
START:
PUSH DS
PUSH CS
POP DS
LEA DX, ROUTINE05h
MOV AH, 25h
MOV AL, 05h
CLI
INT 21h
STI
POP DS
FINSTART:
MOV AX, 4C00h
INT 21h
END START