Section courante

A propos

Section administrative du site

Mémoire des compatibles IBM PC

Voici une référence des adresses mémoire exploité par le système d'exploitation DOS ou compatible (MS-DOS, DR-DOS, PC DOS,...). Vous remarquerez que les adresses ne sont pas diviser en Segment:Déplacement mais plutôt en adresse physique en mémoire. Vous devrez conserver les 4 chiffres du haut pour le segment et garder le dernier du bas pour le déplacement. A NOTER toutefois que bien que je ne voulais pas copier des auteurs de livre et ne pas respect leurs droits, il devient parfois difficile de ne pas avoir des similitudes pour une raison fort simple, il y a trop d'auteurs (Aide-Mémoire de Les Interruptions Du MS-DOS de Philippe Mercier, La Bible du PC – Programmation Système de Michaël Tischer, Le Livre d'Or PC de Martin Althaus, Turbo Pascal 7 utile de François Gervais, les livres de Microsoft Press,...) ayant traiter de se sujet lors des années 1980, 1990 et ils ont carrément épuiser toutes les possibilités de dire les termes...

Programmation

Si on utilise un langage de programmation évolué comme Turbo Pascal, il propose une tableau avec un accès directe à la mémoire appelé Mem, MemW et MemL. On calcul le tableau selon la forme suivante :

Adresse ← Segment x 16 + Déplacement

Ainsi, pour connaître la valeur l'adresse 00413h, devra garder les 4 chiffres du haut pour le segment et les dernier chiffre pour le segment, de façon à ce que l'on une adresse utilisable dans le mode réel du microprocesseur, soit $0041:$0003, ensuite, sachant que le déplacement peuvent se superposer les uns des autres, qu'on veut se référé, on peut simplement écrire : $0040:$0013. Le $0040:$0013 ou $0041:$0003 sont perçu de façon identique par le microprocesseur. Enfin, une fois que vous avez votre adresse souhaitez, vous pouvez écrire un petit programme Turbo Pascal comme ceci pour connaître la signification (00413h à 00414h : La taille mémoire exprimée en Kilo-octets) :

  1. Program MemSize;
  2.  
  3. BEGIN
  4.  WriteLn('Taille de la mémoire conventionnelle : ',MemW[$0040:$0013]);
  5. END. 

Liste des cellules mémoires

Adresse Longueur Description
00000h à 003FCh 1 Ko Ces adresses mémoire contiennent la table des 256 vecteurs d'interruption.
00400h à 004FFh 256 octets Ces adresses mémoires sont utilisées par la ROM BIOS (sans oublier ceux des cartes vidéo EGA ou postérieur) ainsi que par de nombreuses applications DOS afin de pouvoir reconnaître correctement le matériel installer et d'agir en conséquence. Il est cependant peut flexible sur de nombreux aspect.
00400h à 00401h 2 octets (1 mot) Cette adresse mémoire contient l'adresse de base du port d'entrée/sortie pour le COM1 ou désigne régulièrement la souris série affectant du même coup le COM3.
00402h à 00403h 2 octets (1 mot) Cette adresse mémoire contient l'adresse de base du port d'entrée/sortie pour désigné le COM2
00404h à 00405h 2 octets (1 mot) Cette adresse mémoire contient l'adresse de base du port d'entrée/sortie pour désigné le COM3
00406h à 00407h 2 octets (1 mot) Cette adresse mémoire contient l'adresse de base du port d'entrée/sortie pour désigné le COM4
00408h à 00409h 2 octets (1 mot) Cette adresse mémoire contient l'adresse de base du port d'entrée/sortie pour désigné le LPT1
0040Ah à 0040Bh 2 octets (1 mot) Cette adresse mémoire contient l'adresse de base du port d'entrée/sortie pour désigné le LPT2
0040Ch à 0040Dh 2 octets (1 mot) Cette adresse mémoire contient l'adresse de base du port d'entrée/sortie pour désigné le LPT3
0040Eh à 0040Fh 2 octets (1 mot) Cette adresse mémoire contient l'adresse de base du port d'entrée/sortie pour désigné le LPT4
00410h à 00411h 2 octets (1 mot) Ce mot contient divers informations sur l'équipement de la machine actuellement installé.
00412h 1 octet Auto-test : Cet octet sert à entreposer certaines informations pendant l'auto-test du système, étant effectué au cours de l'opération de démarrage du système (avant que le système d'exploitation ne soit lancer), y compris lors d'un démarrage à chaud. Il est utilisé par la suite par les routines du BIOS pour détecter la frappe de certaines touches mais il ne présente aucun intérêt pratique pour le programmeur.
00413h à 00414h 2 octets (Mot) La taille mémoire exprimée en Kilo-octets : A cet adresse de la mémoire figure un mot indiquant la capacité (RAM) de la mémoire conventionnelle (celle se trouvant sous la barre des 1 Mo) en Ko. Cette donnée est également calculés au cours de l'opération de lancement du système et elle peut être lue à l'aide de l'interruption 12h du BIOS.
00415h à 00416h 2 octets (Mot) Tester: Une fois de plus, ces 2 octets sont exploités uniquement pendant l'opération du démarrage du système pour tester l'électronique. Ils n'ont plus aucune signification par la suite.
00417h 1 octet Premier ensemble d'État du clavier : Cet octet est appelé "octet d'état du clavier" puisqu'il indique l'état du clavier et de certaines touches spéciales. On pourra lire le contenu de cet octet grâce à la fonction 02h de l'INTERRUPTION 16h (clavier du BIOS). En accédant à cet octet, il est autre possible d'activer ou de désactiver les modes INSERT ou majuscules (CAPS) sur les BIOS AT ou postérieur. Seuls les 4 bits de plus fort poids de cet octet sont utiles à cet effet et il préférable d'éviter d'affecter les 4 bits inférieurs.
Bits Description
0 Vaut 1 si la touche Shift droite est actionnée
1 Vaut 1 si la touche Shift gauche est actionnée
2 Vaut 1 si une/des touches Ctrl sont actionnées
3 Vaut 1 si la touche Alt est actionnée
4 Vaut 1 si la touche Scroll Lock activée
5 Vaut 1 si la touche Num Lock est activée
6 Vaut 1 si la touche Caps Lock est activée
7 Vaut 1 si le mode INSERT activé
00418h 1 octet Deuxième ensemble d'État du clavier : La signification de cet octet se rapproche drôlement de celle de l'octet de l'adresse 00417h avec cependant la différence que ce n'est pas l'état des modes INSERT ou majuscules étant mentionné mais davantage la position, "enfoncée" ou "non enfoncée", des touches correspondantes
Bits Description
0 Vaut si 1 la touche Ctrl gauche est enfoncée (à partir du AT ou postérieur)
1 Vaut si 1 la touche Alt gauche est enfoncée (à partir du AT ou postérieur)
2 Vaut si 1 la touche SysReq est enfoncée (à partir du AT ou postérieur)
3 Vaut si 1 si le mode Pause est activé
4 Vaut si 1 la touche Break est enfoncée
5 Vaut si 1 la touche Num Lock est enfoncée
6 Vaut si 1 la touche Caps Lock est enfoncée
7 Vaut si 1 la touche INSERT est enfoncée
00419h 1 octet ALT+Code ASCII: Cet octet est utilisé lorsqu'on enfonce une combinaison de touche ALT+Code ASCII. Il conserva donc la valeur tapée lorsqu'on enfonce la touche ALT suivie d'un code ASCII.
0041Ah 2 octets (1 mot) Cette adresse mémoire contient l'adresse du prochain caractère à extraire à partir du tampon clavier, il s'agit de l'adresse de début.
0041Ch 2 octets (1 mot) Cette adresse mémoire contient l'adresse du dernier caractère (fin) du tampon clavier.
0041Eh 32 octets (16 mots) Cette adresse mémoire contient le tampon clavier : C'est dans cette zone de mémoire qu'est situé le véritable tampon clavier. Comme chaque caractère stocké dans le tampon clavier occupe 2 octets, sa taille est de 32 octets. Il pourra donc recevoir 16 touches au maximum. Pour un caractère ASCII normal, c'est d'abord le code ASCII du caractère, suivi de sa correspondance au niveau du code clavier, étant mémorisé ici. Le code clavier spécifier est le numéro de la touche ayant produit le caractère ASCII. Toutefois, si le caractère figurent dans le tampon clavier et que celui-ci possède un code étendu (par exemple une touche de déplacement), alors le premier octet contiendra 0 et le deuxième octet indiquera le code de la touche étendue. Le tampon lui-même est conçu comme une sorte de mémoire en anneau dans lequel on en insère tant qu'elle n'est pas pleine. L'adresse du prochain caractère à lire dans le tampon clavier est fournie par le mot à l'adresse 0041Ah. Lorsqu'un caractère est lu, ce pointeur est avancée de 2 octets vers la fin du tampon. Si un caractère a été lu dans la dernière cellule de mémoire du tampon, le pointeur est à nouveau fixé sur le début du tampon. Il en va exactement de même avec le pointeur placé à l'adresse 0041Ch, indiquant la fin du tampon clavier. Lorsqu'un nouveau caractère est entré, il est stocké, dans le tampon clavier, à l'endroit désigné par ce pointeur. Il est ensuite augmenté de 2 pour se rapprocher de la fin du tampon. Si un nouveau caractère vient d'être inséré dans le dernier emplacement tampon, le pointeur est à nouveau fixé sur le début tampon. La rapport entre le pointeur de début et le pointeur de fin du tampon est ainsi d'une grande importance pour juger de l'état du tampon. Deux situations revêtent à cet égard une signification particulière. Il s'agit tout d'abord du cas où les 2 pointeurs contiennent la même adresse. Ce terme exprime tout simplement qu'il n'y a pour le moment aucun caractère dans le tampon clavier. Le second cas est celui où on tente d'ajouter un caractère au-delà de la "fin" du tampon clavier. Cela supposerait que le pointeur de fin fût augmenté de 2 pour "rattraper" le pointeur de début. Ou par conséquent que le tampon clavier est plein et qu'il ne peut plus recevoir d'autres caractères. Si le début (0041Ah) = Fin(0041Ch), le tampon est vide.
00450h 1 octet Cette adresse mémoire contient une position X du curseur sur la page 0
00451h 1 octet Cette adresse mémoire contient une position Y du curseur sur la page 0
00452h 1 octet Cette adresse mémoire contient une position X du curseur sur la page 1
00453h 1 octet Cette adresse mémoire contient une position Y du curseur sur la page 1
00454h 1 octet Cette adresse mémoire contient une position X du curseur sur la page 2
00455h 1 octet Cette adresse mémoire contient une position Y du curseur sur la page 2
00456h 1 octet Cette adresse mémoire contient une position X du curseur sur la page 3
00457h 1 octet Cette adresse mémoire contient une position Y du curseur sur la page 3
00458h 1 octet Cette adresse mémoire contient une position X du curseur sur la page 4
00459h 1 octet Cette adresse mémoire contient une position Y du curseur sur la page 4
0045Ah 1 octet Cette adresse mémoire contient une position X du curseur sur la page 5
0045Bh 1 octet Cette adresse mémoire contient une position Y du curseur sur la page 5
0045Ch 1 octet Cette adresse mémoire contient une position X du curseur sur la page 6
0045Dh 1 octet Cette adresse mémoire contient une position Y du curseur sur la page 6
0045Eh 1 octet Cette adresse mémoire contient une position X du curseur sur la page 7
0045Fh 1 octet Cette adresse mémoire contient une position Y du curseur sur la page 7
0A0000h à 0AFFFFh 64 Ko Ces adresses mémoire sont utilisés par la mémoire de vidéo graphique des modes supérieur au carte vidéo CGA.
0B0000h à 0B7FFFh 32 Ko Ces adresses mémoire sont utilisés par la mémoire vidéo des cartes monochromes ou des modes émuler correspondant à celui-ci.
0B8000h à 0BFFFFh 32 Ko Ces adresses mémoire sont utilisés par la mémoire vidéo des cartes couleurs CGA et de leur mode vidéo ainsi que de tous les modes texte couleurs.
0C0000h à 0CFFFFh 16 Ko à 64 Ko Ces adresses mémoire sont utilisés par la ROM des cartes vidéos EGA, VGA et Super VGA.
C00F9h 20 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «ATI Technologies Inc» du fabricant ATI.
C0110h 29 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «ATI VGA EDGE-16, BIOS V5-1.01» du fabricant ATI.
C0110h 21 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «VGA1024, BIOS V5-1.01» du fabricant ATI.
C011Eh 7 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «V5-1.01» du fabricant ATI d'une carte VGA1024.
C0126h 7 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «V5-1.01» du fabricant ATI d'une carte VGA EDGE-16.
C0181h 9 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «IT - VGA2» du fabricant Inform Tech.
C94F9h 23 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «Super BIOS II Formatter» du fabricant Western digital.
0E0000h à 0EFFFFh 64 Ko Ces adresses de mémoire sont souvent utilisés par la banque de mémoire EMS ou ces émulateurs. Sur certains compatibles XT ont le retrouvera pour des ROM supplémentaire.
E0013h   Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «ROM DIAGNOSTICS (C) 1987, American Megatrends Inc.» du fabricant American Megatrends.
0F0000h à 0FFFFFh 16 à 64 Ko Ces adresses mémoires sont utilisés pour la ROM BIOS de la carte mère.
F0004h à 0F0010h 12 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «AAAAMMMMIIII» du fabricant American Megatrends.
F0005h   Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «Copyright 1984,1985 Phoenix Software Associates Ltd.» du fabricant WYSE dans ses machines Amdek System/88.
F0010h à 0F0017h 8 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «07/07/91» du fabricant American Megatrends.
F0020h   Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «American Megatrends Inc.» du fabricant American Megatrends.
F0100h   Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «ROM BIOS (C) 1990 American Megatrends Inc.» du fabricant American Megatrends.
F0150h   Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «386DX-OP-PIc-25-F1-ZZ» du fabricant American Megatrends.
F0723h   Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «Real Time Clock Battery Problem Detected» du fabricant WYSE dans ses machines Amdek System/88.
F079Ch   Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «Invalid Configuration information - please run SETUP program» du fabricant WYSE dans ses machines Amdek System/88.
F1B20h   Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «American Megatrends Inc.» du fabricant American Megatrends.
F2004h   Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «WYSE COPR. IBM Compatible» du fabricant WYSE dans ses machines Amdek System/88.
F39C1h   Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «Non-System disk or disk error» du fabricant WYSE dans ses machines Amdek System/88.
F3F37h   Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «Rom Bios Ver 2.14» du fabricant WYSE dans ses machines Amdek System/88.
FB000h 6 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «Zenith» du fabricant Zenith.
FC02Bh 5 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «Tandy» du fabricant Tandy.
FC050h 8 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «OLIVETTI» du fabricant Olivetti.
FC2FFh 6 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «Zenith» du fabricant Zenith.
FD900h Double mot Cette adresse mémoire contient l'adresse de l'interruption 16h du Conterm Max.
FE004h 6 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «Tandon» du fabricant Tandon.
FE00Eh 3 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «IBM» du fabricant IBM.
FE719h Double mot Cette adresse mémoire contient l'adresse de l'interruption 18h de la ROM Bios Phoenix version 2.14 (1984, 1985)
FE739h Double mot Cette adresse mémoire contient l'adresse de l'interruption 14h de la ROM Bios Phoenix version 2.14 (1984, 1985)
FE82Eh Double mot Cette adresse mémoire contient l'adresse de l'interruption 16h de la ROM Bios Phoenix version 2.14 (1984, 1985)
FEFD2h Double mot Cette adresse mémoire contient l'adresse de l'interruption 17h de la ROM Bios Phoenix version 2.14 (1984, 1985)
FF841h Double mot Cette adresse mémoire contient l'adresse de l'interruption 12h de la ROM Bios Phoenix version 2.14 (1984, 1985)
FF859h Double mot Cette adresse mémoire contient l'adresse de l'interruption 11h de la ROM Bios Phoenix version 2.14 (1984, 1985)
FFA0Ah Double mot Cette adresse mémoire contient l'adresse de l'interruption 02h de la ROM Bios Phoenix version 2.14 (1984, 1985)
FFF23h Double mot Cette adresse mémoire contient l'adresse de l'interruption 06h, 07h et 0Ah de la ROM Bios Phoenix version 2.14 (1984, 1985)
FFF54h Double mot Cette adresse mémoire contient l'adresse de l'interruption 05h de la ROM Bios Phoenix version 2.14 (1984, 1985)
FFFC2h 4 octets Cette adresse mémoire contient une chaîne de caractère signature du BIOS ayant la forme «WANG» du fabricant Wang.
FFFF0h Variable Cette adresse mémoire contient un point d'entrée de la combinaison de touche Ctrl+Alt+Delete lors du démarrage à froid de tous bon compatible.
FFFFEh 1 octet Cette adresse mémoire contient la signature de modèle de PC


Dernière mise à jour : Samedi, le 2 août 2014