Salut,
Etant donné que la ligne
suit l'instruction
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...
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
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é...
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.
Partager