En d'autres termes, est-ce que je pourrais avoir besoin de cette instruction?Pourquoi l'instruction REP LODS AL existe-t-elle?
d'Intel Manuel d'instructions, c'est ce que l'instruction faire:
Charge (E) octets CX de DS: [(E) SI] à AL.
Prenons l'exemple suivant dans MSNA:
section .data
src: db 0, 1, 2, 3
section .code
mov esi, src
mov ecx, 4
rep lodsb ; mov al, byte[esi + ecx -1]; ecx++
Alors que l'instruction est en cours d'exécution rep lodsb
, je ne dispose d'aucun contrôle sur la valeur chargée dans al
. Tout ce que je peux faire est d'attendre, jusqu'à ce que l'instruction se termine pour obtenir la dernière valeur de al
, ce qui, bien sûr, je peux obtenir directement, sans la boucle.
La même question vaut pour le reste de la famille: REP LODS AX
, REP LODS EAX
et REP LODS RAX
.
Mon ancien Microsoft MASM « Guide du programmeur » dit que 'LODS' est le seul dans cette famille d'instructions qui ne prend pas un préfixe de répétition. –
Il existe parce qu'il était trop cher pour le faire exister. Vous ne pouvez pas vous permettre de faire des petites choses quand vous devez construire un processeur 16 bits à partir de seulement 20000 transistors. –
@WeatherVane, je pense que ce n'est pas à MASM de décider pour nous, LOL –