Déclaration générale d'un segment:
"nom" segment [public|stack]
...Instructions ou données...
"nom" ends
L'instruction ASSUME informe TASM de l'utilisation courante du registre de segment. Code16
est un segment de code, donc cs est assumé à code16. Data16 est un segment de data, donc ds est
assumé à data16. Stack16 est un segment de stack, donc ss est assumé à stack16. Au démarrage,
le DOS adapte cs (registre du segment de code) et ss (registre du segment de stack) mais pas ds
(registre du segment de data). Donc vous devez adapter ds ou vous risquez d'avoir des surprises.
Adapter le registre de data:
mov ax, data16 ; on utilise ax parcequ'on ne peut pas écrire
; 'mov ds, data16': data16 est une immédiate
mov ds, ax ; A présent ds est adapté
Le segment de stack et le segment de data sont des segments pour les données. Mais le segment
de stack est une zone de mémoire temporaire pour push ou pop, c'est la raison pour laquelle il n'y
a qu'un blanc d'octets. Le segment de data peut contenir des constantes et des variables. Dans cet
exemple, 'Hello' est une constante sous la forme d'une chaîne. Dans le programme, nous plaçons
l'offset de 'Hello' dans dx parceque l'interruption DOS requiert un offset pour afficher un texte à
l'écran. 'Hello' est la première variable donc son offset est 0.
Déclaration des données:
"nom" db ? ; Variable 8 bits: Byte
"nom" dw ? ; Variable 16 bits: Word
"nom" dd ? ; Variable 32 bits: Dword
"nom" db ?,? ; Deux Bytes
"nom" dw ?,?,?,? ; Quatre Words
"nom" db 'Hello' ; Chaîne de Bytes
"nom" dw 32 dup (?) ; 32 Words
Ne vous inquiétez pas si vous ne comprenez pas tout, retapez juste l'exemple et conservez
l'essentiel.
Sauts Conditionnels
Table des Sauts
Programme d'exemple