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
1Architecture
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3.2 Tout est une adresse (ou presque) . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.3 Les variables initialis
´es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3.4 Les variables non-initialis
´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3.5 Les constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Les registres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.1 Les registres g
´en´eraux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.4.2 Les registres de contr
ˆole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.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) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.5.3 La multiplication enti
`ere (mul,imul) . . . . . . . . . . . . . . . . . . . . . . . . . . 91.5.4 Le fonctionnement de la pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6 Les instructions de contr
ˆole de flot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.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. . . . . . . . . . . . . . . . . . . . . . . . . 121.6.4 Le bloc d"ex
´ecution conditionnelcmp jcc labelSi. . . . . . . . . . . . . . . . . . 121.7 Les fonctions et proc
´edures en NASM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.7.1 L"effet d"une fonction sur la pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.7.2 Le passage de param
`etre sans sauvegarde de pile . . . . . . . . . . . . . . . . . . 131.7.3 Le passage de param
`etre avec sauvegarde de pile . . . . . . . . . . . . . . . . . . 14 2Architecture
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 -fL"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 monExecutablePour 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 monExecutable1.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.
3Architecture
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 4Architecture
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] 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