&&&&&&&&&&&&& *Cours d'asm* * 3 * &&&&&&&&&&&&& Cette fois çi je vais étudier ce qu'il nous reste comme fonctions diverses et variés en asm...à vrais dire pas mal ;). Mais tout d'abord je voudrais vous parlez de qqchose d'assez important: ************* *indicateurs* ************* Les indicateurs se trouvent en fait dans un registre, le registre d'êtat... ces indicateurs, sont tout le temps modifiés par les fonctions...par exemple quand vous faŒtes un cmp ax,bx et bien un indicateur est modifié en conséquence du résultat...et les jumps divers(je, jb...) ne font en fait que tester ces indicateurs...j'avais besoin de faire cette mise au point pour aller dans un raisonnement plus clair de l'asm... :) Ha une dernière chose, comme vous vous en doutez surement les indicateurs sont sur 1 bit donc soit 1 soit 0... ****** *loop* ****** Loop est tout simplement un instruction pour faire une boucle(et oui ça existe aussi en asm c trucs là ;). Vous mettez dans cx le nombre d'iterations un label, vos intructions et pis loop label..... ex: ---------------------------------------------------------------- mov cx,5 ;Met 5 dans cx(il va faire la boucle 5 fois xor ax,ax ;Met ax à 0 jolie_boucle: ;Le label inc ax ;Incremente(+1) eax loop jolie_boucle ;Faite une belle boucle ;ax=5 maintenant ---------------------------------------------------------------- ***** *rep* ***** Rep est une instruction pour......répeter ;). En fait ça marche à peu près comme loop sauf que une seule instruction peut être répétée...mais il existe des sous-types dans le rep... Repz est celui dont on se sert le plus souvent car il permet de comparer les chaines de caractère accompagné de l'instruction cmpsb. ex: ------------------------------------------- mov cx,8 ;TESTE 8 CARACTERES lea si,chaine1 ;POINTE SUR CHAINE1 lea di,chaine2 ;POINTE SUR CHAINE2 repz cmpsb ;REPETE TANT QUE CX!=0 ;OU QUE ZF==1 jz chaine_egales ------------------------------------------- Houla, ça se complexe, mais quesque que ce ZF???? Et bien c'est tout simplement un indicateur...en fait la fonction cmpsb compare les pointeurs si et di et quand elle trouve un diffèrence elle met cet indicateur à 0 donc à la fin de la fonction si aucune diffèrence n'a été trouvé ce registre sera toujours à 1 et donc jz qui teste cet indicateur fera le saut. (oufffffff j'ai réussi ;)). ************ *inc et dec* ************ Inc et dec permettent respectivement d'augmenter de 1 ou de soustraire un à un registre.... ******* *movsb* ******* Movs deplace la valeur pointé par DS:SI à celle pointé par ES:DI...movsb deplace un octect...movsw deplace un mot(2 octects) et movsd deplace un double mot(4 octets). ******* *cmpsb* ******* Mêmme chose ici, cmpsb compare la valeure pointé par DS:SI à celle pointé par ES:DI....et ici aussi il y a cmpsw et cmpsd.... ***** *mul* ***** Mul multiplie la variable eax par celle précisé après mul...rien de bien compliqué en fait ex: --------------------------------------- mov eax,2 ;Met dans eax la valeure 2 mul 5 ;Multiplie par 5 ;eax contient 10 --------------------------------------- ***** *div* ***** Div fonctionne de la mêmme façon que mul excepté que le reste est placé dans edx..... ********* *add&sub* ********* Add et sub permettent d'......ajouter de de soustraire(non? vous aviez deviné?). ex: -------- add ax,3 sub ax,1 -------- Bon voilà qui est suffisant et qui vous suffira je pense, évidemment l'asm dispose de beaucoup plus de fonctions mais elles ne sont pas toutes très interessantes.....mais si vous desirez en savoir plus je vous conseille d'acheter un bouquin ;).