Organisation des ordinateurs

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

Structure d un programme

Architecture des ordinateurs

Corrigé du baccalauréat S Asie 21 juin 2010

Programmation assembleur : aperçu

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

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

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

CM2 L architecture MIPS32

Rappels d architecture

Exécution des instructions machine

Département informatique de l université d Angers

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

Architecture des ordinateurs

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

C f tracée ci- contre est la représentation graphique d une

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

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

Conception de circuits numériques et architecture des ordinateurs

Mathématiques appliquées à l informatique

Programmation C++ (débutant)/instructions for, while et do...while

Procédure serveur : gestion des environnements X3 et bases de données ORACLE

Chapitre 11. Séries de Fourier. Nous supposons connues les formules donnant les coefficients de Fourier d une fonction 2 - périodique :

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

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

ASR1 TD7 : Un microprocesseur RISC 16 bits

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

Licence Sciences et Technologies Examen janvier 2010

LE PRODUIT SCALAIRE ( En première S )

Solution du challenge SSTIC Emilien Girault ANSSI/COSSI/DTO/BAI 06/06/13

Probabilités sur un univers fini

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

GL Le Génie Logiciel

Exercices - Polynômes : corrigé. Opérations sur les polynômes

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

Quelques contrôle de Première S

Cours d Informatique

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

Programmation linéaire

Cours d Analyse. Fonctions de plusieurs variables

Jeu d instructions NIOS II

Chap III : Les tableaux

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

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Architecture des ordinateurs Introduction à l informatique

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

= constante et cette constante est a.

Cours Informatique Master STEP

Microprocesseur + Logiciel

4. Groupement d objets

4. Initiation à l'assembleur

Feuille TD n 1 Exercices d algorithmique éléments de correction

TP, première séquence d exercices.


Sélection du contrôleur

Probabilités sur un univers fini

Plan du cours Cours théoriques. 29 septembre 2014

Préleveur d'échantillons d eau automatique ELECTRO-MAGNUM /AQUAMAX 1 & 2 / SERVOTOP

DOCM Solutions officielles = n 2 10.

Algorithme. Table des matières

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

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

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

CCP PSI Mathématiques 1 : un corrigé

IFT2880 Organisation des ordinateurs et systèmes

8.1 Généralités sur les fonctions de plusieurs variables réelles. f : R 2 R (x, y) 1 x 2 y 2

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Conversion d un entier. Méthode par soustraction

Coefficients binomiaux

1S Modèles de rédaction Enoncés

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Algorithmique et structures de données I

1 radian. De même, la longueur d un arc de cercle de rayon R et dont l angle au centre a pour mesure α radians est α R. R AB =R.

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Compilation (INF 564)

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Architecture matérielle des systèmes informatiques

Introduction à MATLAB R

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

Représentation d un entier en base b

Informatique Générale

Cours 02 : Problème général de la programmation linéaire

Complément d information concernant la fiche de concordance

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Représentation des Nombres

Tp 1 correction. Structures de données (IF2)

Correction du Baccalauréat S Amérique du Nord mai 2007

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Chapitre 1 : La gestion dynamique de la mémoire

La fonction exponentielle

Claude Delannoy. 3 e édition C++

Transcription:

Organisation des ordinateurs Répétition 7 18 mai 2016 Université de Liège

Exercice 1

Exercice 1 Les instructions suivantes effectuent des transferts de 16 bits de données. On demande de décomposer chacune de ces instructions en deux instructions mov réalisant la même opération, mais avec des opérandes de 8 bits. (a) mov ax, 1234h mov al, 34h mov ah, 12h (b) mov ax, [1234h] mov al, [1234h] mov ah, [1235h] (c) mov bx, cx mov bh, ch mov bl, cl (d) mov [bx], cx mov [bx], cl mov [bx + 1], ch 3

Exercice 1 (e) mov word [bp + si - 6], 32h mov byte [bp + si - 6], 32h mov byte [bp + si - 5], 00h 4

Exercice 2

Exercice 2 Après l exécution de la séquence d instructions suivante, quel sera le contenu du registre ax? move ax, 100h mov bx, ax mov [bx + 1], ax mov [100h], ax mov si, [bx + 1] mov al, [si] mov ah, [bx + si - 101h] 6

Exercice 2 move ax, 100h mov bx, ax al ah 00 01 mov [bx + 1], ax mov [100h], ax mov si, [bx + 1] mov al, [si] mov ah, [bx + si - 101h] Le contenu final de ax est 0001h. 7

Exercice 2 move ax, 100h mov bx, ax mov [bx + 1], ax mov [100h], ax al ah 00 01 bl bh 00 01 mov si, [bx + 1] mov al, [si] mov ah, [bx + si - 101h] Le contenu final de ax est 0001h. 7

Exercice 2 move ax, 100h mov bx, ax mov [bx + 1], ax mov [100h], ax mov si, [bx + 1] mov al, [si] al ah 00 01 bl bh 00 01 100 101 102?? 00 01 mov ah, [bx + si - 101h] Le contenu final de ax est 0001h. 7

Exercice 2 move ax, 100h mov bx, ax mov [bx + 1], ax mov [100h], ax mov si, [bx + 1] mov al, [si] al ah 00 01 bl bh 00 01 100 101 102 00 01 01 mov ah, [bx + si - 101h] Le contenu final de ax est 0001h. 7

Exercice 2 move ax, 100h mov bx, ax mov [bx + 1], ax mov [100h], ax mov si, [bx + 1] mov al, [si] mov ah, [bx + si - 101h] Le contenu final de ax est 0001h. al ah 00 01 bl bh 00 01 100 101 102 00 01 01 si 0101 7

Exercice 2 move ax, 100h mov bx, ax mov [bx + 1], ax mov [100h], ax mov si, [bx + 1] mov al, [si] mov ah, [bx + si - 101h] Le contenu final de ax est 0001h. al ah 01 01 bl bh 00 01 100 101 102 00 01 01 si 0101 7

Exercice 2 move ax, 100h mov bx, ax mov [bx + 1], ax mov [100h], ax mov si, [bx + 1] mov al, [si] mov ah, [bx + si - 101h] Le contenu final de ax est 0001h. al ah 01 00 bl bh 00 01 100 101 102 00 01 01 si 0101 7

Exercice 2 move ax, 100h mov bx, ax mov [bx + 1], ax mov [100h], ax mov si, [bx + 1] mov al, [si] mov ah, [bx + si - 101h] Le contenu final de ax est 0001h. al ah 01 00 bl bh 00 01 100 101 102 00 01 01 si 0101 7

Exercice 3

Exercice 3 Pourquoi les instructions suivantes sont-elles incorrectes? (a) mov ax, cl Les opérandes n ont pas la même taille. (b) mov [ax], cl ax ne peut pas être utilisé pour l adressage indirect. (c) mov [bp + si], 99h On ne sait pas le nombre de bits des opérandes. Il faudrait mettre byte (8 bits) ou word (16 bits) devant mov pour le préciser. (d) mov 1234h, ax On ne peut pas écrire une valeur dans une constante. (e) move dx, [bp + bx] Les registres bp et bx ne peuvent pas être utilisés ensembles dans l adressage indirect indexé. 9

Exercice 3 (f) mov dx, bp + si La seconde opérande ne correspond à aucun mode d adressage. Pour calculer la somme des contenus de bp et si, il faudrait utiliser add. (g) mov dx, [bp - si - 9] On ne peut utiliser que la somme de deux registres dans l adressage indirect indexé, pas leur différence. 10

Exercice 4

Exercice 4 Écrire un programme assembleur 80x86 destiné à compter le nombre d octets non nuls contenus dans une suite d octets consécutifs du segment de données. L offset du premier octet est initialement contenu dans le registre BX et le nombre d octets de la suite se trouve dans le registre CX. On peut supposer que la suite contient au moins un octet. Le nombre d octets non nuls devra être contenu dans le registre AX en fin d exécution. 12

Exercice 4 BX : l offset du premier octet CX : le nombre d octets AX : sera le nombre d octets non nuls 13

Exercice 4 BX : l offset du premier octet CX : le nombre d octets AX : sera le nombre d octets non nuls Début et fin du programme SECTION.text ret 13

Exercice 4 BX : l offset du premier octet CX : le nombre d octets AX : sera le nombre d octets non nuls Début et fin du programme Initialiser ax SECTION.text mov ax, 0 ret 13

Exercice 4 BX : l offset du premier octet CX : le nombre d octets AX : sera le nombre d octets non nuls Début et fin du programme Initialiser ax Boucler sur les élements de la suite boucle: SECTION.text mov ax, 0 inc bx loop boucle ret 13

Exercice 4 BX : l offset du premier octet CX : le nombre d octets AX : sera le nombre d octets non nuls Début et fin du programme Initialiser ax Boucler sur les élements de la suite Si un octet n est pas nul, incrémenter ax SECTION.text mov ax, 0 boucle: cmp byte [bx], 0 je suivant inc ax suivant: inc bx loop boucle ret 13

Exercice 5

Exercice 5 Ecrire un programme assembleur 80x86 capable de calculer le produit scalaire de deux vecteurs de nombres entiers. Les composantes des vecteurs sont non signées et encodées sur 8 bits ; chaque vecteur correspond donc à une suite d octets consécutifs du segment de données. Les deux vecteurs à multiplier sont initialement pointés par les registres AX et BX. Le registre CX contient le nombre de composants de chaque vecteur (ils ont tous deux la même dimension, supposée non nulle). En fin d exécution, le registre DX doit contenir le produit scalaire de ces deux vecteurs. 15

Exercice 5 AX : le premier vecteur à multiplier BX : le deuxième vecteur à multiplier CX : le nombre de composants de chaque vecteur DX : sera le produit scalaire de ces deux vecteurs 16

Exercice 5 17

Exercice 5 Début et fin du programme SECTION.text ret 17

Exercice 5 Début et fin du programme Mettre la valeur de ax dans bp pour pouvoir utiliser l adressage indexé. SECTION.text mov bp, ax ret 17

Exercice 5 Début et fin du programme Mettre la valeur de ax dans bp pour pouvoir utiliser l adressage indexé. Initialiser dx et si SECTION.text mov bp, ax mov dx, 0 mov si, 0 ret 17

Exercice 5 Début et fin du programme Mettre la valeur de ax dans bp pour pouvoir utiliser l adressage indexé. Initialiser dx et si Boucler sur les vecteurs boucle: SECTION.text mov bp, ax mov dx, 0 mov si, 0 inc si loop boucle ret 17

Exercice 5 Début et fin du programme Mettre la valeur de ax dans bp pour pouvoir utiliser l adressage indexé. Initialiser dx et si Boucler sur les vecteurs Mettre la valeur de [bp + si] dans al pour préparer la multiplication. boucle: SECTION.text mov bp, ax mov dx, 0 mov si, 0 mov al, [bp + si] inc si loop boucle ret 17

Exercice 5 Début et fin du programme Mettre la valeur de ax dans bp pour pouvoir utiliser l adressage indexé. Initialiser dx et si Boucler sur les vecteurs Mettre la valeur de [bp + si] dans al pour préparer la multiplication. Multiplier [bx + si] avec al et mettre le résultat dans ax. boucle: SECTION.text mov bp, ax mov dx, 0 mov si, 0 mov al, [bp + si] mul byte [bx + si] inc si loop boucle ret 17

Exercice 5 Début et fin du programme Mettre la valeur de ax dans bp pour pouvoir utiliser l adressage indexé. Initialiser dx et si Boucler sur les vecteurs Mettre la valeur de [bp + si] dans al pour préparer la multiplication. Multiplier [bx + si] avec al et mettre le résultat dans ax. Ajouter le résultat à dx boucle: SECTION.text mov bp, ax mov dx, 0 mov si, 0 mov al, [bp + si] mul byte [bx + si] add dx, ax inc si loop boucle ret 17

Des questions? 18

Theme Get the source of this theme and the demo presentation from github.com/matze/mtheme The theme itself is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. cba 19