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
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
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