Aide assembleur 8086 - ASM - Programmation
Marsh Posté le 08-01-2014 à 00:54:19
Eh bien, non.
ADD AX, -1, est exécuté autant de fois que JNE Boucle. Bien sûr la dernière fois, le saut n'a pas lieu, mais le test à lieu.
Donc, cela fait 16 cycles pour JNE avec saut, et 4 cycles pour le JNE sans le saut. Ces 4 cycles ne sont pas à négliger car cela fait autant que le nombre de cycles de l'addition.
Pour ce qui est du nombre, si on commençait au nombre 2, alors on aurait : 2, 1, 0, donc une fois de plus que le nombre initial. Donc 256+1=257.
Marsh Posté le 08-01-2014 à 01:02:35
olivthill a écrit : Eh bien, non. |
Bonjour et merci.
En considérant que la dernière fois le saut n'as pas lieu cela fait 256*16 cycles + 258*4 cycles pour le calcul du temps?
Ou dois je m'en tenir au fait que la boucle est de 16 cycle pour simplifier (dans l'énoncé de mon sujet la boucle jne est à 16 uc)
Marsh Posté le 08-01-2014 à 01:52:25
Personnellement, je ne simplifierais pas, mais je ne connais pas le contexte.
J'ai pris les données sur le timing dans mon cher vieux livre intitulé PC Magazine Programmer's Technical Reference: The Processor and Coprocessor, de l'excellent Robert L. Hummel, publié par Ziff-Davis Press, en 1992, page 357 pour l'addition, et page 438 pour le saut conditionnel.
Mon calcul personnel me donne :
Debut: MOV AX, Data ; 10 |
Total = 10+2+10+4*257+16*256+4+10+51 = 5211
Marsh Posté le 08-01-2014 à 02:00:43
olivthill a écrit : Personnellement, je ne simplifierais pas, mais je ne connais pas le contexte. |
Merci pour l'aide et la réference
Marsh Posté le 08-01-2014 à 11:33:06
olivthill a écrit : Personnellement, je ne simplifierais pas, mais je ne connais pas le contexte.
Total = 10+2+10+4*257+16*256+4+10+51 = 5211 |
L'énoncé de mon exercice présume que:
Debut: MOV AX, Data ; 10 |
soit un Total = 10+2+10+4*256+16*255+4+4+52 = 5186
Et la formule serait (considérant x=Tempo)
10+2+10+4x+16(x-1)+4+4+52 |
Marsh Posté le 08-01-2014 à 00:12:56
ASSUME CS:Code, DS:Data
Bonjour je dois évaluer le temps d'exécution de ce programme et je présume qu'il exécutera "Boucle : ADD AX , -1" 256 fois et "JNE Boucle" 257 fois.
Quelqu'un pourrait me le confirmer s'il vous plait?
Data SEGMENT
Tempo DW 0100H
Data ENDS
Code SEGMENT
Debut: MOV AX , Data
MOV DS , AX
MOV AX , Tempo
Boucle: ADD AX , -1
JNE Boucle
MOV AH , 4CH
INT 21H
Code ENDS
END Debut