//Cette page est destinée à recevoir les propositions de **Résumés de fin de chapitre** ... en fait, elle se destine plus à devenir la page de propositions de questions pour l'examen ... en tous cas d emanière temporaire. Les étudiants seront amenés à préparer ces-dites (néologisme) questions. // ===== Propositions de questions pour l'examen de MIC ===== ===Question=== * Quelles sont les différentes étapes pour compiler un code source et l'exécuter (sous DOS et sous Linux) ? * À ce stade que savez-vous de la structure d'un programme assembleur ? * Pratiquement que se passe-t-il si on oublie d'écrire les instructions de fin de programme ? === Question === * Expliquez le programme suivant, ligne par ligne. .MODEL small .STACK 100h .DATA var DW 5 string DB "Hello world","$" .CODE main PROC ; ------------------------------------------------------ ; Initialisation de DS ; ------------------------------------------------------ mov AX,@data mov DS,AX ; ------------------------------------------------------ ; Code ; ----------------------------------------------------- mov AX,var add AX,2 mov BL,string ; ------------------------------------------------------ ; Fin ; ------------------------------------------------------ mov AX,4C00h int 21h main ENDP END main ===Question=== * Expliquez comment mettre en oeuvre le mécanisme des **variables**. Développez, pour tous les types de variables et d'allocation mémoire. ===Question=== * Que propose le langage assembleur pour mettre en oeuvre des structures répétitives et/ou conditionnelles. Développez. ===Question=== * Présentez quelques instructions assembleur permettant de manipuler les registres au niveau du bit. ===Question=== * Expliquer le fonctionnement des instructions MUL et DIV pour un opérande 8 bits et 16 bits. Aidez-vous en écrivant un bout de code clair. N'oubliez pas de déclarer les variables ! * Faites la différence avec les instructions IMUL et IDIV. ===Question=== * Par quoi se caractérise un microprocesseur, de quoi se compose-t-il ? * Donnez le **8086** comme exemple et précisez ses particularités. * Comparez avec le **Z80** et le **Motorolla 68000**. ===Question=== * Définissez la notion de **pile**. Quels sont les directives, les registres, les instructions associés. * Distinguez les cas du //8086// et du //m68k//. Donnez un exemple pour les deux grandes familles de microprocesseurs. ===Question=== * Définissez la notion d'interruption. * Distinguez interruption //matérielle//, //exception// et interruption //logicielle//, précisez comment se traite une interruption. * Donnez un exemple d'appel d'interruption logicielle en **DOS** et en **Linux**. ===Question=== * Décrivez le mécanisme permettant de mettre en oeuvre la //modularité//. Comment fait-on des appels de fonction/procédure ? * Décrivrez comment passer des **paramètres** à une fonction/procédure. ===Question=== * Décrivez le mécanisme permettant de mettre en oeuvre la //modularité//. Comment fait-on des appels de fonction/procédure ? * Décrivez comment déclarer et utiliser des **variables locales**. ===Question=== * Décrivez le mécanisme permettant de mettre en oeuvre la //modularité//. Comment fait-on des appels de fonction/procédure ? * Décrivrez comment une fonction peut fournir des informations à la procédure qui l'a appelée. ===Question === * //nasm// est un compilateur assembleur sous Linux. Décrivez comment éditer du code, le compiler et faire l'édition de lien sous Linux. Appuyez-vous sur un exemple permettant d'écrire //Hello world// à l'écran. Existe-t-il un débogueur sous Linux ? ===Question=== * Expliquez la différence entre **mode réel** et **mode protégé**. * Présentez la cartographie mémoire de DOS en mode réel. * Expliquez les différentes zones mémoire et en particulier les zones aux adresses A0000h et B8000h. ===Question=== * Assembleur permet de passer des arguments à un programme. Expliquez le concept et son implémentation sous DOS **et** sous Linux. ===Question=== * Comment fonctionne l'accès aux éléments d'un tableau en langage d'assemblage ? Écrivez un bout de code en DOS permettant de calculer la somme des 10 éléments d'un tableau de mots (words). ===Question=== * Qu'est-ce que le registre **CFLAGS** (registre des flags ou des indicateurs d'état). À quoi sert-il ? * Comment le modifie-t-on ? * Comment s'en sert-on ? ===Question=== * Définissez le terme "registre", citez les différent types de registres et expliquer leur utilisation dans le cadre de la famille Intel **8086**. * Quels sont les différences avec le **80386** ? * Précisez le rôle des registres de segment.