Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Programme résident [ Archives / Aide a la programmation Windows ] (RootASM)

jeudi 23 février 2006 à 20:19:19 | Programme résident

RootASM

Bonjour,

J'ai fait un programme qui affiche l'heure et je voudrais le rendre résident en détournent l'interruption 05h.
Je voudrais lancer mon programme une fois, puis si j'appuye sur la touche Printscreen, l'heure s'en va et si je réappuye dessus elle reapparait.

Merci

jeudi 2 mars 2006 à 01:47:21 | Re : Programme résident

BLUEBIBUBBLE

Ok, l'idée est bonne, utilise la fonc 35h pour récupérer le vecteur d'interruption original de l'interruption 05h, modifie le vecteur avec la function 25h pour qu'il pointe sur ta routine (qui doit ensuite appeler l'ancienne fonction) puis rend ton programme résident avec la fonction 31h. (tout avec l'int 21h)

samedi 18 mars 2006 à 14:03:59 | Re : Programme résident

RootASM

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    

   
   


lundi 20 mars 2006 à 00:11:40 | Re : Programme résident

BLUEBIBUBBLE

Il ne faut pas détourner l'int 1Ch (qui n'est appellée par le système une seule fois par heure!), seule l'int 05h doit être détournée.
La nouvelle procédure int 05h (print screen) doit contenir la lecture et l'affichage de l'heure
Il est possible de terminé la routine avec un jmp cs:OldInt05 si on défint:

OldInt05     LABEL DWORD
Int05ofs      DW   ?
Int05seg      DW   ?



Cette discussion est classé dans : programme, heure, résident


Répondre à ce message

Sujets en rapport avec ce message

Appeler un autre programme [ par jo_benni ] Bonjour, Voilà, j'ai fait un petit programme en assembleur qui demande à l'utilisateur une heure d'arrêt et qui s'arrête à l'heure entrée par l'utili 150$ pour celui qui peut m'écrire un programme en C pour pic 16f84 [ par alx2000 ] Je cherche quelqu'un qui peut m'écrire un programme en C pour un pic 16F84. Le programme consiste à faire un cadran sur 4 afficheurs 7 segments. Pas b problrmr dr tri en assembleur [ par smailhou ] Bonjour tous le mondevoila je programme en c et j'essai de faire le programe en asmc un programme de tri par insertion, j'ai pu faire le code asm mais Programme console avec Masm32 [ par LordBob ] Bonjour a tous,voila je me lance dans la programmation assembleur... et j'aimerais si avec masm32, il était possible de créer des programmes consoles HUFFMAN [ par monseigneurdaco ] Je dois faire un programme en assembleur 68000, mais j ai beaucoup de mal a creer un programme qui donne la frequence des caracteres d un texte, Si qu créer des libraires [ par Vortex99011 ] Salut tout le monde.En fait moi je programme beaucoup de trucs différents, et quand j'ai besoin de routines que j'ai déjà faites, je "m'amuse" à copie étapes pour compiler un programme masm sous dos? [ par samsara ] salut les amis, je suis une vraie débutante et j'aimerais savoir comment compiler mon programme sur masm.Dans le dos je fais : "masm montre.asm " (mo HKLM et temporisation [ par Stormy ] Stormy. Encore une question spéciale. J'ai une application usant d'une clé de registre HKLM pour un redémarrage automatisé. Or, je souhaiterais que mo Base de Registre [ par VBrifi ] bon ma question a un rapport avec l'assembleur -j'ai cracké un vieux petit programme qui demande un numéro de série pour s'enregistrer : un jne rempl envoie d'un caractère par liaison série en asm/C [ par lordankou ] bon voila j'ai un programme en C qui appelle une procédure en assembleur et cette dernière doit retourner un caractère. j'ai donc écrit le programme s


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.