.----------------------------------------------------------------. | [012] "Intel ASM tutor #2" [|JaCKeL|] | ; so called: ; : "Et oui, je suis de retour" ` . ` *Cours no2 (1 mois de retard mais bon il est enfin la !) *Titre : Se familiarisé avec l'ASM boucle, jump, mov ... Attention si vous n'êtes pas allé chercher helppc 2.1, vous ne comprendré rien du tout au int (interrupt d'asm). Ce petit prog est disponible à l'adresse suivante : ftp://ftp.simtel.net/pub/simtelnet/msdos/info/helppc21.zip C'est a l'aide de ce programme que vous allez pouvoir savoir quel Interrupt fait quoi, ou sont ses entrés et ses retours... La théorie de base ayant été donné dans le premier article sur l'asm, je vais seulement copier des petits programmes très simple que je vien de faire pour que vous les compiliez et vous familiarisé avec l'asm. Programme qui lit 10 caractères au clavier (sans echo) et les affiches à l'écran à la position du curseur : // A compiler avec un compilateur C void main() { int i; //décraration d'une variable de tipe integer //(entier) en c for (i=0;i < 10; i++) //Boucle en c qui compte de 1 a 10 { asm{ //ouverture de l'asm mov ah,00 //lecture au clavier sans echo int 16h //clavier BIOS service //le caractère lu sera dans al int 29h //Fonction DOS pour afficher un caractère //le caractère a afficher doit être dans al //Ici tous va bien on reçoit le caractère //dans al et on le lit dans al } } } Maintenant le meme programme mais fait pour afficher ce qui rentre au clavier tant que ENTER n'est pas pressé void main() { asm{ toto: //définiton d'un label pour pouvoir faire un jump mov ah,0 //lecture au clavier sans echo int 16h //clavier BIOS service int 29h //Fonction DOS pour afficher cmp al,0Dh //comparer al (le retour de la lecture au clavier) a //0dh (touche ENTER) jne toto //revenir au label toto si ce n'est pas egal } } N'est-ce pas si simple !!! Mais pourquoi est-ce que que je vous montre des programmes aussi simple, tout simplement car avant d'acceder au HD (Disque dur), FDD (Lecteur de diskette), (a partir du prochain article sur l'asm)... il faut comprendre la logique de l'asm. Devoir !!! (Hehe je le sais que c'est plate mais seulement me lire ne fera pas de vous des programmeurs) Essayer à l'aide de mes petits programme d'utiliser un autre interrupt que 29h pour afficher, prenez plutot un interrupt ou vous pourrez afficher à un endroit précis, ou utilisé tout simplement le meme interrupt et utilisé un autre interrupt pour déplacer le curseur. Bonus : Dans helppc l'interrupt 16,0 (mov ah,0 , int 16h) (clavier BIOS service) est très bien détaillé, seriez vous capable de faire afficher le code hexa de latouche pressé à la place de la touche elle meme ??? (Vraiment facile) Un indice : l'interrupt 16h ne retourne pas seulement al ... Mais l'interrupt 29h utilise al pour affiché .. Encore plus grand indice : il faut seulement faire un petit mov de rien du tout. Encore plus plus grand indice : Fuck, je vous donne pas la réponse dans le bec !! ATTENTION si vous m'etes pas capable de faire les petits exercises vous ne serez jamais capable de me suivre dans les prochains mags, mais comme ca va devenir de plus en plus interessant, un petit sacrifice tout de suite va surement vous aidez pour plus tard !! Pour toute question : I_G_A@Hotmail.com ou ICQ : 8314167 |JaCKeL| . ` ; ; | | .----------------------------------------------------------------.