On connaissait déjà la manière d'afficher le "Hello World" grâce à la fonction 09h du dos mais comment afficher une chaine de caractères avec l'interruption bios sans avoir à afficher chaque lettre une à une, c'est bien sûr possible, voici comment je procède :
Source / Exemple :
;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
;--------------------------------------------------------------------
Conclusion :
bon si vous avez des questions ninkosen@yahoo.fr ou bien des améliorations à apporter au code n'hésitez pas ;-) @+
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.