Copy Link
Add to Bookmark
Report

Asmbeginer en ezine part 1

eZine's profile picture
Published in 
Asmbeginer en ezine
 · 21 Aug 2020

  


Asmbeginer en ezine !!! aout 1999
=================================================================================================
http://www.multimania.com/asmbeginer (c) putois

****************
** Apprendre **
** **
****************
*** ***
*** l'asm ***
*************

INDEX:
-----
1]Role des directives
2]Ta toujours pas compris
3]Les registres
4]Le mode texte


YO, yes encore un emag qui va parler de: "comment programmer avec TASM.Non ce n'est pas des minis
how to,mais des vrais cours.

Non mon emag n'est pas fait pour des cours de cracks.

Let's begin!!
-------------

En deux mots par ou commencer?.C'est simple ya qu'a commencer par des sources simples,des .EXEcu
table,et bien sur de connaitre un minimum de directive proposé par tasm.

1]Role de la directive
_-_-_-_-_-_-_-_-_-_-_-

Elle precise a tasm le type de memoire que l'on veut utiliser: Tiny,small,medium,compact,large,
huge,data16, pour le stack segment qui sert a creer le fichier .exe.

En voici quelque exemples:
--------------------------

data16 segment public
hello db 'hello world',13,13,'$'
data16 ends

code16 segment public
assume cs:code16, ds:data16, ss:stack16
start16:
mov ax:data16
mov ds,ax
mov dx,offset hello
mov ah,4ch
com16 ends

stack16 segment stack
db 200h dup(?)
stack16 ends
end start16

tasm /o toto.asm
tlink toto.obj

Exemple avec le model TINY
--------------------------

.model tiny
.stack
.data
hello db 'hello world',13,10,'$' ;affiche hello a l'ecran
.code

start:
mov ax,@data
mov ds,ax

mov dx,offset hello ;appel du texte
mov ah,9h ;attend une touche
int 21h ;de l'int 21h

mov ah,4ch ;procedure de sortie
int 21h ;pour l'int 21h
end start

tasm /o toto.asm
tlink toto.obj

Note:pour les autres directives on a juste a remplace .model tiny par .model small par exemple.
Le 13,10 demande un retour a la ligne et le '$' marque la fin du texte que l'on veut afficher
avec la variable hello.

Tasm nous permet aussi de preciser le type de processeur de la machine Ex:.286,.386,.486,.586 ..

.386
donnees segment para public use16
donnees ends

code segment para public use16
assume cs:code, ds:donnees
start:
mov bx,10
begin:


code ends

pile segment para stack use16 'stack'
db 2048 dup(?)
pile ends
end start

Bon voila en quelque lignes, le tour pour les directives.

2]Vous n'avez toujours pas compris :(
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

Pour ce qui est des .exe,les codes avec les .model tiny (par ex) sont preferables,plutot que la
data16.Donc afin de creer un exe avec tasm le code se presente toujours comme ceci:

1) .model tiny
.stack
.data
.code

2)Entre la ligne .data et .code c'est la que viennent les variables a afficher a l'ecran
par l'intermediare de DB.

3) .model tiny
.stack
.data
.code
---------------
begin: -
mov ax,@data -
mov ds,ax -- begin: et indispensable pour marquer le debut du code,les 2 autres sont pour
- la creation de l'.exe.Ensuite tu place ton code apres la ligne mov ds,ax
------------------ tu mets ce que tu veux, :))

mov ah,4ch ;procedure de sortie
int 21h ;pour l'int 21h
end start

Bon ben la c'est comprehensible le mov ah,4ch fait quitter le programme par l'int 21h.
Note: l'int 22h fais planter windows.


3]Les registres
_-_-_-_-_-_-_-_

Leur role: utiliser les memoires du micro processeur.

Le registre EAX:
al,ah,ax : Variable, caractère, sur les ports entrées sorties

Le registre EBX:
bl,bh,bx : registre de base d'une structure mémoire

Le registre ECX:
cl,ch,cx : utilisé pour les itérations et répétitions, boucles..

Le registre EDX:
dl,dh,dx : utilise pour les entrées sorties(matériels)

Voila en gros pour les registres de base.



4]Programmation de base: Le mode texte
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

C'est comme on la vue avec le programme d'exemple du .model tiny ou l'on affiche hello world à
l'ecran.L'ecriture se fais par l'appel de la commande OFFSET initialiser dans le .code.
Pour afficher d'autre texte a l'ecran on a juste a rajouter ces lignes:

mov dx,offset hello ;appel du texte
int 21h ;de l'int 21h

mov dx,offset hello2 ;appel du texte
int 21h ;de l'int 21h

Autant de variable que l'on veut utiliser pour afficher un texte on utilisera ces trois lignes
qui sont bien sur indispensable en oubliant pas de l'ajouter dans les variables.
Le source:

.model tiny
.stack
.data
hello db 'hello world',13,10,'$' ;affiche hello a l'ecran
hello2 db 'second teste',13,10, '$'
.code

start:
mov ax,@data
mov ds,ax

mov dx,offset hello ;appel du texte
int 21h ;de l'int 21h

mov dx,offset hello2 ;appel du texte
int 21h ;de l'int 21h


mov ah,4ch ;procedure de sortie
int 21h ;pour l'int 21h
end start

Effacer l'ecran:
----------------
C'est le role de l'int 10h et la int 0003h qui fais un cls en mode texte.ce code vous pouvez le
rajouter ou vous voulez dans la boucle start:

mov ax,0013h ;initialise le mode texte de l'int 10h
int 10h ;mode video
mov ax,003h ;efface ecran
int 10h ;mode video

Le mode 320*200
---------------

vga graphics: a000
vga text : b800

Source:

mov ax,0013h
int 10h
mov ax,0a000h ; ou 0b800h
mov es,ax ; le registre es sert a appeler le registre ax qui active le mode texte

Bon voila,c'est tout pour ce premier emag on va voir ce que ca donne :) Thank !

*************
** end of ***
** part I ***
*************

loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT