Turbo assembleur 5.0

cs_andromida Messages postés 14 Date d'inscription vendredi 15 octobre 2010 Statut Membre Dernière intervention 9 novembre 2010 - 19 oct. 2010 à 19:18
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 - 29 oct. 2010 à 01:03
S.V.P aidez moi a écrire un code tasm qui fait:
*saisir 20 entiers comme etant des ages dans un tableau
*determiner en un seul parcours le maximum et le minimum
*calculer la moyenne de ces 20 valeurs
*afficher le max , le min et la moyenne comme ça:
le max est:
le min est:
la moyenne est:

c'est urgent svp aidez moi
A voir également:

42 réponses

ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
22 oct. 2010 à 17:07
J'allais oublier:
Google avec une recherche comme "tasm source conversion" ou autre mots,ça va bien.
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
22 oct. 2010 à 18:24
en cherchant un peu on trouve:
wvsprintf présente dans la librairie déja utiliser par le source pour la messagebox.
0
cs_andromida Messages postés 14 Date d'inscription vendredi 15 octobre 2010 Statut Membre Dernière intervention 9 novembre 2010 1
23 oct. 2010 à 22:41
Eyy ou sont les génies de programmation
puisque tasm ne lit que les codes ASCII j'ai remarqué que le code ASCII d'un chiffre est egal au code ASCII du chiffre en caractère moins le code ASCII du zéro qui est 48 donc:
code ASCII entier= code ASCII caractère-48
c'est ça le truc de saisie
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
24 oct. 2010 à 08:07
génial,il te reste a connaitre la difference entre une minuscule et une majuscule ( + - nombre).La réponse est top secret.
Pour l'avoir , il faut mettre la main sur une table a skis.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
26 oct. 2010 à 10:50
re,

et oui,
'a'='a', 'b'='a'+1, 'c'='a'+2,...
'A'='A', 'B'='A'+1, 'C'='A'+2,...
'0'='0', '1'='0'+1,...

un désassemblage de
mov al,'a'
mov ah,'A'
mov cl,'0'
donnera les valeurs ascii.

ascii->dec:
xor ax,ax
push byte 0
mov bp,sp

.1
mov al,ascii_decimal
sub al,'0'
add [bp],ax; tester <= 9 avant ajout.
; suivant -> .1

@++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
26 oct. 2010 à 10:52
oups, multiplier [bp] par dix avant ajout.
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
26 oct. 2010 à 17:41
ATTENTION!
bp est dédié au maintien du cadre du proc.
ON ne l'utilise PAS.ESP non plus
si on le modifie,le proc se plante.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
26 oct. 2010 à 18:44
si on le modifie,le proc se plante.
C'est faux mais ce n'est pas pour autant qu'on peut faire ce qu'on veut avec : ces registres sont faits pour gérer la pile et rien d'autre.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
26 oct. 2010 à 20:40
Faux ?
A ton avis Elles servent a quoi ces deux lignes présentes dans tous les proc ?

push ebp
mov ebp,esp

ebp joue le role du gardien de esp et meme si la pile est déséquilibré ebp rétablit sa valeur.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
26 oct. 2010 à 22:06
Les deux lignes que tu présentes servent à mettre en place un stack-frame (utile pour accéder facilement à des objets sur le stack quand tu as empilé d'autres choses dessus mais que tu ne sais pas combien).

ESP n'a pas pour vocation d'être modifié comme ça (risque de GPF s'il pointe n'importe où) mais si tu fais ça, ça ne t'explosera pas à la figure :
mov eax, esp
mov esp, 0xDEADBEEF
add bx, 27
mov esp, eax
Mais bon faut pas espérer pusher un truc dans cette config non plus

Pour résumer : je suis d'accord avec toi sur le fond mais pas sur l'explication

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
26 oct. 2010 à 22:38
re,

oui, on est pas en C ici donc la stackframe, on s'en fout. En asm, on fait ce qu'on veut avec ce qu'on veut, le tout étant de savoir ce que l'on fait...

@++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
26 oct. 2010 à 22:40
pourquoi devrais-je sauver l'initialisation de bp alors qu'il n'est pas encore initialisé ?
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
27 oct. 2010 à 08:32
A l'interieur d'un proc,Tasm rajoute un stacframe.

machin PROC
;ici le compilateur rajoute
push ebp ;instruction stackframe
mov ebp,esp
+...
;debut du code écrit
Ne pas modifier ebp içi.....

;--- fin du code écrit ---
mov esp,ebp ; instruction stackframe
* esp sert a retrouver l'@ de retour
+....
machin endp

les parties rajoutées par le compilateur constitues le stack frame
a ghuysmans99: tes quatre lignes ne modifient pas ebp.Est tu sur de savoir de quoi tu causes ? .Relie les mails.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
27 oct. 2010 à 09:20
Tu remplacerais ESP par EBP et ça serait la même chose ... De toutes façons il n'y a pas à discuter là-dessus : pas touche à (E)BP et (E)SP pour autre chose que la gestion de la pile.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
27 oct. 2010 à 11:29
se recadrer sur le sujet c'est bien.Le reste n'est que supputation,on ne peut pas modifier le fonctionnement du compilateur.
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
27 oct. 2010 à 13:03
re,


je persiste quand même, avec l'asm, tu fais ce que tu veux, c'est pourquoi je n'aime pas que l'assembleur fasse des trucs dans mon dos avec les entêtes. On peut les désactiver d'ailleurs.

on ne peut pas parler de ebp et esp en 16 bits donc impossible de remplacer l'un par l'autre car le mode réel n'accepte pas les acces memoire du type "mov ax,[sp]"

je trouve plus dangereux de faire des acces [sp-?] même en mode protégé, que de faire ce que l'on veut de bp. Ca fera uniquement planter les debuggers qui remontent les stackframes ;-)

@++
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
27 oct. 2010 à 14:59

je persiste quand même, avec l'asm, tu fais ce que tu veux

Les bugs auront raison de cette affirmation.
Le c le c++(avec son abominable syntaxe) n'ont pas été fait que pour se céer des ennuis.
c'est vrai que j'ai tendance à mélanger bp ebp et sp esp.Le stackframe des deux est construit pareil à la différence près des tailles.
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
27 oct. 2010 à 15:28
pas de bugs si tu sais ce que tu fais. Les prologues et épilogues sont modifiables à volonté. Tu peux tout a fait avoir des foncrions de type C et des fonctions de type pascal ou autres, ce n'est qu'une question de déclaration.
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
27 oct. 2010 à 17:12
Dans ton code, tu n'utilises pas bp donc mon ajout fonctionnera parfaitement et sans bugs.

A noter également que certaines fonctions bios et dos utilisent bp pour passer un paramètre qui n'a rien a voir avec une stackframe.

En conclusion, je dirais oui pour ne pas oublier de sauvegarder les registres qui doivent l'être dans un mode de prog donné. Mais non pour une phobie de l'utilisation de bp.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 oct. 2010 à 22:54
ON ajoutera aussi qu'un compilo C a l'option 'NO Stackframe' pour la compil, c'est ce qu'on met d'habitude avec 'Full Optimisation' pour la release finale.
Réglé ainsi et qu'on sort le listing ASM du compilo, on voit que EBP (RBP) est employé comme nimporte quel registre.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous