PLAN PLAN 30/01/2016. Introduction. Introduction. Déclaration des constantes. Déclaration des constantes. Déclarations des variables

Documents pareils
Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Programmation assembleur : aperçu

Structure d un programme

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Architecture des ordinateurs

Principe de fonctionnement des périphériques des ordinateurs en vue de la programmation. Patrick Cégielski

Conception de circuits numériques et architecture des ordinateurs

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Cours Informatique 1. Monsieur SADOUNI Salheddine

Architecture des ordinateurs Introduction à l informatique

Département informatique de l université d Angers

Ordinateurs, Structure et Applications

CM2 L architecture MIPS32

Architecture des ordinateurs

Codage d information. Codage d information : -Définition-

GPA770 Microélectronique appliquée Exercices série A

Mathématiques appliquées à l informatique

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Rappels d architecture

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Exécution des instructions machine

Une version javascript sera disponible directement dans le cours prochainement.

ET LO GICIEL D UN S YS T EME IN FORMATIQUE

Rappels Entrées -Sorties

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

PIC : COURS ASSEMBLEUR

Conversion d un entier. Méthode par soustraction

Représentation d un entier en base b

Microprocesseur + Logiciel

ASR1 TD7 : Un microprocesseur RISC 16 bits

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Représentation des Nombres

Création et Gestion des tables

Compilation (INF 564)

La mémoire. Un ordinateur. L'octet. Le bit

Architecture matérielle des systèmes informatiques

NanoSense. Protocole Modbus de la sonde Particules P4000. (Version 01F)

Bases de programmation. Cours 5. Structurer les données

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

3. Structure des ordinateurs. 3.1 L' Unité Centrale (UC) ou processeur (Central Processing Unit CPU)

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Jeu d instructions NIOS II

Le codage informatique

CAISSE ENREGISTREUSE ELECTRONIQUE SE-G1

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Méthodologie de la programmation

IFT2880 Organisation des ordinateurs et systèmes

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

V- Manipulations de nombres en binaire

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

4. Initiation à l'assembleur

Introduction...6. Assembleur, philosophieet atouts...8. Avantages et inconvénients de l assembleur...9. Que programmer en Assembleur?.


ALGORITHMIQUE ET PROGRAMMATION En C

Fonctionnement et performance des processeurs

Logiciel de Base. I. Représentation des nombres

Déprotection semi-automatique de binaire

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

Programmation en langage C

Chap III : Les tableaux

Programmation Classique en langage C

UE Programmation Impérative Licence 2ème Année

Chapitre 1 I:\ Soyez courageux!

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

Résumé Génération de code Le code intermédiaire

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

Corrigé du baccalauréat S Asie 21 juin 2010

Informatique Générale

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

GL Le Génie Logiciel

LES TYPES DE DONNÉES DU LANGAGE PASCAL

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

ANALYSE TRAMEs LIAISON SERIE

Sécurité des réseaux IPSec

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

IFT1215 Introduction aux systèmes informatiques

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Désobfuscation automatique de binaire - The Barbarian Sublimation

Informatique Industrielle

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

Jeux de caracte res et encodage (par Michel Michaud 2014)

TP 1 : 1 Calculs en binaire, octal et hexadécimal

Présentation du cours

Gestion mémoire et Représentation intermédiaire

Chapitre 4 : Les mémoires

Olivier Mondet

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Architecture de l ordinateur

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Bibliothèque des sciences humaines. Guide d utilisation de la banque : TSX-CFMRC Summary Information Database

Transcription:

DÉCLARATION DES DONNÉES & MODES D ADRESSAGES Par : Khaled.hassine@fsg.rnu.tn 23/08/2010 1 30/01/2016 2 30/01/2016 3 30/01/2016 4 1

30/01/2016 5 30/01/2016 6 Syntaxe : <Identificateur de Constante> EQU <Value> <Identificateur de Constante> = <Value> L assembleur parcoure le code source et change chaque occurrence de la constante par sa valeur Exemple : A EQU 126 B = 1FH C EQU 101B D = 'Hello' 23/08/2010 7 30/01/2016 8 2

Directives de déclaration des variables Déclaration des variables Directiv e Signification DB Define Byte 1 octet DW Define Word 2 octets DD DQ Define Double Word Define Quad WordDirectiv e Réserver en mémoire 4 octets 8 octets Signification Interprétation de la valeur D Decimal décimal (par défaut) B Binary en binaire O Octal en octal H Hexadécimal en hexadécimal 23/08/2010 9 <Identificateur> <Type Elément> [[<Taille > DUP] [<Valeur initiale> [D/B/O/H]]/?/"<Caractères >"] <Identificateur> de la variable <Type Elément> : DB, DW, DD, DQ <Taille> : Taille de la structure répétitive (entier) DUP : directive de structures répétitives (DUPlicate) <Valeur initiale> la valeur initiale de chaque variable ' ' : caractères ou chaine de caractères (codés en ASCII),? : initialisée à 0 (zéro par défaut 0), Si plusieurs valeurs initiales séparées par des virgules, réservation d'une suite d'emplacements, à chacun est affectée une valeur 23/08/2010 10 DB : Exemple Déclaration Mémoire Adresse Contenu A DB 126 0 7EH B DB 1FH 1 1FH C DB 101B 2 05H Ch DB 'LA' 3 4CH 41H Tab DB 9,1AH,-1,'B',? 5 09H 1AH FFH 42H 00H 23/08/2010 11 DW et vecteurs : exemple Déclaration Mémoire Adresse Contenu Gamma DW? 0 00H 1 00H Beta DW 1234H 2 34H 3 12H V1 DB 2 DUP (5) 4 05H 5 05H V2 DW 2 DUP (0AFFH) 6 FFH 7 0AH 8 FFH 9 0AH 23/08/2010 12 3

Le 8086 : Architecture interne AX BX CX DX Source index Destination index Base pointer Stack pointer Registres généraux EXECUTION UNIT (EU) 15 7 0 AH AL BH BL CH CL DH DL SI DI BP SP Accumulateur Base Compteur Données (E/S) BUS MULTIPLIXE BUS INTERFACE UNIT (BIU) Registres de Segment 15 0 CS DS SS ES IP GENERATION D ADRESSES & BUS DE CONTROLE OPERANDES Flags Registrs Registres d'état et de contrôle ALU SEQUENCEUR CHAINE D INSTRUCTIONS Buffer 30/01/2016 13 23/08/2010 14 Principaux registres du Pentium Classification des registres du 8086 23/08/2010 15 23/08/2010 16 4

Adressage des registres Adressage immédiat Les deux opérandes sont des registres : from register to register N est pas vraiment un mode d adressage puisqu il n accède pas à la mémoire Mode d adressage très rapide : seul le bus interne est utilisé L'opération se fait sur un ou 2 registres Exemples : INC AX ; incrémenter le registre AX MOV AX, BX ; Copier le contenu de BX dans AX Pas d accès à la mémoire : n est pas vraiment un mode d adressage très rapide : seul le bus interne est utilisé Le deuxième opérande est directement codé dans l instruction Inconvénient : valeur figée dans l'instruction => la modifier oblige à modifier le programme. Exemple : MOV AH, 30H 23/08/2010 17 23/08/2010 18 La segmentation : synoptique Les registres segments et associations CS : Code Segment Segment de code, Stocke les instructions DS : Data Segment Segment de données, Réservation de la mémoire pour les variables ES : Extra Segment Utilisation spécifique, sur demande uniquement Souvent utilisé avec DI SS : Stack Segment Segment de pile UAL de calcul d adresse 23/08/2010 19 Chaque registre segment est associé à un ou plusieurs registres d offset afin de former une adresse physique réelle : Registre segment Registres associés CS IP SS SP et/ou BP DS BX et/ou SI et/ou DI ES Une adresse logique est exprimée en hexadécimal sous la forme SSSS:OOOOoù SSSS est le segment et OOOO est l offset. La valeur de l adresse physique sur 20 bits est : SSSS0H+OOOOH = SSSS*16+OOOO. Exemple : pour les instructions, CS:IP est utilisé. CS = 1111H IP = AAAAH. L adresse de l instruction pointée par IP est 11110H+ 0AAAAH = 1BBBAH. Pour les instructions affectant la pile (PUSH, POP, CALL, RET, etc.), SS:SP est utilisé. DS:SI et ES:DI sont habituellement utilisés pour travailler sur des tableaux ou des chaînes de caractères. 23/08/2010 20 5

Adressage direct Adressage direct Le plus simple et rapide des modes d adressage L opérande est désigné par l adresse donnée dans l instruction L'adresse réelle est calculée comme suit (registre de segment par défaut DS) : Forme générale Exemple <Opération> <Identificateur DS*10H+@<Identificateur variable> de la variable> DIV M <Opération> <Identificateur variable>, <Registre> <Opération> <Registre>, <Identificateur variable> MOV M, AX MOV AX, M <Opération> <Identificateur variable>, <Constante> MOV M, 1 On peut spécifier (forcer) le registre de segment : Exemple : MOV ES:M, AX On peut spécifier directement l adresse de la variable: Exemple : MOV ES :[0C040H], AL MOV [0C040H], AL 23/08/2010 21 23/08/2010 22 Adressage indirect par registre Adressage indexé L opérande est désignée par une adresse placée dans le registre d adresse donnée dans l instruction BX, BP, SI, DI peuvent servir de registre d adresse (de pointeur) Le registre doit être entre [ ]. Si BP est utilisé, le registre de segment par défaut est SS. Pour les autres registres, DS est le registre de segment par défaut Exemples : MOV AX, [BX] ; AX le contenu de l'adresse DS:BX MOV AX, [BP] ; AX le contenu de l'adresse SS:BP MOV AX, [SI] : AX le contenu de l'adresse DS:SI MOV AX, [DI] : AX le contenu de l'adresse DS:DI MOV AX, [ES:BP] : AX le contenu de l'adresse ES:BP Intérêt : Parcourir les structures itératives En langage évolué, une référence à un élément de tableau s'écrit : TAB(i) Dans l'instruction assembleur correspondante elle s'écrit : TAB[registre d'index] En ASM, le programmeur gère le registre d'index Pour accéder au i ème élément du tableau, on doit réaliser : Registre d'index (i - 1)*n où n = nb d'octets occupés par un élément On utilise l un des registres d Index : SI ou DI L'adresse réelle est calculée comme suit (registre de segment par défaut DS) : DS*10H + @<Vecteur> + <SI/DI>x <Taille d un élément> Exemple : TAB DB 1, 10, 30H MOV SI, 1 ADD AH, TAB[SI] ; AH AH+TAB[SI] 23/08/2010 23 23/08/2010 24 6

Adressage indexé avec déplacement Adressage basé (relatif) On peut préciser un déplacement qui sera ajouté au contenu de Ri pour déterminer l offset, INST Reg., [<Reg. Seg.> : <Reg ind.> + dep] INST [<Reg. Seg.> : <Reg ind.> +dep], Reg. INST taille [<Reg. Seg.> : <Reg ind.> +dep], Cste Exemples : MOV AX, [SI] ; AX le contenu de l'adresse DS:SI MOV AX, [SI+50] ; AX le contenu de l'adresse DS:SI+50 MOV AX, [DI-8] ; AX le contenu de l'adresse DS:DI-8 MOV AX, [ES:SI+4] ; AX le contenu de l'adresse ES:SI+4 Intérêt : manipulation des structures. L offset se trouve dans l un des deux registres de base BX ou BP, auxquels est ajouté un déplacement INST <Reg>, [<Reg. Seg.> :<Reg. Base>+dep] INST [<Reg. Seg.>:<Reg. Base>+dep], <Reg> INST taille [<Reg. Seg.> :<Reg. Base>+dep], im Exemples : MOV AX, [BX+5] ; AX le contenu de l'adresse DS:BX+5 MOV AX, [BP-200] ; AX le contenu de l'adresse SS:BP-200 23/08/2010 25 23/08/2010 26 Adressage Basé indexé L adresse de l'opérande est la somme d'un registre de base, d'un registre d'index et éventuellement d'un déplacement. Les couples des registres de base et d index possibles sont : BP-DI BP-SI BX-DI BX-SI Si le registre segment n'est pas spécifié, le segment par défaut du registre de base est utilisé : INST Reg., [<Reg. Seg.> : <Reg. Base>+<Reg ind.> +dep] INST [<Reg. Seg.> : <Reg. Base>+<Reg ind.> +dep], R INST <taille> [<Reg. Seg.> : <Reg. Base>+<Reg ind.> +dep], Cste Exemples : MOV AX,[BX+SI] ; AX le contenu de l'adresse DS:BX+SI MOV AX,[BX+DI+5] ; AX le contenu de l'adresse DS:BX+DI+5 MOV AX,[BP+SI-8] ; AX le contenu de l'adresse SS:BP+SI-8 MOV AX,[BP+DI] ; AX le contenu de l'adresse SS:BP+DI 23/08/2010 27 23/08/2010 28 7