Ce que j'ai trouvé...


Processus de compilation assembleur.

tranfers.gif (3585 bytes)

Bien attendu, lors de la compilation il y a une phase de liaison (linkage) pour associer les différents fichiers d'un projet ensemble.

Opérateurs

OR n, m
	met le résultat de n OR m dans n
	met le résutlat de n XOR m dans n
XOR n, m
		
Voir : Opérateur mathématique

Souvent utilisé: XOR n, n qui met à 0 la variable 'n'.

Comment écrire un nombre entier à l'écran

  1. [cx = 0] Mettre le compteur de chiffre à 0
  2. [ax = n] Saisir le nombre
  3. division: [div ax, 10] Diviser son contenu par 10
  4. [push dx] Empiler le reste
  5. [inc cx] Incrémenter le nombre de chiffre
  6. [cmp ax
    jnz division] Recommencer étape 3 tant que ax n'est pas égale à 0
  7. ecrire: [pop ax] Dépiler la pile
  8. Écrire le chiffre de ax (ax + caractère ascii '0') à l'écran
  9. [loop ecrire] cx fois... (le premier sort, donc le chiffre le plus à gauche)

Exemple

     AX           DX   PILE         CX 
1-2. 0432                           0000
3-5. 0043      => 0002 0002         0001
3-5. 0004      => 0003 00030002     0002
3-5. 0000      => 0004 000400030002 0003  
7-9. 0004      <=      00030002     0002  
7-9. 0003      <=      0002         0001  
7-9. 0002      <=                   0000  
					

VIDÉO:

Adresse VGA: ES:DI = A000:0000 (320x200 = 64000 pixel)

Hyperliens...

ASM Dump

objdump -d -M intel /bin/ls | less

Comparaison C++/ASM

# C++
if (str2 != NULL) {
 *str2 = 0;
}

# ASM
CMP str2, 0
JE (+nb instructions pour exécuter *str2=0.)
# code pour str2=0
# adresse du JE.