Vous êtes sur la page 1sur 2

a

| dw
| 10
variable | son type | sa valeur

segment bss == SS
segment text == CS
db
dw
dd
dq

= define byte (8 octets )


== define word (2 octets)
== define double word
== define qword (32octet )

_main est une label ou bien une etiquette d'une instruction


_nom en general
sert a specifier chaque intruction
**Compilation
-----------nasm -g -f win32 nom_code.asm ==> conversion de asm vers obj
---------- options g : get , f : file **Edition
creation du fichier executable partir du fichier obj
------------gcc -g -o nom.exe nom_code.obj =====> conv exe
------------***********************
Commands GDB :
break (label)
run
info registers(affichage du contenu du reg _valeur_)
print --- /x --- $eax
////
cont == continue
///
Au niveau du debugger :
break b100 (inst 1 )
break b150 (inst 2 )
break b200 (inst 3 )
break fin(ret)
run
info registers(affichage des infos concernant les registres )
count
info registers
(eax = 10)
info registers
(ebx = @a)
info registers
(ebx = eax = @a)
Pour afficher le contenu d'une variable
print x/1w &a
x ==hex
1 = une seule variable
w = type de variable (en fonction du type de variable )
pour les registres
print /x $eax

exo 3 :
autre solution : ( en utilisation l'adresse)
mov ax , [a+2]
mov bx , [a] // du a la taille du registre bx(16bits et 'a' contient l'adresse
du premier octet)
----------pour 32bit
mov ebx ,[a]
-----------mov bh ,al
mov al,ah
mov ah,bl
mov bl ,cl
*******************
pour byte
mov al , [a]
mov cl ,[b]
mul cl ===== al = al*cl
pour word
le resultat va etre stock en ax et dx
pour extended c'est eax et edx

Vous aimerez peut-être aussi