Quel le genre de programmation où l'assembleur sert vraiment?

Fildomen Messages postés 805 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 30 octobre 2010 - 15 juil. 2004 à 21:10
ouldm8 Messages postés 13 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 6 janvier 2006 - 5 janv. 2006 à 20:59
salut
est-ce-que l'asm peut tenir à côté des langages évolués? et quel sont les domaines où il est le meilleur? il faut compter la longeur du temps de la création de son projet. peut-il créer des jeux vidéo (minimum 1 an, bah on sait que tout les langages peuvent le créer mais reste le plus recommandé)?

merci de me répondre

14 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 juil. 2004 à 21:43
Il est inconcevable de créer aujourd'hui un jeu vidéo en assembleur, ca prendrait trop longtemps, et ca n'est pas vraiment utile. En fait, seules les parties du programme qui doit être très efficaces sont écrites en assembleur, par exemple pour les calculs.
C'est aussi le genre d'arguments qui me donne des états d'âmes à apprendre l'asm, je ne suis pas persuadé de l'utilité finale.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 juil. 2004 à 23:48
Allez au boulot et cesse de te poser de pareilles questions. Tu as deja vu des connaissances inutiles ? pas moi.
L'ASM 32 bits s'apprend tout seul, pas de type de variable, de cast ni aucun truc verbeux, juste une serie de mnemonics a se rappeler et comme ils sont evidents tu les sais en 1 mois maxi en pratiquant 1 heure par jour.
Regarde toutes les classe BigInt qu'on trouve ici ou la, pas une n'est viable tant qu'elle sera en C++, fais une boucle de division et le resultat 1/4 h apres. Simple exemple ou asm est indispensable et on en trouvera tant d'autres.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Fildomen Messages postés 805 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 30 octobre 2010
16 juil. 2004 à 01:57
je fais +qu'une heure par jour, et je suis pas le type qui a la cervelle bloqué, je commencais la programmation vb à 8 , maintenant j'ai eu marre de ce langage qui est le plus faible, mais l'asm m'a fait subir des dégats psychiques "Eh oui" , Le .IF ca marche pas, mais il reste quoi de plus facile que l'universel if (je parle pour masm, le cmp pour les autre, je me casse pas la tete). et qui me fait la vertige, c'est que ce language ne fait pas différence entre dim a as integer et dim a as string, il prends tout en string, rassembler des nombres(ascii), je pense que je vais laisser ces trucs à l'université, et je passe à des trucs de web (asp).j'ai deux question
-Quel est le logiciel pour programmer en asp? est-ce-fourni avec le visual studio??
-On étudie l'asm en univérsité? (branche d'un programmeur)

merci

ciao... "Brunews :-) "
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 juil. 2004 à 02:14
'prends tout en string', ben visiblement t'as loupe une etape.
Aucune notion de string en ASM ni C, langages bas niveaux ne connaissent que des adresses memoire et des registres, le reste est de la philo.
Tres bien le script et asp, clic clic dans dreamweaver et s'ecrit tout seul. Bien sur la paie ne sera pas la meme, mais on ne peut pas pretendre au clic et a l'argent du code.

ciao...
BruNews, Admin CS, MVP Visual C++
0

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

Posez votre question
Fildomen Messages postés 805 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 30 octobre 2010
16 juil. 2004 à 04:15
Ah, merci mon brunews, tu ma tout expliqué en 1 seul ligne, "langages bas niveaux ne connaissent que des adresses memoire et des registres", alors je constate que si j'ai un texte "2223" et je veux le convertir en un nombre, je doit mettre tout dans une variable 16bit qui contient 2223, et c'est de mes propres calcules, l'asm ne sait rien "RIEN" que placer des valeurs et c'est à nous de tout gerer ??? si c'est vraiment comme ca, je suis soulagé, moi qui cherchait des commandes pour changer une variable de string à integer.pfffffff, quel idiot. mais attends, ce que je viens de dire est vrai ???
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
16 juil. 2004 à 11:51
fait chier les bugs Nix, ecrire 1 demi heure pour ce retrouver avec un message d'erreur ca fout les boules
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
16 juil. 2004 à 12:00
Dans ce cas il y a le bouton "Précedent", non?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 juil. 2004 à 12:04
Et surtout faire un copier du texte tape avant d'envoyer.

ciao...
BruNews, Admin CS, MVP Visual C++
0
ouldm8 Messages postés 13 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 6 janvier 2006
5 janv. 2006 à 14:45
Bonjour tout le monde, je voudrais savoir si quelqu'un pourras m'aider. Je suis vraiment debutant en assembleur : jamais fait du tout, un peu a l'ecole...
On a des tp la dessus. On travaille sur le lengage Motorolla 68000.
Je voudrais du help....

MOCTAR www.babasoft.4tcom
0
ouldm8 Messages postés 13 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 6 janvier 2006
5 janv. 2006 à 14:53
voila, je vous envoie le code en C ainsi que ce que j'ai fait pour passer en asm.
Veuillez me corriger svp....

#include <stdio.h>
#include <string.h>

void traitement(char* chaine1, char* chaine2, int type, int* length)
{

XDEF _traitement
_traitement:

MOVE.L (4,A7) , D0 //ON MET CHAINE1 DANS D0
MOVE.L (8,A7) , D1 //ON MET CHAINE2 DANS D1
MOVE.L (12,A7) , D2 //ON MET TYPE DANS D2
MOVE.L (16,A7) , D3 //ON MET LENGTH DANS D3

MOVE.L A0, -(A7) //ON SAUVEGARDE L'ETAT DE A0
MOVE.L D0, A0 //ON MET D0 DANS A0

MOVE.L A1, -(A7) //ON SAUVEGARDE L'ETAT DE A1
MOVE.L D1, A1 //ON MET D1 DANS A1



BRA.S loop_condition //ON SE BRANCHE DIRECTEMENT SUR LA CONDITION DU WHILE



yes_majuscule :
//LA DIFFERENCE ENTRE UNE MINUS ET SA MAJUS EST : 32 CARACTERES...
ADD.B #32, (A0)
MOVE.L (A0), (A1)
SUB.B #32, (A0)
RTS


if_majuscule2 :
CMP.B (A0), 5A
BLE.S yes_majuscule //SI C'EST INF. A 5A => OK
BGT.S non_fin_mot3 //SINON, ON COPIE UN A UN, I.E A non_fin_mot3
RTS


if_majuscule1 :
CMP.B (A0), 41
BEQ.S if_majuscule2 //SI C'EST SUP. A 41 => OK
BLT.S non_fin_mot3 //SINON, ON COPIE UN A UN, I.E A non_fin_mot3
RTS


execution_MAJUS:
BRA.S if_majuscule1 //ON MET EN MAJUSCULE LA LETTRE

RTS


yes_minuscule :
//LA DIFFERENCE ENTRE UNE MINUS ET SA MAJUS EST : 32 CARACTERES (EN DECIMALE)...
SUB.B #32, (A0)
MOVE.L (A0), (A1)
ADD.B #32, (A0)
RTS


if_minuscule2 :
CMP.B (A0), 7A
BLE.S yes_minuscule //SI C'EST INF. A 7A => OK
BGT.S non_fin_mot3 //SINON, ON COPIE UN A UN, I.E A non_fin_mot3
RTS


if_minuscule1 :
CMP.B (A0), 61
BGE.S if_minuscule2 //SI C'EST SUP. A 61 => OK
BLT.S non_fin_mot3 //SINON, ON COPIE UN A UN, I.E A non_fin_mot3
RTS



execution_MINUS:
BRA.S if_minuscule1 //ON MET EN MINUSCULE LA LETTRE
RTS



non_fin_mot1:

ADD.L #1, A2
CMP.B (D2), #0X00 //SI TYPE==0
BGE.S execution_MAJUS //BGE = SI C'EST EGAL
BNE.S non_fin_mot2 //SI type!=0 => ON VA SUR LE 2ND CAS
RTS



non_fin_mot2:
CMP.L (D2), #01 //SI TYPE==1
BGE.S execution_MINUS //BGE = SI C'EST EGAL
BNE.S non_fin_mot3 //SI type!=1 => ON VA SUR LE 3EME CAS
RTS



non_fin_mot3:

MOVE.L (A0), (A1) //ON FAIT UNE COPIE DIRECTE DE CHAINE1 DANS CHAINE2
//LA, ON EST DANS LE CAS PAR DEFAUT. ALORS, ON COPIE LA CHAINE TELLE QU'ELLE
ADD.L #01, D3 // on incremente length...

RTS




loop_chaine:
CMP.B (A0), #0X20 //CARACTERE ESCAPE = 20
BNE.S non_fin_mot1 //BNE = SI C'EST DIFFERENT
RTS




loop_condition:
ADD.L #1, A0 //NON PAS ADD.L (D3), ..
CMP.L (A0), #0X00 //'\0' = NULL = 00
BNE.S loop_chaine //BNE = SI C'EST DIFFERENT
RTS



while(chaine1[*length] != '\0')
{

if(chaine1[*length] == ' ')
{


chaine2[*length] = '\0';

break;


}
else
{

switch(type)
{

case 0: chaine2[*length] = toupper(chaine1[*length]); break;

case 1: chaine2[*length] = tolower(chaine1[*length]); break;

default :chaine2[*length] = chaine1[*length];

}




(*length)++;



}


}

}

void saisie()
{
char chaine1[200];
int type;
int longueur;
char chaine2[200];
printf("entrer une chaine, puis appuyer sur entree...\n");
gets(chaine1);
longueur = strlen(chaine1);
printf("pour convertir votre chaine en majuscule tapez 0\n");
printf("pour convertir votre chaine en miniscule tapez 1\n");
printf("sinon tapez un autre digit\n");
scanf("%d",&type);
printf("le type de conversion est %d",type );
traitement(chaine1, chaine2, type, &longueur) ;
printf("\n%s", chaine1);
printf("\n%s", chaine2);
printf("\n%d",longueur);
}
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 janv. 2006 à 15:10
le Motorolla 68000 n'est pas un language, c'est un microprocesseur....
après, je dirai que si ce sont tes TP, le but d'un forum n'es tpas de faire tes devoirs a ta place....

de plus, tu fournis tout un code, sans dire ce qui te bloque, ce qui est faux, ou quoi que ce soit d'autre.....

au fait, pourquoi ne pas avoir créé un nouveau Topic ??

Renfield
Admin CodeS-SourceS - MVP Visual Basic
0
ouldm8 Messages postés 13 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 6 janvier 2006
5 janv. 2006 à 17:10
Bonjour et merci sur cette rapide intevention.

Tout d'abord, comme j'ai dit je suis un débutant, alors je peux faire
des confusions. : veuillez me mettre sur la bonne voie svp.

Segundo, ce n'est pas un devoir, mais plutot comme je l'ai dit un exemple que j'ai voulu traiter moi-meme.



Le code est mis sur un topic déjà. Je ne connais po l'adresse mais vous pouvez le voir dans la catégo. CHAINE DE CARACTERES.

Thank you..

MOCTAR, May i help you...

babasoft.4t.com
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 janv. 2006 à 17:17
catégorie "chaines de caractères" ?

mais que racontes-tu .. ??

je t'invites simplement a reposer une nouvelle question.... rien de plus
ici pour le faire : http://www.asmfr.com/forum.v2.aspx?ajout=1

Renfield
Admin CodeS-SourceS - MVP Visual Basic
0
ouldm8 Messages postés 13 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 6 janvier 2006
5 janv. 2006 à 20:59
Je suis désolé, mais j'arrive pas à le poster. Je te fais une desription de ce que je veux :

J'ai la fonction c suivante :

Cette fonction prend en paramètres une chaine qui sera modifié et stockée dans une autre chaine chaine2type et renvoie aussi sa longueur length.

MERCI ET STP HELP-ME C URGENT!!!







#include

#include



void traitement(char* chaine1, char* chaine2, int type, int* length)

{


while(chaine1[*length] != '\0')


{


if(chaine1[*length] == ' ')


{


chaine2[*length] = '\0';


break;


}


else


{


switch(type)


{


case 0: chaine2[*length] = toupper(chaine1[*length]); break;


case 1: chaine2[*length] = tolower(chaine1[*length]); break;


default :chaine2[*length] = chaine1[*length];


}


(*length)++;


}


}


}









SI TU VEUX VOILA CE QUE J'AI ESSAYE AVEC L'ASSEMBLEUR :

(C PAS ENCORE TOUT COMPLET...)



XDEF _traitement

_traitement:



MOVE.L (4,A7) ,
D0 //ON MET CHAINE1
DANS D0

MOVE.L (8,A7) ,
D1 //ON MET CHAINE2 DANS D1


MOVE.L (12,A7) , D2 //ON MET TYPE DANS D2

MOVE.L (16,A7) ,
D3 //ON MET LENGTH DANS D3



MOVE.L A0, -(A7)
//ON
SAUVEGARDE L'ETAT DE A0

MOVE.L D0,
A0
//ON MET D0 DANS A0



MOVE.L A1, -(A7)
//ON
SAUVEGARDE L'ETAT DE A1

MOVE.L D1,
A1
//ON MET D1 DANS A1







BRA.S
loop_condition //ON SE BRANCHE
DIRECTEMENT SUR LA CONDITION DU WHILE







yes_majuscule :


//LA
DIFFERENCE ENTRE UNE MINUS ET SA MAJUS EST : 32 CARACTERES...

ADD.B #32, (A0)


MOVE.L (A0), (A1)


SUB.B #32, (A0)

RTS





if_majuscule2 :

CMP.B (A0), 5A


BLE.S yes_majuscule

//SI C'EST INF. A 5A => OK


BGT.S non_fin_mot3

//SINON, ON COPIE UN A UN, I.E A non_fin_mot3

RTS





if_majuscule1 :

CMP.B (A0), 41


BEQ.S if_majuscule2

//SI C'EST SUP. A 41 => OK


BLT.S non_fin_mot3

//SINON, ON COPIE UN A UN, I.E A non_fin_mot3

RTS





execution_MAJUS:


BRA.S if_majuscule1

//ON MET EN
MAJUSCULE LA LETTRE



RTS





yes_minuscule :




//LA DIFFERENCE ENTRE UNE MINUS ET SA MAJUS EST : 32
CARACTERES (EN DECIMALE)...

SUB.B #32, (A0)


MOVE.L (A0), (A1)


ADD.B #32, (A0)

RTS





if_minuscule2 :

CMP.B (A0), 7A


BLE.S yes_minuscule

//SI C'EST INF. A 7A => OK


BGT.S non_fin_mot3

//SINON, ON COPIE UN A UN, I.E A non_fin_mot3

RTS





if_minuscule1 :

CMP.B (A0), 61


BGE.S if_minuscule2

//SI C'EST SUP. A 61 => OK


BLT.S non_fin_mot3

//SINON, ON COPIE UN A UN, I.E A non_fin_mot3

RTS









execution_MINUS:


BRA.S if_minuscule1

//ON MET EN
MINUSCULE LA LETTRE

RTS







non_fin_mot1:





ADD.L #1, A2


CMP.B (D2),
#0X00 //SI TYPE==0

BGE.S execution_MAJUS //BGE = SI C'EST EGAL


BNE.S non_fin_mot2 //SI type!=0
=> ON VA SUR LE 2ND CAS

RTS







non_fin_mot2:


CMP.L (D2),
#01 //SI TYPE==1

BGE.S execution_MINUS //BGE = SI C'EST EGAL


BNE.S non_fin_mot3 //SI type!=1
=> ON VA SUR LE 3EME CAS

RTS







non_fin_mot3:






MOVE.L (A0), (A1)
//ON FAIT UNE COPIE DIRECTE DE
CHAINE1 DANS CHAINE2




//LA, ON EST DANS LE CAS PAR
DEFAUT. ALORS, ON COPIE LA CHAINE TELLE QU'ELLE


ADD.L #01,
D3
// on incremente length...



RTS









loop_chaine:


CMP.B (A0), #0X20 //CARACTERE
ESCAPE = 20

BNE.S non_fin_mot1 //BNE = SI C'EST DIFFERENT

RTS









loop_condition:


ADD.L #1, A0 //NON PAS ADD.L
(D3), ..


CMP.L (A0),
#0X00 //'\0' = NULL = 00

BNE.S loop_chaine //BNE = SI C'EST DIFFERENT

RTS
0
Rejoignez-nous