SlideShare une entreprise Scribd logo
1  sur  13
Echange de données et
opérations arithmétiques /
binaires – Module
Microprocesseur
TARIK ZAKARIA BENMERAR, PHD
DEPARTEMENT INSTRUMENTATION ET AUTOMATIQUE, USTHB
Valeur Immédiate -> Registre
X86 (8086)
1 octet
2 octets
MOV AH, 35
MOV AL, 12H
MOV BL, 01010001b
MOV AX, 1200
MOV BX, F340H
MOV DX, 0101000101010001b
Valeur Immédiate -> Registre
ARM (32 bits)
4 octets
MOV R1, #0x00008000
MOV R1, #0x10008000
Pour le MOV registre, #Imm
8 bits est utilisé pour l’entier et
4bits pour la rotation
LDR R1, =0x10008000
Pour le LDR registre, =Imm
est transformé par l’assembleur
en d’autres instructions
On ne peut pas faire une rotation 4
bits avec un entier 8bits
Registre -> Registre
X86 (8086)
1 octet
2 octets
MOV AH, AL
MOV AX, BX
Registre -> Registre
ARM
4 octets
MOV R0, R1
Déclaration de variables
Un octet
ARM
VAR1 DCB 0x12, 0x54, 0x70
VAR2 DCW 0x1212, 0x5400, 0x7000
VAR1 DB 0x12, 0x54, 0x70
VAR2 DW 0x1212, 0x5400, 0x7000
X86 (8086)
Un octet
Deux octets
Deux octets
VAR2 DCD 0x1FA212de, 0x54000450
Quatre octets
Chargement d’adresse
ARM X86
LDR R0, =VAR1 LEA BX, VAR1
Valeur Immédiate, Registre -> Mémoire
ARM X86
MOV [BX], AX
MOV BYTE PTR [BX], 80h 8 bits
MOV WORD PTR [BX], 80h 16 bits
STR R0, [R1]
STRH R0, [R1] 16 bits non signé
STRSH R0, [R1] 16 bits signé
STRB R0, [R1] 8 bits non signé
STRSB R0, [R1] 8 bits signé
MOV [100h], AX
Registre vers Adresse Immédiate
Registre vers Adresse taille/type Registre vers Adresse Registre
Registre vers Adresse Registre avec taille
Registre vers Adresse Registre
MOV [BX + SI], AX
MOV [BX + 04h], AX
Mémoire -> Registre, Valeur Immédiate
ARM X86
MOV AX, [BX]
MOV AH, BYTE PTR [BX] 8 bits
MOV AX, WORD PTR [BX] 16 bits
LDR R0, [R1]
LDRH R0, [R1] 16 bits non signé
LDRSH R0, [R1] 16 bits signé
LDRB R0, [R1] 8 bits non signé
LDRSB R0, [R1] 8 bits signé
MOV AX, [100h]
Adresse Immédiate vers Registre
Adresse taille/type vers Registre Adresse Registre vers Registre
Adresse Registre avec taille vers Registre
Adresse Registre vers Registre
D’autres opérations mémoires sur ARM
Mouvement avec décalage d’indice Immédiat
LDR R0, [R1, #05] R0 ← [R1+ 05]
STR R0, [R1, #05] [R1+ 05] ← R0
LDR R0, [R1, #05]! R0 ← [R1+ 05]
R1 ← R1+ 05
STR R0, [R1, #05]! [R1+ 05] ← R0
R1 ← R1+ 05
LDR R0, [R1], #05 R0 ← [R1]
R1 ← R1+ 05
STR R0, [R1], #05 [R1] ← R0
R1 ← R1+ 05
Mouvement avec décalage d’indice Registre
LDR R0, [R1, R2] R0 ← [R1+ R2]
STR R0, [R1, R2] [R1+ R2] ← R0
LDR R0, [R1, R2]! R0 ← [R1+ R2]
R1 ← R1+ R2
STR R0, [R1, R2]! [R1+ 05] ← R0
R1 ← R1+ R2
LDR R0, [R1], R2 R0 ← [R1]
R1 ← R1+ R2
STR R0, [R1], R2 [R1] ← R0
R1 ← R1+ R2
Opérations arithmétiques
ADD R0, R1, R2 R0 ← R1 + R2
ADD R0, R1, #80 R0 ← R1 + 80
ADDS R0, R1, R2 R0 ← R1 + R2
Le suffix S = registre d’état mise à jour
ADD AX, BX AX ← AX + BX
ADD AX, 40h AX ← AX + 40h
ADD AX, [400h] AX ← AX + [400h]
ARM X86
SUB R0, R1, R2 R0 ← R1 - R2
SUB R0, R1, #04 R0 ← R1 - 4
SUBS R0, R1, R2 R0 ← R1 - R2
Le suffix S = registre d’état mise à jour
SUB AX, BX AX ← AX – BX
SUB AX, 40h AX ← AX - 40h
SUB AX, [400h] AX ← AX - [400h]
Le registre d’état toujours mise à jour
Opérations binaires
AND R0, R1, R2 R0 ← R1 and R2
AND R0, R1, #80 R0 ← R1 and 80
ANDS R0, R1, R2 R0 ← R1 and R2
Le suffix S = registre d’état mise à jour
AND AX, BX AX ← AX and BX
AND AX, 40h AX ← AX and 40h
AND AX, [400h] AX ← AX and [400h]
ARM X86
OR AX, BX AX ← AX or BX
OR AX, 40h AX ← AX or 40h
OR AX, [400h] AX ← AX or [400h]
ORR R0, R1, R2 R0 ← R1 or R2
ORR R0, R1, #80 R0 ← R1 or 80
ORRS R0, R1, R2 R0 ← R1 or R2
Le suffix S = registre d’état mise à jour Le registre d’état toujours mise à jour
D’autres combinaisons d’opérations pour
ARM

Contenu connexe

Plus de Tarik Zakaria Benmerar

Videostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plus
Videostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plusVideostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plus
Videostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plusTarik Zakaria Benmerar
 
Chapitre 6 - les instructions de chaînes de caractères
Chapitre 6  - les instructions de chaînes de caractèresChapitre 6  - les instructions de chaînes de caractères
Chapitre 6 - les instructions de chaînes de caractèresTarik Zakaria Benmerar
 
Chapitre 5 - fichiers EXE-COM pour le dos
Chapitre 5 -  fichiers EXE-COM pour le dosChapitre 5 -  fichiers EXE-COM pour le dos
Chapitre 5 - fichiers EXE-COM pour le dosTarik Zakaria Benmerar
 
Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...
Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...
Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...Tarik Zakaria Benmerar
 
Chapitre 2.1 - architecture d'un microprocesseur - bus et communication
Chapitre 2.1 -  architecture d'un microprocesseur - bus et communicationChapitre 2.1 -  architecture d'un microprocesseur - bus et communication
Chapitre 2.1 - architecture d'un microprocesseur - bus et communicationTarik Zakaria Benmerar
 
Chapitre 1 - représentation numérique des données
Chapitre 1  - représentation numérique des donnéesChapitre 1  - représentation numérique des données
Chapitre 1 - représentation numérique des donnéesTarik Zakaria Benmerar
 
Chapitre 3 - Protocole Bus CAN (2020/2021
Chapitre 3 - Protocole Bus CAN (2020/2021Chapitre 3 - Protocole Bus CAN (2020/2021
Chapitre 3 - Protocole Bus CAN (2020/2021Tarik Zakaria Benmerar
 
Chapitre 2 - Protocole Modbus (2020/2021)
Chapitre 2 - Protocole Modbus (2020/2021)Chapitre 2 - Protocole Modbus (2020/2021)
Chapitre 2 - Protocole Modbus (2020/2021)Tarik Zakaria Benmerar
 
Chapitre 3 - Commutation dans les LANs
Chapitre 3 - Commutation dans les LANsChapitre 3 - Commutation dans les LANs
Chapitre 3 - Commutation dans les LANsTarik Zakaria Benmerar
 

Plus de Tarik Zakaria Benmerar (20)

Videostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plus
Videostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plusVideostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plus
Videostreaming et visioconference pour le Web - Evènement GDSC USTHB Tech plus
 
Chapitre 8 - les entrées - sorties
Chapitre 8  - les entrées - sortiesChapitre 8  - les entrées - sorties
Chapitre 8 - les entrées - sorties
 
Cyber pink - Time Management
Cyber pink -  Time Management Cyber pink -  Time Management
Cyber pink - Time Management
 
Chapitre 6 - couche transport
Chapitre 6  - couche transportChapitre 6  - couche transport
Chapitre 6 - couche transport
 
Chapitre 5 - couche réseaux
Chapitre 5 - couche réseauxChapitre 5 - couche réseaux
Chapitre 5 - couche réseaux
 
Chapitre 4 - couche liaison
Chapitre 4 - couche liaisonChapitre 4 - couche liaison
Chapitre 4 - couche liaison
 
Chapitre 3 - connecteurs et câbles
Chapitre 3 -   connecteurs et câblesChapitre 3 -   connecteurs et câbles
Chapitre 3 - connecteurs et câbles
 
Chapitre 2 - Transmission
Chapitre 2  - TransmissionChapitre 2  - Transmission
Chapitre 2 - Transmission
 
Chapitre 1 - notions fondamentales
Chapitre 1 -  notions fondamentalesChapitre 1 -  notions fondamentales
Chapitre 1 - notions fondamentales
 
Chapitre 9 - les interruptions
Chapitre 9 -  les interruptionsChapitre 9 -  les interruptions
Chapitre 9 - les interruptions
 
Chapitre 6 - les instructions de chaînes de caractères
Chapitre 6  - les instructions de chaînes de caractèresChapitre 6  - les instructions de chaînes de caractères
Chapitre 6 - les instructions de chaînes de caractères
 
Chapitre 5 - fichiers EXE-COM pour le dos
Chapitre 5 -  fichiers EXE-COM pour le dosChapitre 5 -  fichiers EXE-COM pour le dos
Chapitre 5 - fichiers EXE-COM pour le dos
 
Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...
Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...
Chapitre 2.2 - architecture d'un microprocesseur - jeux d'instructions et reg...
 
Chapitre 2.1 - architecture d'un microprocesseur - bus et communication
Chapitre 2.1 -  architecture d'un microprocesseur - bus et communicationChapitre 2.1 -  architecture d'un microprocesseur - bus et communication
Chapitre 2.1 - architecture d'un microprocesseur - bus et communication
 
Chapitre 1 - représentation numérique des données
Chapitre 1  - représentation numérique des donnéesChapitre 1  - représentation numérique des données
Chapitre 1 - représentation numérique des données
 
Chapitre 3 - Protocole Bus CAN (2020/2021
Chapitre 3 - Protocole Bus CAN (2020/2021Chapitre 3 - Protocole Bus CAN (2020/2021
Chapitre 3 - Protocole Bus CAN (2020/2021
 
Chapitre 2 - Protocole Modbus (2020/2021)
Chapitre 2 - Protocole Modbus (2020/2021)Chapitre 2 - Protocole Modbus (2020/2021)
Chapitre 2 - Protocole Modbus (2020/2021)
 
Chapitre 4 - Réseaux Ethernet
Chapitre 4 - Réseaux EthernetChapitre 4 - Réseaux Ethernet
Chapitre 4 - Réseaux Ethernet
 
Chapitre 3 - Commutation dans les LANs
Chapitre 3 - Commutation dans les LANsChapitre 3 - Commutation dans les LANs
Chapitre 3 - Commutation dans les LANs
 
Chapitre 2 - Réseaux locaux
Chapitre 2 - Réseaux locauxChapitre 2 - Réseaux locaux
Chapitre 2 - Réseaux locaux
 

Chapitre 3 - échanges de données et opérations arithmétiques - binaires

  • 1. Echange de données et opérations arithmétiques / binaires – Module Microprocesseur TARIK ZAKARIA BENMERAR, PHD DEPARTEMENT INSTRUMENTATION ET AUTOMATIQUE, USTHB
  • 2. Valeur Immédiate -> Registre X86 (8086) 1 octet 2 octets MOV AH, 35 MOV AL, 12H MOV BL, 01010001b MOV AX, 1200 MOV BX, F340H MOV DX, 0101000101010001b
  • 3. Valeur Immédiate -> Registre ARM (32 bits) 4 octets MOV R1, #0x00008000 MOV R1, #0x10008000 Pour le MOV registre, #Imm 8 bits est utilisé pour l’entier et 4bits pour la rotation LDR R1, =0x10008000 Pour le LDR registre, =Imm est transformé par l’assembleur en d’autres instructions On ne peut pas faire une rotation 4 bits avec un entier 8bits
  • 4. Registre -> Registre X86 (8086) 1 octet 2 octets MOV AH, AL MOV AX, BX
  • 5. Registre -> Registre ARM 4 octets MOV R0, R1
  • 6. Déclaration de variables Un octet ARM VAR1 DCB 0x12, 0x54, 0x70 VAR2 DCW 0x1212, 0x5400, 0x7000 VAR1 DB 0x12, 0x54, 0x70 VAR2 DW 0x1212, 0x5400, 0x7000 X86 (8086) Un octet Deux octets Deux octets VAR2 DCD 0x1FA212de, 0x54000450 Quatre octets
  • 7. Chargement d’adresse ARM X86 LDR R0, =VAR1 LEA BX, VAR1
  • 8. Valeur Immédiate, Registre -> Mémoire ARM X86 MOV [BX], AX MOV BYTE PTR [BX], 80h 8 bits MOV WORD PTR [BX], 80h 16 bits STR R0, [R1] STRH R0, [R1] 16 bits non signé STRSH R0, [R1] 16 bits signé STRB R0, [R1] 8 bits non signé STRSB R0, [R1] 8 bits signé MOV [100h], AX Registre vers Adresse Immédiate Registre vers Adresse taille/type Registre vers Adresse Registre Registre vers Adresse Registre avec taille Registre vers Adresse Registre MOV [BX + SI], AX MOV [BX + 04h], AX
  • 9. Mémoire -> Registre, Valeur Immédiate ARM X86 MOV AX, [BX] MOV AH, BYTE PTR [BX] 8 bits MOV AX, WORD PTR [BX] 16 bits LDR R0, [R1] LDRH R0, [R1] 16 bits non signé LDRSH R0, [R1] 16 bits signé LDRB R0, [R1] 8 bits non signé LDRSB R0, [R1] 8 bits signé MOV AX, [100h] Adresse Immédiate vers Registre Adresse taille/type vers Registre Adresse Registre vers Registre Adresse Registre avec taille vers Registre Adresse Registre vers Registre
  • 10. D’autres opérations mémoires sur ARM Mouvement avec décalage d’indice Immédiat LDR R0, [R1, #05] R0 ← [R1+ 05] STR R0, [R1, #05] [R1+ 05] ← R0 LDR R0, [R1, #05]! R0 ← [R1+ 05] R1 ← R1+ 05 STR R0, [R1, #05]! [R1+ 05] ← R0 R1 ← R1+ 05 LDR R0, [R1], #05 R0 ← [R1] R1 ← R1+ 05 STR R0, [R1], #05 [R1] ← R0 R1 ← R1+ 05 Mouvement avec décalage d’indice Registre LDR R0, [R1, R2] R0 ← [R1+ R2] STR R0, [R1, R2] [R1+ R2] ← R0 LDR R0, [R1, R2]! R0 ← [R1+ R2] R1 ← R1+ R2 STR R0, [R1, R2]! [R1+ 05] ← R0 R1 ← R1+ R2 LDR R0, [R1], R2 R0 ← [R1] R1 ← R1+ R2 STR R0, [R1], R2 [R1] ← R0 R1 ← R1+ R2
  • 11. Opérations arithmétiques ADD R0, R1, R2 R0 ← R1 + R2 ADD R0, R1, #80 R0 ← R1 + 80 ADDS R0, R1, R2 R0 ← R1 + R2 Le suffix S = registre d’état mise à jour ADD AX, BX AX ← AX + BX ADD AX, 40h AX ← AX + 40h ADD AX, [400h] AX ← AX + [400h] ARM X86 SUB R0, R1, R2 R0 ← R1 - R2 SUB R0, R1, #04 R0 ← R1 - 4 SUBS R0, R1, R2 R0 ← R1 - R2 Le suffix S = registre d’état mise à jour SUB AX, BX AX ← AX – BX SUB AX, 40h AX ← AX - 40h SUB AX, [400h] AX ← AX - [400h] Le registre d’état toujours mise à jour
  • 12. Opérations binaires AND R0, R1, R2 R0 ← R1 and R2 AND R0, R1, #80 R0 ← R1 and 80 ANDS R0, R1, R2 R0 ← R1 and R2 Le suffix S = registre d’état mise à jour AND AX, BX AX ← AX and BX AND AX, 40h AX ← AX and 40h AND AX, [400h] AX ← AX and [400h] ARM X86 OR AX, BX AX ← AX or BX OR AX, 40h AX ← AX or 40h OR AX, [400h] AX ← AX or [400h] ORR R0, R1, R2 R0 ← R1 or R2 ORR R0, R1, #80 R0 ← R1 or 80 ORRS R0, R1, R2 R0 ← R1 or R2 Le suffix S = registre d’état mise à jour Le registre d’état toujours mise à jour