Académique Documents
Professionnel Documents
Culture Documents
Exemple :
Soit deux segment data1 et data2 qui contient deux étiquetes respectivement A et B.
data1 segment
A db "ABCD"
data1 ends
data2 segment
B db "EFGH"
data2 ends
Réponse : pour adresser A et B en mémoire on aurra besoin deux numéros de segments pour cela on
va utiliser deux registres de segments DS pour data1 et ES pour data2 pour faire ça on va utiliser la
directive assume.
ASSUME DS:data1,ES:data2
Donc ça signfier que pour adresser A et B on utilise respectivement les adresses logiques suivantes :
DS:[0000h] et ES:[0000h]
Exemple :
data2 segment
B db "EFGH"
data2 ends
code segment
ASSUME DS:data1,ES:data2,CS:code
start:
mov ax, data1
mov ds, ax
mov ax, data2
mov es, ax
mov al,A
mov bl,B
mov ax, 4c00h ; exit to operating system.
int 21h
code ends
end start ; set entry point and stop the assembler.
Après génération de l’exécutable comme il indique figure suivant on aura dans le registre AL la valeur
de l’adresse DS:[0000h] et dans registre BL la valeur de l’adresse ES :[0000h] elle est claire avant
l’instruction mov BL,[0000] on a ES : qui signifier que l’adresse dans l’instruction suivant sera calculé
par rapport ES.