COURBE DU DRAGON

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 29 juin 2005 à 20:46
bibicha27 Messages postés 1 Date d'inscription samedi 5 avril 2008 Statut Membre Dernière intervention 9 avril 2008 - 9 avril 2008 à 22:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/32409-courbe-du-dragon

bibicha27 Messages postés 1 Date d'inscription samedi 5 avril 2008 Statut Membre Dernière intervention 9 avril 2008
9 avril 2008 à 22:26
slt stp ta pas un code mais pluto récursif jon ai vrément besoin jattend votre réponse.
cs_badr_info Messages postés 1 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 8 janvier 2006
8 janv. 2006 à 01:19
Avec quoi tu l'a compilé? ya t'il une methodes pour que ton
code se fais a n'importe quel profondeurs..est que tous les
calcules portant sur les nombres passe par la FPU ?
cs_pasty Messages postés 11 Date d'inscription lundi 2 février 2004 Statut Membre Dernière intervention 11 juillet 2009
30 juin 2005 à 19:42
Pour la compilation j'ai utilisé A86.
L'algorithme n'est en effet pas récursif. Le programme execute une boucle de 20000h (registre ax et cl) itérations. A chaque itération:
1 On modifie dl en fonction du compteur de boucle. On remplace x par x+1 ou x-1 suivant la valeur du bit de poids faible de dl.
2 on dessine un point en (x,y)
3 on modifie dl, on remplace y par y-1 ou y+1
4 on dessine un point en (x,y)
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
30 juin 2005 à 14:12
Pas de récursivité si tu regardes bien (pas de call), tout est itératif
Mais j'ai un peu de mal à comprendre le code moi aussi...
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
30 juin 2005 à 09:12
Avec NASM j'obtiens un exécutable de 98 octets (à condition de préciser byte devant 3 arguments (byte au lieu de word par défaut)
00000000 B81200 mov ax,0x12
00000003 CD10 int 0x10
00000005 B800A0 mov ax,0xa000
00000008 8ED8 mov ds,ax
0000000A B1FF mov cl,0xff
0000000C B80000 mov ax,0x0
0000000F BA0020 mov dx,0x2000
00000012 BEA51A mov si,0x1aa5
00000015 88CD mov ch,cl
00000017 89C3 mov bx,ax
00000019 D0ED shr ch,1
0000001B D1DB rcr bx,1
0000001D 73FA jnc 0x19
0000001F D1EB shr bx,1
00000021 7203 jc 0x26
00000023 80F201 xor dl,0x1
00000026 08D2 or dl,dl
00000028 7508 jnz 0x32
0000002A D0CE ror dh,1
0000002C 83D600 adc si,byte +0x0
0000002F E90500 jmp 0x37
00000032 D0C6 rol dh,1
00000034 83DE00 sbb si,byte +0x0
00000037 0834 or [si],dh
00000039 A801 test al,0x1
0000003B 7403 jz 0x40
0000003D 80F201 xor dl,0x1
00000040 83C650 add si,byte +0x50
00000043 08D2 or dl,dl
00000045 7504 jnz 0x4b
00000047 81EEA000 sub si,0xa0
0000004B 0834 or [si],dh
0000004D 40 inc ax
0000004E 75C5 jnz 0x15
00000050 FEC1 inc cl
00000052 75C1 jnz 0x15
00000054 B400 mov ah,0x0
00000056 CD16 int 0x16
00000058 B80300 mov ax,0x3
0000005B CD10 int 0x10
0000005D B8004C mov ax,0x4c00
00000060 CD21 int 0x21

Ce code est très compact compte tenu de la "complexité" de l'image obtenue. Question subsidiaire: quelle serait la taille de cette image bitmap ?

Dommage que le code ne soit pas commenté. Je suppose que le processus est récursif et qu'une constante définit la finesse du motif.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
29 juin 2005 à 20:46
Avec quoi tu l'a compilé? J'ai fait avec tasm et j'obtiens un exe de 610 octets alors que ton exécutable n'en fait que 98