PROGRAMMATION SYSTEME SOUS MS-DOS CET ASSEMBLEUR RESUME C e t ouvrage présente des techniques de programmation destinées à optimiser les performances de programmes devant être exécutés sous M S-DOS. Première partie : Les outils de programmation Programmation système en C et en assembleur Interfaçage de C et de l'assembleur Mise au point d'un programme Deuxième partie : Les ressources Fonctions et interruptions du DOS Les fonctions du BIOS Les autres ressources Compatibilité et performance Troisième partie : Les unités Techniques d'affichage rapide Anatomie d'un gestionnaire d'unité Quatrième partie: Gestion de la mémoire Mémoire étendue: une interface C Programmes TSR TABLE DES MATIERES Introduction XI Première partie Outils de programmation 1 Chapitre 1 3 Programmation système en C et en assembleur Le choix de C et de l'assembleur Les autres langages de programmation Les avantages de C et de l'assembleur Mise en oeuvre de C Les bibliothèques C commerciales Optimisation des programmes C Constitution d'un fichier batch de compilation et d'édition de liens des programmes C Mise en oeuvre de l'assembleur Recours au langage d'assemblage Optimisation des routines assembleur Procédure générique pour l'obtention de fichiers .EXE Chapitre 2 Interfaçage de C et de l'assembleur Appel d'une procédure assembleur à partir d'un programme C Déclaration des segments Influence du choix d'un modèle mémoire Echange des données Contenu des registres Assemblage en ligne Mise en oeuvre de l'utilitaire Make Appel d'une fonction C à partir d'un module assembleur Chapitre 3 Mise au point d'un programme Prévention des erreurs Développement par étapes 5 6 7 11 11 13 24 25 25 31 45 49 51 52 56 57 63 63 64 65 71 73 74 Développement par étapes Vérification des types des arguments Mise en oeuvre d'un utilitaire LINT Les différents niveaux de sévérité des messages de mise en garde Quelques erreurs communes de programmation Affichages intermédiaires dans la phase de mise au point Les logiciels de déverminage DEBUG SYMDEB Code View Autres debuggers Mise en oeuvre d'outils matériels Assistance matérielle pour la mise au point des programmes Assistance matérielle par accès direct à l'unité centrale Deuxième partie Les ressources 74 74 77 77 78 79 82 83 83 83 86 86 86 87 89 Chapitre 4 Fonctions et interruptions du DOS Les mécanismes d'interruption Les interruptions matérielles internes Les interruptions matérielles externes Les interruptions logicielles Accès aux routines d'interruption logicielle en assembleur Accès aux routines d'interruption logicielle en C Choix d'une fonction d'interruption Les fonctions MS-DOS Utilisation des fonctions MS-DOS Routines DOS classées par catégories 91 94 94 95 95 98 100 105 106 108 112 Chapitre 5 Les fonctions du BIOS Utilisation des fonctions BIOS Les fonctions BIOS classées par catégories Sorties vidéo : l'interruption 10h Gestion du disque : l'interruption 13h Gestion du port série : l'interruption 14h Gestion des unités de cassettes : l'interruption 15h Fonctions étendues spécifiques aux modèles AT : l'interruption 15h Gestion du clavier : l'interruption 16h Gestion du port imprimante : l'interruption 17h Gestion de la date et de l'heure : l'interruption 1Ah Autres interruptions du BIOS 153 157 158 158 172 173 175 175 175 182 183 183 Chapitre 6 Les autres ressources des ordinateurs exploités sous MS-DOS Le préfixe de segment de programme Accès au PSP à partir d'un programme assembleur Accès au PSP à partir d'un programme C Principaux champs du PSP Les zones de données de la mémoire basse 400h-4ABh : zone de communication du BIOS 4ACh-4EFh : zone réservée 4FOh-4FFh : zone de communication utilisateur 500h-5FFh : zone de communication du DOS Ctrl-Break et interruptions d'erreurs critiques Ctrl-Break Erreurs critiques Interruptions matérielles Les interruptions matérielles externes Routines d'interruption matérielle Les autres ressources de MS-DOS Les vecteurs d'interruption pointant sur des zones de données Les ports d'E/S La mémoire vidéo Les gestionnaires d'unités installables Chapitre 7 Compatibilité et performance Compatibilité : règles générales de développement Détermination de l'environnement d'exploitation Le tableau des ressources Initialisation dynamique Installation par l'utilisateur Utilisation des ressources disponibles Utilisation de ressources spécifiques à la configuration Utilisation des informations concernant le type d'ordinateur Adaptation des programmes aux différentes versions du système d'exploitation 185 188 188 191 192 204 205 208 208 208 209 210 218 228 230 232 245 245 248 248 248 249 252 254 255 261 280 282 283 282 285 d'exploitation Adaptation des programmes à l'environnement d'exploitation 285 287 Troisième partie Les unités 289 Chapitre 8 Techniques d'affichage rapide Les trois techniques fondamentales d'affichage vidéo Affichage gouverné par le gestionnaire ANSI.SYS Affichages gouvernés par le BIOS et codes d'attributs Ecriture directe en mémoire vidéo Programme de comparaison des vitesses d'affichage Générateur d'écran Les fonctions du générateur d'écran Structure du générateur d'écran Développements ultérieurs du programme ECRAN.C Utilisation de routines vidéo écrites en assembleur dans un programme C 291 293 295 299 304 329 340 340 371 371 373 Chapitre 9 Anatomie d'un gestionnaire d'unité Gestionnaires de blocs et gestionnaires de caractères Les conventions de noms Nombre d'unités Différences fonctionnelles La procédure d'installation Anatomie d'un gestionnaire d'unité La zone en-tête La zone de données La routine de stratégie La routine d'interruption Les fonctions 00: INIT 01 : Vérification unité (gestionnaires de type bloc uniquement) 02 : Construction d'un bloc de paramètres BIOS (gestionnaires de type bloc uniquement) 03,04,08,09, 12 : Entrées/sorties 05 : Entrées non destructives (gestionnaires de type caractère uniquement) 06: Etat entrées (gestionnaires de type caractère uniquement) 07, 11 : Vidages tampons entrées/sorties (gestionnaires de type caractère uniquement) 10 : Etat sorties (gestionnaires de type caractère uniquement) 13, 14 : Ouverture/fermeture (version 3 du DOS uniquement) 15 : Support amovible (gestionnaires de type bloc et version 3 du DOS uniquement) 16 : Sortie autorisée tant qu'unité disponible (gestionnaires de type caractère et version 3 du DOS uniquement) 19 : Requête IOCTIL générique (gestionnaires de type bloc et version 3.2 du DOS uniquement) 23 : Lit identificateur unité logique (gestionnaires de type bloc et version 3.2 du DOS uniquement) 24 : Positionne identificateur unité logique (gestionnaires de type bloc et version 3.2 du) DOS uniquement Mise au point d'un gestionnaire d'unité 389 394 394 395 395 396 399 415 417 418 419 424 425 428 430 431 434 435 436 437 438 439 Quatrième partie 455 Gestion de la mémoire Chapitre 10 Mémoire étendue: une interface C Généralités sur la mémoire EMS Une interface C pour la gestion de la mémoire étendue EMS Conversion des codes d'erreurs Les fonctions de l'interface C Installation d'une fonction supplémentaire Utilisation de la mémoire étendue à partir d'un programme C Programmes non résidents Programmes résidents Chapitre 11 Programmes TSR Contraintes liées à l'écriture d'un programme TSR Coexistence de plusieurs programmes TSR Coexistence avec le système d'exploitation Coexistence avec le programme s'exécutant en avant-plan Protection des accès disque du BIOS Coexistence avec les gestionnaires d'interruption Réentrance du code TSR Le standard Microsoft Réalisation d'un programme TSR Appel de la procédure assembleur tsr par un programme C Le module assembleur Développements ultérieurs du programme 440 442 444 445 447 457 460 464 478 480 487 488 488 495 497 501 501 509 517 522 523 524 526 530 534 537 562 Développements ultérieurs du programme 562 Annexe A Tableau des vecteurs d'interruption 565 Annexe B Les fonctions MS-DOS 573 Annexe C Les fonctions BIOS 583 Annexe D Le préfixe de segment de programme 643 Annexe E Carte de la mémoire 647 Annexe F Carte des ports d'E/S 653 Annexe G Résumé des fonctions source 657 Annexe H Bibliographie 683 TOP