- ;CODE ASM COMPILE SOUS TASM 4.1
-
- ;------------------------SEGMENT DE DONNEES-------------------------
- ;-------------------------------------------------------------------
- data segment public
- Hello db 'Hello world (version bios)',10,13,'$'
- data ends
-
-
- ;------------------------SEGMENT DE CODE----------------------------
- ;-------------------------------------------------------------------
- code segment public
- assume cs:code, ds:data, ss:stack_s
-
- start:
- mov ax, data ;synchronise le segment de donnée data avec ds
- mov ds, ax
-
- mov dx, Offset Hello
- call afficher_chaine
-
- mov ax, 4C00h ;mets la fonction de sortie du programme(4C)+aucune erreur(00)
- int 21h ;sortie
-
-
- afficher_chaine:
- push ax ;on sauvegarde ax et si dans la pile
- push si
- mov si, dx ;on met l'@ du premier caractère de la chaine dans si
- boucle:
- mov ax, [si] ;on récupère le caractère courant
- cmp ax, '$' ;s'il sagit de $
- je finboucle ;alors on arrête
-
- mov ah, 0Eh ;on mets la fonction affichage dans A (le caractère est déjà dans la partie basse)
- int 10h ;interruption bios pour afficher le caractère
-
- inc si ;on passe au caractère suivant
- jmp boucle ;on boucle
- finboucle:
- pop si ;on restaure les registres
- pop ax
- ret
- code ends
- ;--------------------------------------------------------------------
-
-
-
-
- ;------------------------SEGMENT DE LA PILE--------------------------
- ;--------------------------------------------------------------------
- stack_s segment stack
- db 100h dup (?) ;déclare une pile de 256 octets
- stack_s ends
- ;--------------------------------------------------------------------
-
-
-
-
- ;------------------------SAUT AU DEBUT DU PROGRAMME------------------
- end start
- ;--------------------------------------------------------------------
;CODE ASM COMPILE SOUS TASM 4.1
;------------------------SEGMENT DE DONNEES-------------------------
;-------------------------------------------------------------------
data segment public
Hello db 'Hello world (version bios)',10,13,'$'
data ends
;------------------------SEGMENT DE CODE----------------------------
;-------------------------------------------------------------------
code segment public
assume cs:code, ds:data, ss:stack_s
start:
mov ax, data ;synchronise le segment de donnée data avec ds
mov ds, ax
mov dx, Offset Hello
call afficher_chaine
mov ax, 4C00h ;mets la fonction de sortie du programme(4C)+aucune erreur(00)
int 21h ;sortie
afficher_chaine:
push ax ;on sauvegarde ax et si dans la pile
push si
mov si, dx ;on met l'@ du premier caractère de la chaine dans si
boucle:
mov ax, [si] ;on récupère le caractère courant
cmp ax, '$' ;s'il sagit de $
je finboucle ;alors on arrête
mov ah, 0Eh ;on mets la fonction affichage dans A (le caractère est déjà dans la partie basse)
int 10h ;interruption bios pour afficher le caractère
inc si ;on passe au caractère suivant
jmp boucle ;on boucle
finboucle:
pop si ;on restaure les registres
pop ax
ret
code ends
;--------------------------------------------------------------------
;------------------------SEGMENT DE LA PILE--------------------------
;--------------------------------------------------------------------
stack_s segment stack
db 100h dup (?) ;déclare une pile de 256 octets
stack_s ends
;--------------------------------------------------------------------
;------------------------SAUT AU DEBUT DU PROGRAMME------------------
end start
;--------------------------------------------------------------------