Aide assembleur 8086

Aide assembleur 8086 - ASM - Programmation

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

Reply

Marsh Posté le 08-01-2014 à 00:12:56   

Reply

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.

Reply

Marsh Posté le 08-01-2014 à 01:02:35    

olivthill a écrit :

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.


 
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)


Message édité par kunta-gwada le 08-01-2014 à 01:16:29
Reply

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
           MOV DS , AX   ; 2
           MOV AX, Tempo ; 10
Boucle: ADD AX , -1      ; 4 x 257
           JNE Boucle    ; 16 x 256 + 4 x 1
           MOV AH, 4CH   ; 10
           INT 21H       ; 51

Total = 10+2+10+4*257+16*256+4+10+51 = 5211

Message cité 2 fois
Message édité par olivthill le 08-01-2014 à 02:05:21
Reply

Marsh Posté le 08-01-2014 à 02:00:43    

olivthill a écrit :

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.


Merci pour l'aide et la réference

Reply

Marsh Posté le 08-01-2014 à 11:33:06    

olivthill a écrit :

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
           MOV DS , AX   ; 2
           MOV AX, Tempo ; 10
Boucle: ADD AX , -1      ; 4 x 257
           JNE Boucle    ; 16 x 256 + 4 x 1
           MOV AH, 4CH   ; 10
           INT 21H       ; 51

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
           MOV DS , AX   ; 2
           MOV AX, Tempo ; 10
Boucle: ADD AX , -1      ; 4 x 257
           JNE Boucle    ; 16 x 256 + 4 x 1
           MOV AH, 4CH   ; 4
           INT 21H       ; 52

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
soit 20x+66


Message édité par kunta-gwada le 09-01-2014 à 03:24:34
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed