[TASM] Help Noob

Help Noob [TASM] - ASM - Programmation

Marsh Posté le 25-02-2005 à 19:54:52    

Bonjours, j'ai débuté l'ASM TASM (=> 16 bits )  il y a 2 jours. Lorsque j'essais d'affecter une valeur à une variable, il y a toujours de s messages d'erreur.
 
1) Comment déclarer un variable non initialisée ( je crois que c'est : bidon db ?, 10, 13, '$' pour afficher des lettre mais je ne suis pas sur ) pour afficher des lettres ?
                                                                                      des chiffre ?
 
2) Comment affecter un chiffre à une variable ?
( genre mov mavar, 1 )
 
3) Enfin comment afficher cette variable à l'ecran ( grace à l'interuption 21h si possible ... )
 
Merci d'avance !  
PS : Ce forum est génial, j'y ai plus appris en 5 min que 2h sur d'autre genre CS, ils sont super mais pas pour l'ASM ( encore moin le 16 bits )

Reply

Marsh Posté le 25-02-2005 à 19:54:52   

Reply

Marsh Posté le 25-02-2005 à 22:26:31    

arsenik11 a écrit :

Bonjours, j'ai débuté l'ASM TASM (=> 16 bits )  il y a 2 jours. Lorsque j'essais d'affecter une valeur à une variable, il y a toujours de s messages d'erreur.
 
1) Comment déclarer un variable non initialisée ( je crois que c'est : bidon db ?, 10, 13, '$' pour afficher des lettre mais je ne suis pas sur ) pour afficher des lettres ?
                                                                                      des chiffre ?


déclarer une variable non initialisée se résume à réserver suffisamment d'espace mémoire
dd ? => réserve un dword (32 bits)
db ? => réserve un octet (8 bits)
dw ? => réserve un word (16 bits)
 

arsenik11 a écrit :


2) Comment affecter un chiffre à une variable ?
( genre mov mavar, 1 )


c'est bien  
mov variable,1
 
cette opération écrit la valeur "1" dans l'adresse mémoire pointée par "variable". ceci est toutefois à éviter, il vaut mieux écrire dans un registre que dans la mémoire chaque fois que c'est possible, c'est bien plus performant.
sinon, fais aussi gaffe à la taille de tes variables (évite d'écrire un dword à un endroit où tu as reservé un octet), et au stockage dans la mémoire (little/big endian)
 

arsenik11 a écrit :


3) Enfin comment afficher cette variable à l'ecran ( grace à l'interuption 21h si possible ... )


avec la fonction 9h de l'interruption 21h. par contre, il faut faire gaffe car cette fonction écrit la valeur ASCII, et non la valeur numérique. tu dois donc effectuer une conversion (très simple à faire, je te laisse chercher)


Message édité par Harkonnen le 25-02-2005 à 22:27:47

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-02-2005 à 23:29:31    

Pour la conversion, j'ai trouvé c'est super simple ( X + 48 ).
Mais mon code m'affiche plein de caractère de m**de avec des BEEP ...
 
Voici mon code :
 
; Directives d'assemblage
; ------------------------------
.386
code segment use16
assume cs:code, ds:code, ss:code
 
org 100h
; -------------------------------
 
debut:
 
push dx
 
mov dx, 48
 
mov ah, 09h
mov dx, offset nb
int 21h
 
pop dx
 
; Fermeture du programme
; ------------------------------
ret
 
; Déclaration de la variable
nb dw ?
 
code ends
end debut
; -------------------------------
 
Merci pour ces préieuses infos.
++

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed