logo Homepage
+  NewbieContest
|-+  Général» Defouloir» L'assembleur [ Sa me fait peur :p ]
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: L'assembleur [ Sa me fait peur :p ]  (Lu 3958 fois)
DarK-CrasH

Profil challenge

Classement : 3017/54327

Membre Junior
**
Hors ligne Hors ligne
Messages: 79


Voir le profil
« le: 05 Août 2009 à 19:59:27 »

Bonsoir,
Je cherche des cours ou tutoriels pour apprendre l'assembleur de manière simplifiée ou au minimum
compréhensible . J'entend déjà venir deux trois personnes qui n'ont que l'envie de rabatte les autres,
dire :  va voir google ! Je leur répond que je l'ai déjà consulter sans succès alors je vous demende de
l'aide ( pourquoi pas des tutos avec lesquels vous même avez apris )


Merci
Journalisée

Toujours repousser ses limites c'est bien. Le faire avec méthode, c'est mieux.
Shakan

Profil challenge

Classement : 1067/54327

Membre Complet
***
Hors ligne Hors ligne
Messages: 181


Voir le profil WWW
« #1 le: 06 Août 2009 à 02:46:53 »

Apprendre à afficher "hello world" en assembleur ce serait un bon début je pense... 
En effet tu comprendrais déjà pas mal de trucs, les bases quoi.

Journalisée

-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d- s+: a-- C++ UL- P L++ E--- W++ N+ o K- w
O-- M-- V-- PS PE Y PGP- t+ 5 X+ R tv- b++ DI D++
G e++ h! r++ y+
------END GEEK CODE BLOCK------
N-clear

Profil challenge

Classement : 6353/54327

Néophyte
*
Hors ligne Hors ligne
Messages: 7


Voir le profil
« #2 le: 06 Août 2009 à 05:19:42 »

Alors déjà je t'envoie vers :
Le manuel de Netwide Assembler, c'est rempli d'info usefull.
Ici quelques infos sur l'assembleur sous Linux (même si tu code avec Windows il y a quelques trucs bon à prendre).

Bon c'est vraiment dur de trouver un tutorial complet, cohérent, facile d'accès sur l'assembleur (je m'y connais malheureusement pas accès pour faire un tuto)
Bonne chance.

edit : si je suis motivé je te fait un source de hello world en assembler x86 dans la journée (j'ai sous la  version asm SPARC (qui a une syntaxe dans le style AT&T) donc ça risque plus de t'embrouiller qu'autre chose)
Tu code sur Windows ou Linux?

Voila un code fait  l'arrache qui affiche hello world sous linux puis quo fait une erreur de segmentation
Code:
; les commentaires commencent pas un ;
[BITS 32]
GLOBAL _start ; point d'entree du programme

segment .data ; donnée initialisées
chaine db 'hello world',10,0 ;chaine est un label
; db sert à réserver de la place pour des données (ici des byte) initialisés
; 'hello world' est une chaine de style C terminer par un caractère nul
; pour des valeurs non initialisées on utilise resb, resw, ... (ça correspond aux variables du C)

segment .text ;segment de code exécutable
_start: ;début du programme
    xor eax, eax   ; le registre eax est mis à zéro
    add eax, 4 ; on ajoute 4 a eax
    mov ebx, 1 ; on met dans ebx
    mov ecx, chaine ; on met l'adresse de début de la chaine dans ecx
    mov edx, 14 ; longueur de la chaine
    int 0x80 ; interruption logiciel 80, elle sert à délancher un appel système, ici write

A compiler comme ça :
nasm -f elf hello.as
ld -o hello hello.o
et pour lancer : ./hello

en fait dans le registre eax j'ai mis 4 qui est le numéro de l'appel système à utiliser
(/usr/include/asm/unistd.h donne la liste des appels systèmes et leur signification)
ensuite il faut remplir les registre comme l'indique la fonction du manuel (man 2 write) :
ssize_t write(int fd, const void *buf, size_t count);
                   eax           ebx            ecx
                  1 (stdout)  chaine         14

Bon en fait là t'apprend surtout à utilise un appel système. Il aurait été possible d'afficher la chaine en faisant appel à la la libc (printf).
Je te conseille d'apprendre à additionner des choses, à adresser la mémoire et à gérer la pile (push, pop) c'est a le plus important.
Ensuite il y a plusieurs assembleurs, le 16 bits en mode réel (pour développer des OS), le 32 en mode protégé comme je viens de te monter.
* N-clear retourne apprendre l'assembleur, parce qu'il de loin pas tout capté
« Dernière édition: 06 Août 2009 à 06:19:08 par N-clear » Journalisée
DarK-CrasH

Profil challenge

Classement : 3017/54327

Membre Junior
**
Hors ligne Hors ligne
Messages: 79


Voir le profil
« #3 le: 06 Août 2009 à 08:16:25 »

Merci de ta réponse même si tout n'est pas clair.

Je code sous windows mais je peux passer sous ubuntu si necessaire d'ici quelques jours car je ne suis pas chez moi actuellement.
Merci encore je vais étudier ça 
Journalisée

Toujours repousser ses limites c'est bien. Le faire avec méthode, c'est mieux.
Th0r
Profil challenge

Classement : 4332/54327

Néophyte
*
Hors ligne Hors ligne
Messages: 6


Voir le profil
« #4 le: 28 Août 2009 à 12:40:15 »

Salut, regarde par la ^^ http://ftp-developpez.com/asm/cours/noteworthy/pas-a-pas-vers-l-assembleur-par-lord-noteworthy.pdf
Journalisée
simpsonmaniac

Profil challenge

Classement : 568/54327

Membre Junior
**
Hors ligne Hors ligne
Messages: 60

Essayer, c'est le meilleur moyen de se planter...


Voir le profil
« #5 le: 28 Août 2009 à 13:49:31 »

Ou là : http://www.drpaulcarter.com/pcasm/pcasm-book-pdf.zip
Journalisée

C:/dos
C:/dos/run
run/dos/run
Pages: [1]
  Imprimer  
 
Aller à: