cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 2009
-
11 nov. 2006 à 17:59
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 2022
-
13 nov. 2006 à 14:39
Salut tous, donc voilà, j'suis nouveau en asm
J'ai un vieux projet à faire pour l'école en pascal :) héhé ( un sudoku :s )
Et je voudrais donc lancer l'application directement en Pleine écran
Donc j'ai essayer l'interruption 10h avec MOV ax,13h avant pour passer en mode Graphique
J'ai un drole de truc après donc c'est mort
Après j'ai essayer l'interruption 16h avec MOV ah, 5h juste avant
Il me faut alors placé le Scan Code et le code ASCII
Mais j'ai un souci
c'est une combinaison, et pas moyen de trouver...
J'ai le Scan Code de ALT 38h
Celui de Entrer 1Ch
J'ai le code ASCII de Entrer 13 mais pas celui de ALT...
Donc c'est quoi la solution pour simuler ce fichu Alt+Entrée ... :D
En vous remerciant ;)
ULARGE_INTEGERJokyQi=QI("Joky"
nightlord666
Messages postés746Date d'inscriptionvendredi 17 juin 2005StatutMembreDernière intervention23 mai 200710 11 nov. 2006 à 19:03
C'est normal : je ne pense pas que ALT puisse avoir un code ASCII, car c'est vraiment inutile. Il faut que tu cherche un moyen pour simuler une touche avec le scancode.
Sinon, le mode graphique peut être une bonne idée.
<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 11 nov. 2006 à 19:37
Si c'est pour utiliser avec les interruptions DOS, il existe un tampon clavier qui mémorise la suite de touche et fait BEEP quand il est plein.
Interroger ce tampon en mode scrutation,appuyer sur ALT + la touche et voir ce qu'il y a dans le tampon.
L'adresse du tampon n'a rien de secret,un peu de documentation en livre de poche suffit.
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 12 nov. 2006 à 03:34
En ce qui concerne l' utilisation de SendInput c'est mort parce que j'suis sous turbo pascal lol :D donc voilà impossible
J'vais me renseigner quand même sur le reste pour voir si y'a moyen de chopper une fonction
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 12 nov. 2006 à 18:41
Chanceux,
Un vieux source en 16 bits donne la réponse
adresse du tampon clavier
seg 40H: offset 1AH
Le principe est que a l'adresse si +2 se trouve un byte donnant la longeur des codes touches écrits.Lire la doc devrait être plus facile.
suit le source pour le clavier:
CLAVIER: PUSH AX
PUSH BX
PUSH CX
PUSH ES
PUSH DI
PUSH SI
LEA DI,INSERE
MOV AL,[DI]
CMP AL,0
JZ VIDE ;rien a inserer?
PUSH DI
PLEIN: MOV AL,[DI]
INC DI
CMP AL,0
JNZ PLEIN
MOV CX,DI
DEC CX
POP DI
SUB CX,DI ;CX nombre de caracteres a inscrire
LEA SI,TAMP_VIDE
XOR BX,BX
MOV BL,CL
ADD BL,CL
ADD BL,1EH
MOV [SI+2],BL ;offset fin tampon
XOR AX,AX
ADD SI,4
QQQS: MOV AL,[DI]
MOV [SI],AX
INC DI ;ecrit dans tampon
INC SI
INC SI
LOOP QQQS
VIDE: MOV AX,40H ;recopie dans tamp clavier
MOV ES,AX
MOV DI,1AH ;ES:[DI] tamp clavier
MOV CX,18 ;16 DW pour le tampon
LEA SI,TAMP_VIDE
CLD ;incremente le pointeur
REP MOVSW ;copie TAMP dans tamp clavier 40:1A H
POP SI
POP DI
POP ES
POP CX
POP BX
POP AX
SAHF
RET
INSERE DB 'COMPACT\',16 DUP(0),'FIN TAMPON' ;16 dw,lettres
TAMP_VIDE DB 1EH,00,1EH,00 ;seg 40H: offset 1AH
DB 32 DUP(0)
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 12 nov. 2006 à 19:05
j'ai glissé,
fonction 2 ah =2
sortie al=octet d'état
3 alt actionné
la doc précise que cet octet d'état se trouve a l'adresse 40:17
en 40:18
l'octet =1 alt gauche enfoncé
Après d'après la doc sur la liste des interruptions
Notes: Under DESQview, a number of "keystrokes" invoke specific
DESQview-related actions when they are read from the keyboard
buffer
Values for pseudo-keystrokes for DESQview:
38FBh or FB00h switch to next window (only if main menu already popped up)
38FCh or FC00h pop up DESQview main menu
38FEh or FE00h close the current window
38FFh or FF00h pop up DESQview learn menu
Donc on parle de raccourci ( Alt-Tab pr le premier ) ( Alt F4 ) pour le 3ème et on voit bien le 38 ( Scan code de Alt ) bien présent
Le truc, c'est que j'vois pas dans quel registre le mettre
Vu que CH recoit un scan code et CL le code ascii
Donc si j'met dans CX ça va tout écrasé je suppose ( Je pense que CX c'est CH + CL )
Enfin bref c'est bizarre :)
ULARGE_INTEGERJokyQi=QI("Joky"
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 13 nov. 2006 à 14:39
Salut,
Tout n'a pas l'air très clair.
La fonction se contente de charger le tampon clavier avec des combinaisons de touches.
cx =38FBh
> CH =38h et CL=0FBh
si ecx existe (32) ecx == 000038FBh avec même valeurs pour cx,ch et cl.