Chapitre 9 Les caractères.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

L’électronique numérique
Architecture de machines Codage des informations
Le Concept du programme enregistré
Les procédures et interruptions en Assembleur (Tasm)
GEF 435 Principes des systèmes d’exploitation
Lecture et Ecriture.
Le codage de l ’information
Le Concept du programme enregistré
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Introduction : Compilation et Traduction
FLSI602 Génie Informatique et Réseaux
Les microprocesseurs A. Objectifs de la séquence:
Présentation Unité de codage
Système d’exploitation : Assembleur
Cours de programmation
Introduction : Compilation et Traduction
Partie 1 Etude de l'existant
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
Architecture de base d’un ordinateur
Démarche de résolution de problèmes
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Nature, numération, code
NOTE : Pour faire évoluer le diaporama, si le clic de souris ne fait rien utilisez les touches du clavier : Pg up Pg down.
TRANSMISSION DES DONNEES.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Système d’exploitation : Assembleur
Programmation Initiation Aux Langages C et C++ Bruno Permanne 2006.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
IFT 6800 Atelier en Technologies d’information
Algorithmique et structure de données
Procédures et fonctions
Représentation des informations
SIF-1053 Architecture des ordinateurs
Un survol du language C.
REPRESENTATION DE L’INFORMATION
Le langage Z minimal Pr ZEGOUR DJAMEL EDDINE
La programmation.
Programmation Système et Réseau
Le codage des nombres en informatique
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. tél Fax Cours Architecture des.
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Introduction au langage C Les entrées-sorties
Système d’exploitation : Assembleur Semaine 01 Introduction.
UE MAREP Cours 12 : Révisions
Patricia Renault UPMC 2005/2006
Introduction à la programmation (420-PK2-SL) cours 1
Les entrées-sorties élémentaires
Codage de l’information
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Cours d’initiation en Informatique
Architecture et technologie des ordinateurs II
IFT209 – Programmation Système
Les instructions de contrôle
Tour rapide d’un premier programme SPARC v9
Chapitre 3 L’accès aux données.
©Pierre Marchand, Unité 2: Représentation interne des informations Objectifs: À la fin de cette unité, -vous saurez comment les caractères et les.
CHAPITRE 6 Les tableaux 1. Suite de composantes de même type Donc de même longueur Contiguë en mémoire Possédant un nom Donc une adresse Où chaque composante.
CHAPITRE 10 Les sous-programmes 1. Sous-programme Suite d’instructions appelée de manière répétitive Par un programme Par plusieurs programmes distincts.
Objets et Actions Élémentaires.
Chapitre 5 La représentation des données
Système d’information numérique
Introduction à l’Informatique Licence SPI Mme Delmotte.
Le codage des nombres en informatique
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
Département Informatique Codage de l’information Laurent JEANPIERRE IUT de CAEN – Campus 3.
Informatique 2A Langage C 4ème séance
Transcription de la présentation:

Chapitre 9 Les caractères

Les caractères Indispensable Permet la saisie Permet l’affichage dans une forme compréhensible par les humains Chaque caractère doit être encodé dans une suite de « n » bits Il y a donc 2 𝑛 caractères pouvant être encodés sur « n » bits Le nombre représentant le caractère est l’indice dans une table d’encodage

Encodage Il existe différentes tables d’encodage Unicode permet de représenter les ensembles de caractères de plusieurs langages naturels BCD 6 bits 64 caractères EBCDIC 8 bits 105 caractères ASCII 7 bits 128 caractères ASCII étendu 256 caractères UNICODE 16 bits 65 536 caractères

ASCII Code Symbole Hexa NUL 00 46 . 2E 65 A 41 8 BS 08 47 / 2F 66 B 42 NUL 00 46 . 2E 65 A 41 8 BS 08 47 / 2F 66 B 42 10 LF 0A 48 30 67 C 43 13 CR 0D 49 1 31 … 27 ESC 1B 50 2 32 89 Y 59 SP 20 51 3 33 90 Z 5A ! 21 52 4 34 91 [ 5B " 22 53 5 35 92 \ 5C # 23 54 6 36 93 ] 5D $ 24 55 7 37 94 ^ 5E % 25 56 38 95 _ 5F & 26 57 9 39 97 a 61 ‘ 58 : 3A 98 b 62 40 ( 28 ; 3B ) 29 60 < 3C 121 y 79 * 2A = 3D 122 z 7A + 2B > 3E 123 { 7B 44 , 2C 63 ? 3F 124 | 7C 45 - 2D 64 @ 125 } 7D

Parité Peut y avoir un bit additionnel Le bit de parité Souvent utilisé lors de la communication Des erreurs peuvent s’introduire dans les bits Le bit de parité permet de détecter une erreur simple dans le code du caractère Le bit de parité est calculé en fonction du nombre de bits à 1 dans le code du caractère

Parité Parité paire Parité impaire 1 1 1 1

Encodage Sauf pour UNICODE, tous les encodages utilisent un octet pour emmagasiner la valeur du code de caractère Tous les codes ne sont pas imprimables BS  Représente la touche Retour arrière (backspace) ESC  Le code de caractère ESCAPE, qui initie souvent une séquence de codes L’encodage le plus répandu est ASCII

Encodage Dans le code ASCII, la différence entre les majuscules et les minuscules repose sur la valeur du bit 5 A = 0x41 = 65 a = 0x61 = 97 Différence de 32 = 0x20 = 100000 1 A : 1 a :

Instructions Certaines architectures proposent des instructions qui acceptent des chaines de caractères comme opérandes Ce n’est pas le cas sur le SPARC Il faut donc considérer les caractères comme des suites de bits Il faut leur appliquer les opérations arithmétiques et logiques pour les manipuler

Instructions Transformer une lettre majuscule en minuscule Transformer une lettre minuscule en majuscule setx adr, %l7, %l0 ldub [%l0], %l1 bset 0x20, %l1 stb %l1, [%l0] setx adr, %l7, %l0 ldub [%l0], %l1 bclr 0x20, %l1 stb %l1, [%l0]

Lecture/Écriture Depuis le début du cours, on utilise printf pour l’écriture à la console scanf pour la lecture printf permet d’écrire des nombres directement Sans avoir besoin de les transformer en chaine de caractères scanf permet de lire directement une suite de chiffres et de mettre la valeur décimale en mémoire

Lecture/Écriture Lecture du nombre 465 Le résultat est une chaine de caractères contenant 4 = 0x34 6 = 0x36 5 = 0x35 1 1 1 On a besoin de la longueur de la chaine Chaque octet représente la valeur à une puissance de 10 (𝑛𝑏𝐶𝑎𝑟−𝑝𝑜𝑠) où pos commence à 1 Pour avoir la valeur décimale du chiffre, on soustrait la valeur du code de 0 (0x30) On additionne ensuite chaque valeur pour obtenir le résultat

Lecture/Écriture 4 = 0x34 La chaine contient 3 caractères 0x34 – 0x30 = 0x4 = 4 4× 10 3−1 =400 0x36 – 0x30 = 0x6 = 6 6× 10 3−2 =60 0x35 – 0x30 = 0x5 = 5 5× 10 3−3 =5 400+60+5=465! 6 = 0x36 5 = 0x35 1 1 1

Lecture/Écriture Une chaine de caractères doit toujours se terminer par le caractère NUL (valeur 0) Pour calculer la longueur d’une chaine, on parcourt chaque caractère jusqu’à ce qu’on rencontre le caractère NUL LgCh: save %sp, -208, %sp clr %l0 lgc05: ldub [%i1+%l0], %l1 brnz,a %l1, lgc05 inc ret restore %l0, %g0, %o0

Lecture/Écriture La conversion d’un nombre binaire en une chaine de caractère pour l’affichage fonctionne d’une façon semblable Pour convertir Divisions successives par 10 Les restes sont les valeurs des chiffres de la chaine de caractères Il faut leur ajouter la valeur du caractère 0 pour obtenir le bon code Les caractères sont dans l’ordre inverse Il faut inverse la chaine Il ne faut pas oublier le caractère NUL à la fin!

Lecture/Écriture Conversion du nombre 465 vers une chaine de caractères 5 + 0x30 = 0x35 6 + 0x30 = 0x36 4 + 0x30 = 0x34 0x34363500  « 465NUL » 465÷10 = 46 et 465 𝑚𝑜𝑑𝑢𝑙𝑜 10 5 46÷10 4 46 𝑚𝑜𝑑𝑢𝑙𝑜 10 6 4÷10 4 𝑚𝑜𝑑𝑢𝑙𝑜 10

Lecture/Écriture Maintenant qu’on peut convertir Un nombre binaire vers une chaine de caractères Une chaine de caractère vers un nombre binaire Il faut pouvoir afficher et lire, sans utiliser printf scanf

Les appels systèmes Un appel système est une interruption logicielle Appelée « trappe » Similaire à un sous-programme Possède des paramètres Lorsque l’interruption est terminée, le code appelant continue en séquence Une interruption change Le mode de fonctionnement du processeur Esclave (programme)  Maître (système d’exploitation) L’espace d’adressage (donc le processus, le contexte, etc.)

Les appels systèmes L’interruption logicielle appelle une fonction du système d’exploitation Les fonctions sont propres à chaque système Fournissent souvent un ensemble de base équivalent Lecture au clavier Affichage à l’écran Terminer un programme (exit) Créer des programmes Etc… Permet d’accéder aux fonctionnalités du système d’exploitation, qui gère la machine

Les appels systèmes Sur le SPARC, on appelle une interruption logicielle avec l’instruction tXXX ta : Trap Always  Effectue toujours l’appel système tge : Trap Greater … Les instructions « trappe » possèdent aussi des paramètres, comme les sous-programmes.

Les appels systèmes Sur le SPARC, l’adresse de la trappe qui contient les appels système dont on a besoin est 0x40 L’instruction est donc ta 0x40 nop

Les appels systèmes Chaque appel système fourni une gamme de service Chaque service possède un ensemble de paramètres ta 0x40 %g1 Service Paramètres 1 Sortie (exit) %o0 = code d’erreur (0  pas d’erreur) 3 Lecture (read) %o0 = 0  Lecture sur stdin %o1 = adresse du tampon de lecture %o2 = nombre de caractères à lire 4 Écriture (write) %o0 = 1  Lecture sur stdout %o1 = adresse du tampon d’écriture %o2 = nombre de caractères à écrire

Les appels systèmes Écriture à l’écran Main: setx msg, %l7, %o1 ! Adresse du message dans %o1 mov 10, %o2 ! Nombre de caractères dans %o2 4, %g1 ! Le numéro de service est 4 (write) ta 0x40 ! L’appel système 0x40 1, %o0 ! On écrit sur stdout (1)