Précédent   Forum du club des développeurs et IT Pro > Autres langages > Assembleur
Assembleur Forum d'entraide Assembleur. Avant de poster -> F.A.Q Assembleur Tutoriels Assembleur
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/01/2012, 19h07   #1
chiti
 
Homme
Étudiant
Inscription : janvier 2012
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 30
Points : -10
Points : -10
Par défaut Que fait ce programme ?

Bonjour,
j'ai ce programme

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mov cx,256 
 
mov ax,00ff h 
 
mov ds,ax 
 
xor bx,bx 
 
saut: mov[bx],al 
 
dec cx 
 
inc bx 
 
jnz saut
pouvez vous m'expliquer ce qu'il fait au just ????
car je suis confus entre
-Le JNZ teste si CX =0
-Le JNZ qui compare entre BX et CX
chiti est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 06/01/2012, 22h26   #2
Eric2a
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 094
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 42

Informations forums :
Inscription : septembre 2005
Messages : 1 094
Points : 1 648
Points : 1 648
Salut,

Etant donné que la ligne
jnz saut 
suit l'instruction
inc bx
ET que le registre des indicateurs est influencé par l'instruction INC, le branchement vers "saut" se fera 65535 fois.

Le processeur ne sort de la boucle qu'une fois le registre BX passe de 0FFFFh à 0000h.

Je pense que tu voulais faire un truc du genre...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
	push	ds	; Sauvegarde DS
 
	mov	ax,0FFh	; AX = Segment de données = 0FFh
	mov	ds,ax	; DS = AX
	xor	bx,bx	; BX = Offset de départ = 0 
 
	mov	cx,256	; CX = Nombre d'itérations = 256
	mov	al,0FFh	; AL = Valeur à transférer = 0FFh
 
saut:	mov	[bx],al	; Contenu de DS:[BX] = AL
	inc	bx 	; Incrémentation de BX
	dec	cx	; Décrementation de CX 
	jnz	saut	; Aller à 'saut' si CX <> 0
 
	pop	ds	; Restaure DS
ou mieux
Code :
1
2
3
4
5
6
7
8
9
mov	ax,0FFh	; AX = Segment de données = 0FFh
mov	es,ax	; ES = AX
xor	di,di	; DI = Offset de départ = 0 
 
mov	cx,256	; CX = Nombre d'itérations = 256
mov	al,0FFh	; AL = Valeur à transférer = 0FFh
 
rep	stosb	; Contenu de ES:[DI] = AL ; Incrémentation de DI
		; Décrementation de CX ; Répeter l'opération tant que CX <> 0
Remarque !

J'ai laissé...
Code :
mov	ax,0FFh	; AX = Segment de données = 0FFh
mais évidemment, il faut revoir cette valeur afin de pouvoir pointer une zone de mémoire où nous pouvons transférer des données sans créer de conflits.
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h39.


 
 
 
 
Partenaires

Hébergement Web