1 / 10

Système d’exploitation : Assembleur

Système d’exploitation : Assembleur. Semaine 05 Modes d’adressage. Les différents modes d’adressage 1/6. On appelle mode d'adressage la manière dont la donnée est spécifiée dans une instruction. Selon le mode d'adressage la taille de l'instruction peut varier de 1 à 4 octets.

gin
Download Presentation

Système d’exploitation : Assembleur

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Système d’exploitation : Assembleur Semaine 05 Modes d’adressage

  2. Les différents modes d’adressage 1/6 • On appelle mode d'adressage la manière dont la donnée est spécifiée dans une instruction. Selon le mode d'adressage la taille de l'instruction peut varier de 1 à 4 octets. • Le mode d'adressage implicite Le mode d'adressage implicite correspond à une instruction ne comportant pas d'opérande. L'instruction est uniquement composée du code opération. Sa taille peut varier entre 1 octet et 2 octets selon l'opération. Ce type d'instruction porte généralement sur des registres. Les opérations d'incrémentation ou de décrémentation d'un registre ont un mode d'adressage implicite. • Exemple: • INC AX

  3. Les différents modes d’adressage 2/6 • Le mode d'adressage immédiat On parle de mode d'adressage immédiat quand le code opérande contient une donnée. La taille de la donnée peut varier entre 1 et 2 octets. Ce type d'instruction met en jeu un registre et une valeur. La taille de l'opérande dépendra donc du type de registre mis en jeu (1 octet pour un registre 8 bits, 2 pour un registre de 16 bits). • Exemple: • MOV BX,13 L'opérande 13 sera codée sur 16 bits puisqu'il faut l'affecter à un registre 16 bits (BX). • MOV AH,11 L'opérande 11 sera codée sur 8 bits puisqu'il faut l'affecter à un registre 8 bits (AH). • dummy DB 5ADD AL,dummy L'opérande 5 sera codée sur 8 bits puisqu'il faut l'affecter à un registre 8 bits (AL).

  4. Les différents modes d’adressage 3/6 • Le mode d'adressage relatif Le mode d'adressage relatif met en jeu un champ opérande contenant un entier relatif (sa taille est donc un octet). Il est utilisé dans les opérations de saut (JMP), l'entier relatif étant appelé déplacement et correspondant à la longueur du saut que le processeur doit effectuer dans les instructions. • Exemple: • 0100 - ADD AX,02h0103 - JMP 0100h0104 - … La valeur du déplacement sera 0100h-0104h = -4

  5. Les différents modes d’adressage 4/6 • Le mode d'adressage direct Dans l’adressage direct, le code opérande d'une instruction contient l'adresse d'une donnée en mémoire, dans le segment de données. Une adresse étant codée sur 16 bits, la taille du champ opérande est de 2 octets. Ce mode d'adressage provoque un temps d'exécution de l'instruction plus long : accéder à la mémoire principale prend plus de temps que d'accéder à un registre. • Exemple: • MOV AX,[0110] On affecte au registre AX la valeur contenue dans l’emplacement mémoire 110h du Data Segment [DS].

  6. Les différents modes d’adressage 5/6 • Le mode d'adressage indirect Dans l’adressage indirect, le code opérande d'une instruction contient le nom d’un registre qui contient l'adresse d'une donnée en mémoire, dans le segment de données. Il est intéressant pour parcourir un tableau : il suffira d’incrémenter la valeur du registre de la taille d’une case de tableau pour passer d’une case à la suivante. • Exemple: • MOV AX,[BX] On affecte au registre AX la valeur contenue dans l’emplacement mémoire (dans le Data Segment) pointé par la valeur contenue dans le registre BX.

  7. Les différents modes d’adressage 6/6 • Utilisation de la pile Lorsqu’on utilise les registres BP ou SP, on pointera vers une valeur contenue dans le segment de pile (Stack Segment) au lieu d’une valeur contenue dans le Data Segment. • Exemple: • MOV BP,9MOV AX,[BP] On affecte au registre AX la valeur contenue dans l’emplacement mémoire (dans le Stack Segment) pointé par la valeur contenue dans le registre BP.

  8. Modes d’adressage : exemples .model small .data a db 10,9,8,7,6,5,4,3,2,1,0 .code mov ax,@data ; initialisation du Data Segment mov ds,ax mov ax,5 ; Adressage immédiat inc ax ; Adressage implicite mov ax,word ptr a ; Adressage direct mov bx,offset a ; bx  déplacement de a mov ax,[bx] ; Adressage indirect basé sur bx ; (Data Segment  DS) mov bp,0A234h mov ax,[bp] ; Adressage indirect basé sur bp ; (Stack Segment  SS) mov bx,5 mov si,4 mov ax,[bx][si] ; Adressage indirect ; basé sur bx et indexé mov bx,2 mov ah,a[bx] ; Adressage indirect et déplacement mov ah,4ch int 21h ; Fin du programme end

  9. .model small .data tab db 5,4,3,2,1 tab2 db 5 dup(?) .code ; copie d'un vect tab vers tab2 mov ax,@data mov ds,ax mov al,tab mov tab2,al mov al,tab+1 mov tab2+1,al mov al,tab+2 mov tab2+2,al mov al,tab+3 mov tab2+3,al mov al,tab+4 mov tab2+4,al mov ah,4ch int 21h end .model small .data tab db 5,4,3,2,1 tab2 db 5 dup(?) .code mov ax,@data mov ds,ax mov si,0 mov al,tab[si] mov tab2[si],al inc si mov al,tab[si] mov tab2[si],al inc si mov al,tab[si] mov tab2[si],al inc si mov al,tab[si] mov tab2[si],al inc si mov al,tab[si] mov tab2[si],al mov ah,4ch int 21h end Pourquoi l’adressage indexé ? Illustration Sans index Avec index 4 x Idem

  10. .model small .data tab db 5,4,3 tab2 db 3 dup(?) tab3 db 3 dup(?) .code mov ax,@data mov ds,ax mov si,0 mov al,tab[si] mov tab2[si],al inc si mov al,tab[si] mov tab2[si],al inc si mov al,tab[si] mov tab2[si],al mov si,0 mov al,tab[si] mov tab3[si],al inc si mov al,tab[si] mov tab3[si],al ... .model small .data tab db 5,4,3 tab2 db 3 dup(?) tab3 db 3 dup(?) .code mov ax,@data mov ds,ax mov bx,offset tab2 mov si,0 mov al,tab[si] mov [bx+si],al inc si mov al,tab[si] mov [bx+si],al inc si mov al,tab[si] mov [bx+si],al mov bx,offset tab3 mov si,0 mov al,tab[si] mov [bx+si],al ... Pourquoi l’adressage indexé ? Illustration Avec index et base Avec index sans base

More Related