![]() |
COURS N° 3 - Les registres du microprocesseur |
Ce cours a pour objectif de vous montrer comment utiliser les registres. Seuls les registres de même taille peuvent être utilisés ensemble. On ne peut pas copier le contenu d'un registre 16 bits dans un registre 32 bits. Les deux opérandes doivent être de même taille tel que : mov eax, esp
Avant de commencer ce cours il est vivement recommandé de consulter : Les registres du microprocesseur
Les registres de segment sont initialisés par le système d'exploitation MS-DOS pour ce qui est du modèle mémoire TINY.| .8086 .MODEL TINY MonCode SEGMENT 'CODE' ORG 100h ;Point d'entrée du programme Main: ;Copie le contenu d'un registre 16 bits vers un autre registre 16 bits. mov ax, bp mov bx, sp mov dx, di mov cx, si mov si, cx mov di, dx mov sp, bx mov bp, ax ;Copie le contenu d'un registre 8 bits vers un autre registre 8 bits. mov ah, bh mov al, bl mov bh, dh mov bl, dl mov dh, ch mov dl, cl mov ch, ah mov cl, al mov cl, dl mov bl, al mov bl, bl ;Le registre FLAGS n'est pas directement utilisable. Il faut utiliser les instructions ;spéciales pour manipuler son contenu. Récupération et restauration du registre des drapeaux. ;Avant la restauration on met le bit 0 : CF à 1. pushf pop ax mov al,1 ;CF = 1 push ax popf ;Le registre IP n'est pas directement utilisable. Il faut utiliser les instructions push et ret, call et ret ou ;alors les instructions de saut : jcond, pour placer une adresse offset valide dans ce registre. ;1) Utilisation des instructions push et ret mov bx, OFFSET Function push bx ;On place l'adresse Function sur la pile. ret ;Puis on dépile avec l'instruction ret qui a pour effet de placer l'adresse dans le registre IP. Next: ;2)Utilisation de l'instruction call call Function1 ;L'instrction call place l'adresse Function1 dans le registre IP ;3) Utilisation de l'instruction de saut inconditionnel : jmp mov bx, OFFSET Function2 jmp bx ;L'instruction jmp place dans le registre IP l'adresse Function2 EndProg: ;Fin du programme mov ax, 4C00h int 21h Function: mov ax, sp mov bx, OFFSET Next push bx ;On place l'adresse de l'instruction : call Function1 sur la pile. ret ;On dépile l'adresse dans le registre IP Function1: mov ax, cx ret Function2: mov ax, di mov bx, OFFSET EndProg jmp bx ;jmp place dans le registre IP l'adresse EndProg MonCode ENDS END Main |