[PDF] Programmation Assembleur NASM R´esum´e





Previous PDF Next PDF



But de ce sujet Les registres du processeur

L'adresse physique s'obtient en calculant Segment x 16 + Offset. Page 3. Introduction à l'assembleur http://www.courstechinfo.be/Programmation/IntroASM.pdf. 3.



Assembleur

Les processeurs X86 (`a partir du 386) ont huit registres de quatre octets chacun le segment de code permet de stocker les instructions qui.



Chapitre 5

Identificateur (Segment Selector): 16 bits. Offset : 32 bits. Le processeur contient des registres pour obtenir l'identificateur de segment.



Gestion de la mémoire

La valeur du registre de translation est additionnée à chaque adresse générée Allocation d'espace pour l'accroissement de la pile et d'un segment de ...



Programmation Assembleur NASM R´esum´e

Ces derniers sont les registres de segment dont voici la liste et leur utilité : • CS : Code Segment : ce registre contient l'adresse de départ du segment de 



Architecture des ordinateurs

Mov bxax ; mettre le contenu du registre AX dans BX. dont le code et les données partagent un seul segment de 64Ko. Commandes Debug.



20 bits + Registre de segment Registre général Extension sur 20

Registre de segment. Registre général. Extension sur 20 bits. Adresse sur 20 bits. 0.



4. Initiation à lassembleur

Le registre EIP est le compteur ordinal et contient l'adresse de la prochaine instruction à exécuter. Le Pentium possède également six registres de segment: CS 



Ce chapitre est consacré à létude des instructions de transfert des

Les registres de segment sont utilisés pour représenter la base de l'adresse; le registre eip par exemple



LE MICROPROCESSEUR 8086 ) 8088

Un registre est une petite partie de mémoire intégrée au Le 8086 a quatre registres segments de 16 bits chacun : CS (code segment.



[PDF] But de ce sujet Les registres du processeur - CoursTechInfo

L'adresse physique s'obtient en calculant Segment x 16 + Offset Page 3 Introduction à l'assembleur http://www courstechinfo be/Programmation/IntroASM pdf 3



[PDF] 20 bits + Registre de segment Registre général Extension sur - Irif

Registre de segment Registre général Extension sur 20 bits Adresse sur 20 bits 0



[PDF] Architecture des ordinateurs - Ecole Mohammadia dingénieurs

STOSB Instruction qui permet le transfert de AL vers ES:DI (emplacement DI dans l'extra segment ES Son exécution incrémente automatiquement le registre index 



[PDF] Chapitre 5

Identificateur (Segment Selector): 16 bits Offset : 32 bits Le processeur contient des registres pour obtenir l'identificateur de segment



[PDF] 4 Initiation à lassembleur

Le registre EIP est le compteur ordinal et contient l'adresse de la prochaine instruction à exécuter Le Pentium possède également six registres de segment: CS 



[PDF] Premier examen – Corrigé

4) Immédiate Implicite (le registre de drapeaux) 5) Registre 6) Immédiate Le segment de code courant travaille sur des opérandes de 32 bits



[PDF] LASSEMBLEUR SUR PC - IUT de Bayonne

On ne s'intéressera qu'aux registres de 16 bits : La mémoire est divisée en 4 segments de 64K octets chacun désigné par l'un des registres de segment CS



[PDF] Informatique industrielle Niveau 4 - Espace Technologue

Leurs adresses de base se trouvent dans les registres segments - Segment des codes (CS) sert à l'adressage des octets du programme (code) 



[PDF] Assembleur

Segmentation de la mémoire La mémoire est divisée en segments indépendants L'adresse de début de chaque segment est stockée dans un registre



[PDF] 1- Charger les registres AX BX

1- Charger les registres AX BX CX DX avec une information de 16 bits en utilisant l' Ceci en utilisant la valeur actuelle du registre segment DS

:

Architecture

Licence Informatique - Universit

´e de Limoges2015-2016

Semestre 4Programmation Assembleur NASM

R

´esum´e

1

Architecture

Licence Informatique - Universit

´e de Limoges2015-2016

Semestre 4Contents

1 Les bases de programmation en NASM X86 3

1.1 Ce dont vous avez besoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.1.1 T

´el´echarger le compilateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.1.2 Compiler sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.1.3 Compiler sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Structure d"une programme NASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2.1 Une ligne de code NASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2.2 Partitionnement du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2.3 D

´efinir un point de d´epart et sortir du programme (Linux) . . . . . . . . . . . . . . 4 1.3 D

´efinir des donn´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3.1 Les tailles des donn

´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3.2 Tout est une adresse (ou presque) . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3.3 Les variables initialis

´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3.4 Les variables non-initialis

´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3.5 Les constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.4 Les registres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.4.1 Les registres g

´en´eraux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.4.2 Les registres de contr

ˆole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.4.3 Les registres de segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.5 Pr

´ecisions sur les instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.5.1 Toujours utiliser au moins UN registre . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.5.2 La division enti

`ere (div,idiv) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.5.3 La multiplication enti

`ere (mul,imul) . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.5.4 Le fonctionnement de la pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.6 Les instructions de contr

ˆole de flot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.6.1 Les labels et les sauts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.6.2 Le bloc de bouclelabel ... loop label. . . . . . . . . . . . . . . . . . . . . . 12

1.6.3 Le bloc de proc

´edurelabel ... ret. . . . . . . . . . . . . . . . . . . . . . . . . 12

1.6.4 Le bloc d"ex

´ecution conditionnelcmp jcc labelSi. . . . . . . . . . . . . . . . . . 12

1.7 Les fonctions et proc

´edures en NASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.7.1 L"effet d"une fonction sur la pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.7.2 Le passage de param

`etre sans sauvegarde de pile . . . . . . . . . . . . . . . . . . 13

1.7.3 Le passage de param

`etre avec sauvegarde de pile . . . . . . . . . . . . . . . . . . 14 2

Architecture

Licence Informatique - Universit

´e de Limoges2015-2016

Semestre 41 Les bases de programmation en NASM X86 NASM est un compilateur et un langage assembleur X86 libre et modulaire supportant une grande vari

´et´e de formats d"objets. Les parties suivantes r´esument bri`evement les bases de la program-

mation en langage NASM et sont extraites du manuel de NASM (http://http://www.nasm.us/doc/ nasmdoc0.html) que je vous incite`a lire pour plus de d´etails.

1.1 Ce dont vous avez besoin

Pour cr

´eer un programme assembleur NASM, il vous faut :

Le compilateur NASM

Un´editeur de liens

Le compilateur cr

´ee`a partir de votre fichier monProgramme.asm un fichier objet (monProgramme.o) similairement aux compilateurs C et C++. L" ´editeur de liens peut ensuite cr´eer ensuite un ex´ecutable pour le syst

`eme voulu (en g´en´eral le syst`eme sur lequel il est ex´ecut´e) en interfac¸ant votre programme

avec le syst `eme.

1.1.1 T

´el´echarger le compilateur

De nombreuses distributions Linux proposent NASM directement dans leur gestionnaire de paquets.

Pour les autres syst

`emes, vous pouvez t´el´echarger le compilateur sur le sitehttp://www.nasm.us/, dans la section "download". Apr `es installation ou copie des fichiers, vous pouvez compiler via un terminal (cmd.exe pour Windows). Si nasm n"est pas trouv ´e par d´efaut, v´erifiez que votre variable d"environnement PATH contient le chemin absolu du dossier contenant l"ex

´ecutable nasm.

Pour compiler un fichier source .asm, NASM s"utilise de la fac¸on suivante : nasm -f monProgramme.asm [-g]

L"option-fpermet de sp´ecifier le format de fichier compil´e et-gpermet de g´en´erer les symboles de

debug. Le fichier g ´en´er´e peut ensuiteˆetre utilis´e dans un´editeur de liens.

1.1.2 Compiler sous Linux

Pour cr

´eer un programme NASM pour les syst`emes Linux r´ecents, vous pouvez compiler votre pro- gramme au format ELF ("Executable and Linkable Format") et utiliser l"

´editeur de liensld:

nasm -f elf monProgramme.asm -g ld [-m elf_i386] monProgramme.o -o monExecutable

Pour ex

´ecuter les exemples pr´esent dans ce document (´ecrits en assembleur X86), il est n´ecessaire

de passer l"option-m elfi386aldsi vous travaillez sur un syst`eme 64 bits et que vous compiler en format ELF (qui par d ´efaut est en 32 bits). Vous pouvez compiler votre programme au formatelf64, mais attention : la cr

´eation d"un programme 64bits (X8664) est diff

´erente de celle d"un programme

32bits (X86).

Si vous d

´esirez utiliser des fonctions issus du langage C tel queprintf, vous devez utiliser gcc comme ´editeur de liens et respecter certaines conventions d"appels pour le passage de param`etres : gcc monProgramme.o -o monExecutable

1.1.3 Compiler sous Windows

Pour cr

´eer un programme sous Windows, si vous poss´edez Visual Studio, vous pouvez utiliser le linker

fournis par microsoftlink.exe. Par exemple, pour cr´eer le programme HelloWorld`a partir du fichier

compiler HelloWorld.obj, vous pouvez utiliser la ligne de commande suivante sous Windows : nasm -f win32 HelloWorld.asm link HelloWorld.obj /OUT:HelloWorld.exe /SUBSYSTEM:CONSOLE /ENTRY:_start Si vous utilisez minGW ou cygwin, vous pouvez utiliser l"ex

´ecutable ld au lieu de link.

3

Architecture

Licence Informatique - Universit

´e de Limoges2015-2016

Semestre 41.2 Structure d"une programme NASM

1.2.1 Une ligne de code NASM

label: instruction op

´erandes ; commentaires

Le symbole;correspond aux//en Langage C, pour signaler le d´ebut d"une ligne de commentaires. La pr

´esence d"un label (autrement appel´e´etiquette), est facultative devant une instruction, et sera

principalement consid

´er´e dans ce document :

comme d´ebut d"un bloc de code (nomBloc:) comme nom de variable (nomVariable[:] ).

1.2.2 Partitionnement du programme

Un programme assembleur est en g

´en´eral s´epar´e en plusieurs parties (appel´ees segments). Trois segments sont consid ´er´es comme standard en assembleur X86 :.data,.bsset.text.

Le segment.datacontient les d´efinitions des variables initialis´ees`a une ou plusieurs valeurs

sp

´ecifi´ees (instructionsdb, dw, dd...).

Le segment.bsscontient les d´efinitions des variables non-initialis´ees, c"est`a dire uniquement

allou ´ees en m´emoire. (instructionsresb, resw, resd...). Le segment.textcontient le code ex´ecut´e par votre programme.

En plus de ces parties, le programmeur

`a acc`es via des instructionspushetpop`a une pile m´emoire li´e au programme (Stack en anglais), souvent utilis ´ee pour le passage de param`etres`a des fonctions ou sauvegarder des donn ´ees de registres avant leur utilisations (section 1.5.4).

1.2.3 D

´efinir un point de d´epart et sortir du programme (Linux)

Le point d"entr

´ee de votre programme ne d´epend actuellement pas de NASM, mais de l"´editeur de liens (ou "Linker") utilis ´e pour transformer le code compil´e en ex´ecutable. Pour beaucoup de linker, le point d"entr ´ee par d´efaut est une fonctionstartd´efini comme un symboleglobal: ce symbole sera ex- port

´e par votre programme pourˆetre utilisable par le syst`eme ou par d"autres fichiers compil´es lors de

l"

´edition.

Si une fonction (ou une variable) identifi

´ee par un label est´egalement d´eclar´e comme global dans le fichier o

`u elle est d´efinie, cette fonction (ou variable) peutˆetre appel´ee dans un autre fichier,`a la condi-

tion que son label soit ´egalement d´eclar´e enexterndans le fichier voulant l"utiliser.

La programme suivant pr

´esente la structure´el´ementaire d"un programme NASM, dans laquelle sont incluses les instructions pour quitter un programme proprement : global _start ; d

´eclaration de _start en global

; => export du point d"entr

´ee pour cr´eer le programme

segment .data ; cr

´eation de variables initialis´ees

segment .bss ; cr

´eation de variables non-initialis´ees

segment .text ; cr ´eation de vos proc´edures/fonctions entre le segment et le point d"entr´ee _start: ; instructions de votre programme ; Les 3 lignes suivantes doivent

ˆetre`a la fin de votre _start

mov eax,1 ; signalement de fin de programme mov ebx,0 ; code de sortie du programme int 0x80 ; interruption Linux : votre programme rend la main au syst `eme 4

Architecture

Licence Informatique - Universit

´e de Limoges2015-2016

Semestre 41.3 D

´efinir des donn´ees

1.3.1 Les tailles des donn

´ees

NASM consi

`ere les types de donn´ee suivants : le Byte ( 1 octet = 8 bits) le Word ( 2 octet = 16 bits) le Double word ( 2 word = 4 octets = 32 bits) le Quad word (4 word = 8 octets = 64 bits) et le exTended word ( type sp´ecial sur 80 octets pour les r´eels)

Les lettres majuscules de cette liste sont utilis

´ees pour d´efinir le type de la variable d´eclar´ee. Cette lettre est associquotesdbs_dbs16.pdfusesText_22
[PDF] les types de registres d'un microprocesseur

[PDF] erreur scientifique bible

[PDF] registre accumulateur

[PDF] sphère armillaire construction

[PDF] sphère armillaire portugal

[PDF] registre de processeur pdf

[PDF] sphère armillaire achat

[PDF] difference entre registre et memoire

[PDF] sphere armillaire

[PDF] registre d'adresse

[PDF] sphère armillaire ancienne

[PDF] registre dinstruction processeur

[PDF] astrolabe

[PDF] circulaire douane maroc 2017

[PDF] dedouanement jet ski maroc prix