J'essaye de coder ceci en langage assembleur x86, mais pour une raison quelconque, mon programme se bloque. Voici la mission. Ecrivez une fonction en langage assembleur qui recevra une liste (tableau) de 10 valeurs de 16 bits et un numéro , N, entre 1 et 10, entré par l'utilisateur. La fonction AL doit déplacer la Nième valeur au début de la liste en de la manière suivante: Pousser toutes les valeurs de l'élément 1 vers l'élément N-1 de la pile. Relocaliser la valeur à l'élément N à l'élément 1. Pop la pile et de restaurer ses éléments dans des endroits N, N-1, ..., 2Implémentation de l'assemblage d'éléments de tableau
Voici mon code
void __declspec (naked) asmSwitch(short[], int)
{
__asm
{
push ebp
push eax
push ebx
push ecx
push edx
push ebx
mov ebp, esp
mov ecx, [ebp + 12] ; the element
dec ecx ;
mov ebx, [ebp + 8] ; est ptr to array
TOP: push [ebx] ;
inc ebx ;
inc ebx
loop TOP
mov ax, [ebx]
mov ebx, [ebp + 8]
mov [ebx], ax
mov ecx, [ebp + 12]
dec ecx
mov eax, ecx
add eax, eax
add ebx, eax
TOP1: pop [ebx]
dec ebx
dec ebx
loop TOP1
pop esi
pop edx
pop ecx
pop ebx
pop eax
pop ebp
ret
}
}
Je reçois violation lire erreur sur
TOP: push [ebx] ;
Et mon programme se bloque après la compilation.
qui a résolu mon problème. Merci beaucoup! –