CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

aide pour un petit prog en assembleur

brolyyoun
brolyyoun
Niveau 8
20 novembre 2003 à 12:18:37

Bonjour,

Au fait je dois creer un petit programme en assembleur qui calcule la formule de Taylor la voici

tg(x) = 1+2*(x-pi/4)+4*(x-pi/4)²/2! + 16*(x-pi*4)exp 3 / 3! +256*(x-pi/4) exp 4 /4!

l´explication du code
tg(x) vaut tangente de 45 a 90, je choisis 48
le " !" correspond au factoriel
donc factoriel 2 vaut 2
factoriel 3 vaut 6
factoriel 4 vaut 24
factoriel 5 vaut 120
et pi on lui donne comme valeur 3,1416( la est mon problème je ne vois pas comment je pourrais calculer des flottants.

Voila , j´espere que vous pourrez m´aidez à résoudre ce problème. :ok:

brolyyoun
brolyyoun
Niveau 8
20 novembre 2003 à 12:54:55

Le premier est le deuxième calcul cava mais les suivants ne vont pas car ca fait un overflow logique 2 exp 16=65536.et au deixème troisième je suis deja a plus 100000 en decimal biensur.

svp aidez moi

brolyyoun
brolyyoun
Niveau 8
20 novembre 2003 à 13:38:17

Personne ne peut m´aider?

JeanYvesYves
JeanYvesYves
Niveau 10
20 novembre 2003 à 13:55:20

oui, pas évident de caluler les formules de taylor.
Surtout qeu je déteste les développements limités !
Je ne sais plus quel est le registre des Float en assembleur, je ne connais que les registres int EAX, EBX, etc....

pur le probleme de l´overflow, en effet, c´est un probleme assez difficile : le mieux est que tu décomposes le dénominateur en plusieurs multiplications plus petites et que tu réduis grace au numérateur des que tu peux.

d´un autre cote tu n es pas obligé d´aller loin dans la développement limité : en général 4 - 5 termes suffisent, et dans ce cas, tu n´es pas obliger de ruser pour les gros calculs.

brolyyoun
brolyyoun
Niveau 8
20 novembre 2003 à 14:02:46

C´est une idée, je vais essayer merci!

brolyyoun
brolyyoun
Niveau 8
20 novembre 2003 à 14:35:48

Quand j´y pense , si j´utilise des registres EAX au lieu des AX je n´aurais logiquement pas d´overflow puisque 2 exp 32 = 4 294 967 296 et pour le pi ce que je peux faire c´est multiplier 3.1415 par 10000 puis divisier par 10000 ? ? qu´est ce que tu en pense?

oxalys
oxalys
Niveau 2
20 novembre 2003 à 16:54:45

Pour PI au lieu de multiplier par 10000 et de diviser ensuite par 10000 tu peux faire un decalage de 14 bits à gauche ce qui revient a multiplier par 16384 puis redecaler les bits è droite ça t´evite de perdre du temps avec mul et div. Quand aux grands nombres il vaut mieux utiliser les registres etendus ( EAX, EBX, ECX, EDX) qui sont en 32 bits voir mieux les registres du copro arithmetique qui sont en 64bits ( il me semble)

Kouic
Kouic
Niveau 9
20 novembre 2003 à 17:11:00

Haaaaa, la programation du FPU ! ! Que de bon et lointains souvenirs.....

En utilisant le FPU tu aura effectivement moins de probleme puisque qu´il gere les données au dela de 64 bits.
Une rapide recherche avec google donne des resultats interessants, comme :
http://webster.cs.ucr.edu/Page_AoALinux/HTML/RealArithmetica2.html

Happy coding ! !

DarkPaladin
DarkPaladin
Niveau 5
20 novembre 2003 à 17:47:23

Les registres 32bits(EAX,EBX,ECX,EDX,...) sont apparuent sur les 386...

Pourquoi ne pas utiliser les instructions SSE,SSE2.(P3-P4)

En plus de faire plusieurs intructions mathématique sur une ligne de code en asm.
T´es pas obliger de casser la tete avec les registres standards et la pile. Sans oublier les Overflows ou les erreurs de calcule.

Tu vas utiliser ton processeurs de facon optimale....

Utilise les Xmm@...

Lightness1024
Lightness1024
Niveau 10
20 novembre 2003 à 17:58:02

ca marche aussi si x est pas au voisinage de zéro ton DL ?

kookii
kookii
Niveau 4
20 novembre 2003 à 18:32:12

non mais tu peux faire un changement de variable

genre si ton x vaut 10 tu fais X=x-10

brolyyoun
brolyyoun
Niveau 8
21 novembre 2003 à 00:54:08

je vais plutot utilisé les registres etendu étant donné que je n´ai aps encore apris a developper avec le copro , c´est le mieux à faire je crois , merci pour vos reponses en tout cas.

DarkPaladin
DarkPaladin
Niveau 5
21 novembre 2003 à 15:14:24

CoProcesseur ?

Il n´y a plus de CoProcesseurs sur les Pentiums.

Kelios
Kelios
Niveau 8
21 novembre 2003 à 15:29:05

Si, mais il est sur le microprocesseur. Il ne se vend plus comme pièce détachée, sous la forme d´un 587, 687 ou 787.

Kelios
---------

Lightness1024
Lightness1024
Niveau 10
21 novembre 2003 à 18:27:14

oui kookii mais ce changement de variable me semble insuffisant étant donné que il va apparaitre un offset qui est pas si simple a calculer ( a moins d´avoir acces a tan(x) ce qui n´est pas le cas puisque justement on en cherche un DL)

kookii
kookii
Niveau 4
21 novembre 2003 à 19:28:23

Euh je vois pas ou ca pose pb lightness. Si tu veux calculer tan(pi) par ex, tu fais le calcul du dl en 0 et tu remplaces le x par x+pi dans la formule donnée en début de post.

brolyyoun
brolyyoun
Niveau 8
30 novembre 2003 à 23:00:46

salut,

Je voudrais utiliser les registres Eax , Ebx, etc... mais je ne vois pas comment faire ? ?est ce que ca marche comme les simples registres AX,BX, etc... ? ?

repondez svp

brolyyoun
brolyyoun
Niveau 8
01 décembre 2003 à 00:00:24

Admettons que je veuillent calculer quelque chose comme ca . ne fait pas attantion aux commentaires.

;-------------------------------------------------
--------
; Donnees -

;-------------------------------------------------
--------
a1 DW 4 ; Cotes de la grande base
b1 DW 2
a2 DW 2 ; Cotes la petite base
b2 DW 1
h DW 10 ; Hauteur de la pyramide tronqu‚e
six DW 6 ; Constante calcul du volume
volume DW ? ; Volume de la pyramide
. code

;-------------------------------------------------
--------
; - procedure principale -

;-------------------------------------------------
--------

main proc
MOV EAX,@data ; Charge les donn‚es
MOV DS, EAX

; calcul de : ( 2a1+a2) b1 dans BX
MOV EAX,a1
ADD EAX,EAX
ADD EAX,a2
MUL b1 ; DX-AX < - ( 2a1+a2)b1
MOV EBX,EAX ; Bx contient le r‚sultat partiel

; calcul de :(a1+2a2)b2 dans AX
MOV EAX,a2
ADD EAX,EAX
ADD EAX,A1
MUL b2 ; DX-AX < - ( a1+2a2)b2
; AX contient le r‚sultat partiel

; calcul de :(2a1+a2)b1 + ( a1+2a2)b2 dans AX

ADD EAX,EBX
; calcul de : 1/6 h [(2a1+a2)b1 +(a1+2a2)b2) dans volume

MUL h
DIV six
MOV volume,EAX

;-------------------------------------------------
--------------
; - Fin du programme -

;-------------------------------------------------
--------------
MOV EAX,4C00h
INT 21h

main endp
end main

quand je compile ca , il me marque un message d´erreur du genre qu´il ne reconnait pas EAX etc...

brolyyoun
brolyyoun
Niveau 8
01 décembre 2003 à 00:15:51

qand j´y pense le problème ne vient pas du fait que je compile le prog avec tasm qui vas jusqua 16 bits alors que moi je dois aller jusqu´a 32bits?

oxalys
oxalys
Niveau 2
01 décembre 2003 à 00:22:49

Je pense plutôt que c´est ton joli MOV DS, EAX qui pose un problème . ..

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment