2016-04-24 1 views
0

J'explorais le jeu d'instructions 8086 et écrivais des codes d'assemblage simples dans emu8086. J'ai compris toutes les instructions MOV, ADD et autres jusqu'à ce que je rencontre l'instruction LOOP. La boucle est convertie en E2, c'est bien. Mais pour que l'étiquette se branche, comment l'assembleur le convertit-il? Si le code est simple, plusieurs fois 'label' est converti en FC. Parfois à FA, F8, et d'autres. Ce serait très appréciable si vous discutiez du mécanisme de conversion du nom de l'étiquette en code machine correspondant.Comment l'assembleur 8086 convertit l'étiquette en opcode?

Merci.

Répondre

2

Comme expliqué sur this page, l'étiquette est juste un mnémonique pour nous (programmeurs). L'assembleur traduit cette étiquette en un nombre, par ex. un décalage à ajouter au pointeur d'instruction pour passer à, alors que CX n'est pas nul. Dans les exemples que vous montrez, ces décalages sont des nombres négatifs (bit de signe défini sur un). Il saute donc quelques instructions, comme on pourrait s'y attendre dans une boucle.