Hello world (sans l'interruption du dos) [tasm]

Contenu du snippet

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 ;-) @+

A voir également

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.