Open Library
Retour vers l'index des ressources DOS.
Assembleur avec TASM (Turbo Assembler) sous DOS.
Afficher un message "Hello World".
.MODEL TINY ;La directive MODEL Definit le modele memoire utilise
;par ce programme.
;Le modele TINY utilise au maximum 64K octets pour
;les sections CODE, DATA et STACK du programme.
.STACK ;La directive STACK permet au compilateur de creer
;un segment STACK.
.DATA ;La directive DATA permet au compilateur de creer
;un segment DATA afin d'y placer des variables et
;d'y associer des adresses memoire physique.
;Declaration d'une chaine de caracteres.
;les 2 nombres 13 suivit de 10 indique un retour chariot
;Le caractere $ indique la fin de la chaine de caracteres.
HELLO db "Hello World!",13,10,'$'
.CODE ;La directive CODE permet au compilateur de creer
;un segment CODE qui contient les instructions
;executables du programme.
MAIN PROC ;Debut de la procedure principale MAIN du programme.
mov ax, @DATA ;Place l'adresse de DATA dans le registre AX.
mov ds, ax ;Place la valeur de AX dans DS (Data Segment).
;Car on ne peut directement placer l'adresse
;de DATA dans DS donc on transite par le registre AX.
mov dx, offset HELLO ;Pointe vers la chaine de caracteres HELLO
mov ah, 9 ;Fonction d'impression a l'ecran
;la chaine de caracteres.
int 21h ;Execute la fonction.
mov ax, 4C00h ;Fonction de fermeture du programme.
int 21h ;Execute la fonction.
MAIN ENDP ;Fin de la procedure MAIN du programme.
END MAIN ;Indique la fin du fichier en specifiant ici
;le point d'entree du programme MAIN.
Afficher un pixel sur l'ecran en mode VGA 13h.
.MODEL SMALL ;Definit le modele memoire sur SMALL.
;Ce modele memoire permet d'utiliser au maximum
;64K octets pour DATA (donn‚es) et 64K octets pour le CODE.
;Ce modele est courament utilise.
.STACK 100h ;Reserve 100h octets pour le segment STACK.
.CODE ;Segment CODE
MAIN PROC ;Debut de la procedure principale MAIN du programme.
mov ax,13h ;Initialisation du mode 13h:
int 10h ;Mode VGA en 256 couleurs 320x200.
mov ax,0A000h ;0A000h est l'adresse memoire video du mode VGA 13h
mov es,ax ;On charge l'adresse m‚moire video dans ES.
mov bx,7D64h ;Positionnement d'un pixel au centre de l'ecran.
;7D64h en hexadecimal = 32160 en decimal.
mov al,0ah ;Stoque la couleur dans le registre al.
mov es:[bx],al ;On place l'offset (deplacement memoire) BX
;sur l'adresse memoire ES, la couleur AL.
;Ce qui permet d'afficher directement un pixel
;colore sur l'ecran.
mov ah,07h ;Attend qu'une touche soit pressee sans afficher
int 21h ;Le caractere
mov ah,00h ;Retour en mode texte standard de DOS:
mov al,03h ;80 colonnes x 25 lignes.
int 10h
mov ah,4ch ;Termine le processus DOS actuel.
int 21h
MAIN ENDP ;Fin de la procedure MAIN du programme.
END MAIN ;Indique la fin du fichier et le point d'entree du programme.
Afficher une ligne en mode VGA 13h.
.MODEL SMALL ;Definit le modele memoire sur SMALL.
;Ce modele memoire permet d'utiliser au maximum
;64K octets pour DATA (donn‚es) et 64K octets pour le CODE.
;Ce modele est courament utilise.
.STACK 100h ;Reserve 100h octets pour le segment STACK.
.CODE ;Segment CODE
MAIN PROC ;Debut de la procedure principale MAIN du programme.
mov ax,13h ;Initialisation du mode 13h:
int 10h ;Mode VGA en 256 couleurs 320x200.
mov ax,0A000h ;0A000h est l'adresse memoire video du mode VGA 13h
mov es,ax ;On charge l'adresse memoire video dans ES.
mov bx,7D00h ;Positionnement sur la ligne horizontale du milieu.
;7D00h en hexadecimal = 32000 en decimal.
mov al,22h ;Stoque la couleur dans le registre al.
mov cx,320 ;Le registre CX sert de compteur pour la ligne.
;Cette ligne sera incremente d'un pixel par unite.
;La ligne fera donc ici 320 pixels de long.
LINE:
mov es:[bx],al ;Positionnement du nouveau pixel a afficher.
inc bx ;On incremente le registre BX de 1.
loop LINE ;Boucle vers LINE en decrementant CX de 1
;jusqu'a ce que CX arrive a zero.
;Donc la boucle continue temps que CX est
;superieur a zero.
;Cette boucle va donc afficher une ligne.
mov ah,07h ;Attend qu'une touche soit pressee sans afficher
int 21h ;Le caractere
mov ah,00h ;Retour en mode texte standard de DOS:
mov al,03h ;80 colonnes x 25 lignes.
int 10h
mov ah,4ch ;Termine le processus DOS actuel.
int 21h
MAIN ENDP ;Fin de la procedure MAIN du programme.
END MAIN ;Indique la fin du fichier et le point d'entree du programme.
Afficher un rectangle en mode VGA 13h.
.MODEL SMALL ;Definit le modele memoire sur SMALL.
;Ce modele memoire permet d'utiliser au maximum
;64K octets pour DATA (donn‚es) et 64K octets pour le CODE.
;Ce modele est courament utilise.
.STACK 100h ;Reserve 100h octets pour le segment STACK.
.CODE ;Segment CODE
MAIN PROC ;Debut de la procedure principale MAIN du programme.
mov ax,13h ;Initialisation du mode 22h:
int 10h ;Mode VGA en 256 couleurs 320x200.
mov ax,0A000h ;0A000h est l'adresse memoire video du mode VGA 13h
mov es,ax ;On charge l'adresse memoire video dans ES.
mov bx,7D64h ;Positionnement sur la ligne horizontale du milieu.
;7D64h en hexadecimal = 32160 en decimal.
mov al,2Bh ;Stoque la couleur dans le registre AL.
mov di,20 ;DI contient la hauteur du rectangle
ROW: ;Label ROW (Colonne)
mov cx,25 ;CX = compteur pour la largeur du rectangle.
LINE: ;Label LINE (Ligne)
mov es:[bx],al ;Positionne un pixel sur l'ecran.
inc bx ;On incremente le registre BX de 1.
loop LINE ;Boucle de LINE et decremente CX de 1.
;jusqu'a ce que CX arrive a zero.
;Fin de boucle LINE.
;Une ligne du rectangle est affichee.
add bx,320 ;On ajoute 320 a l'offset memoire BX:
;Passage a la ligne suivante.
sub bx,25 ;Soustrait de BX la longueur definie par CX.
dec di ;Decremente DI de 1 a chaque nouvelle ligne
;affichee afin que la hauteur corresponde
;a celle definie ci-dessus.
cmp di,0 ;Compare DI a 0.
jne ROW ;Si DI n'est pas egale a zero:
;On entre a nouveau dans la boucle ROW afin
;de creer une nouvelle ligne jusqu'a ce que
;la hauteur du rectangle soit atteintfe. DI
;sera egale a zero dans ce cas.
mov ah,07h ;Attend qu'une touche soit pressee sans afficher
int 21h ;Le caractere
mov ah,00h ;Retour en mode texte standard de DOS:
mov al,03h ;80 colonnes x 25 lignes.
int 10h
mov ah,4ch ;Termine le processus DOS actuel.
int 21h
MAIN ENDP ;Fin de la procedure MAIN du programme.
END MAIN ;Indique la fin du fichier et le point d'entree du programme.
Retour en haut de page.