Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1

    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2012
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : janvier 2012
    Messages : 57
    Points : -12
    Points
    -12

    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

  2. #2
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro Eric Garidacci
    Inscrit en
    septembre 2005
    Messages
    1 112
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric Garidacci
    Âge : 43

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 112
    Points : 1 761
    Points
    1 761

    Par défaut

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •