Je suis très nouveau à l'assemblée et maintenant j'essaye de comprendre comment cmp
fonctionne. Voici ce qui est écrit dans wiki:Comprendre l'instruction de cmp
cmp arg2, arg1
effectue une opération de comparaison entre arg1 et arg2. La comparaison est effectuée par une soustraction (signée) de arg2 de arg1, dont les résultats peuvent être appelés Temp. La température est ensuite supprimée.
Qu'est-ce que cela signifie "Temp est ensuite supprimé"? Où est-il stocké? Comment puis-je accéder à ce résultat de la comparaison? Quelqu'un peut-il l'expliquer?
@Carcigenicate * ax? Cos AFAIK c'est souvent utilisé avec 'je'. Mais je dois savoir si la condition était vraie ou fausse. –
Notez que vous faites référence à * wikibooks *, qui est une collection particulière de * wikis *. Un * wiki * est juste un type de site Web que les utilisateurs peuvent modifier. Et en tant que tel, wikibooks n'est certainement pas la principale ressource pour les définitions d'assemblages x86 (celle-ci est un bon exemple pourquoi il est parfois préférable de s'appuyer sur une documentation experte que la documentation générée par l'utilisateur). Utilisez google pour trouver une autre source, et interprétez cela! –
'je' n'a pas besoin de savoir si la condition est vraie ou fausse,' je' est l'alias de 'jz', et' jz' est 'jump si zero flag' est positionné. Donc quelle que soit la dernière instruction qui ait modifié le ZF, celui-ci prédit que le prochain 'je' prendra un saut (ZF = 1) ou non (ZF = 0). Une des conséquences amusantes des nouveaux programmeurs asm qui ne l'obtiennent pas, est d'écrire du code comme 'sub ax, 1'' cmp ax, 0' 'jne myLoop' ... que' cmp' n'est pas nécessaire, comme précédent 'sub' mettra déjà ZF de manière suffisante pour ce travail 'jne' (mais plus logique serait d'utiliser l'alias' jnz myLoop', c'est-à-dire que l'on lit comme "jump not zero loop" - presque anglais. – Ped7g