Accueil > > > HELLO WORLD (SANS L'INTERRUPTION DU DOS) [TASM]
HELLO WORLD (SANS L'INTERRUPTION DU DOS) [TASM]
Information sur la source
Description
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
- ;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
;--------------------------------------------------------------------
Conclusion
bon si vous avez des questions ninkosen@yahoo.fr ou bien des améliorations à apporter au code n'hésitez pas ;-) @+
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
VISUAL STUDIO TALK SHOW: EF4VISUAL STUDIO TALK SHOW: EF4 par Matthieu MEZIL
La semaine dernière, j'étais à Montréal pour y animer des conférences sur Entity Framework. J'en ai profité pour enregister un podcast Visual Studio Talk Show que vous pouvez retrouver ici ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [MIX 2010] - WINDOWS PHONE 7 EN SUPER STAR DU MICROSOFT MIX 2010 ![MIX 2010] - WINDOWS PHONE 7 EN SUPER STAR DU MICROSOFT MIX 2010 ! par redo
Me voici enfin arrivé au Microsoft Mix 2010, je dois vous avouer être arrivé un peu plus tard que d'habitude, ce qui explique que je n'ayez vu aucune info passer quant au premier keynote . certains événements sont plus importants que tout, ce qui était mo...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - LIVRE GRATUIT SUR PROGRAMMER WINDOWS PHONE 7 SERIES ![MIX 2010] - LIVRE GRATUIT SUR PROGRAMMER WINDOWS PHONE 7 SERIES ! par redo
Disponible gratuitement : (153 pages) PDF Version : http://download.microsoft.com/download/7/C/8/7C820C6F-C205-4ECF-B9F3-1505DD13F9BF/ProgWinPhonePreview.pdf XPS Version : http://download.microsoft.com/download/E/3/5/E359FC51-1CF5-47F1-9BF3-74AB09D3339B/P...
Cliquez pour lire la suite de l'article par redo SQL SERVER : ESTIMER LE NOMBRE DE LIGNES RENVOYéES PAR UNE REQUêTE AVEC SQLCLRSQL SERVER : ESTIMER LE NOMBRE DE LIGNES RENVOYéES PAR UNE REQUêTE AVEC SQLCLR par christian
Dans certains cas très particuliers il peut être intéressant de savoir le nombre de ligne que va renvoyer une requête sans exécuter cette dernière. En effet les opérations de comptage sont généralement gourmande en ressource est très difficile à optim...
Cliquez pour lire la suite de l'article par christian [WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF![WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF! par JeremyJeanson
Le code suivant est destiné à répondre à une problématique courante en Workflow : Vous avez une activité dont le designer est complexe ou dont l'affichage prend une place importante à l'écran et la possibilité Collapse/Expand ne répond pas pleinement à vo...
Cliquez pour lire la suite de l'article par JeremyJeanson
Forum
RE : CSHARPRE : CSHARP par ghuysmans99
Cliquez pour lire la suite par ghuysmans99 CSHARPCSHARP par nano16
Cliquez pour lire la suite par nano16
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|