Nous sommes en train d'étudier Intel 8086 Code d'insertion Trier que notre professeur nous a montré. Il voulait que nous comprenions pourquoi le code ignorait le 0ème élément du tableau et le 3ème élément du tableau à partir d'un code qu'il avait pris sur le web.Intel 8086 Insertion Trier: numéros Skipping dans le tableau
; void isort(int *a, int n)
; sorts the first n elements of a
;
; Parameters
; a - pointer to the array
; n - number of elements to sorts
%define a [ebp + 8]
%define n [ebp + 12]
isort:
enter 0, 0
pusha
mov ecx, 1
for:
mov ebx, ecx
imul ebx, 4
add ebx, a
mov ebx, [ebx]
mov edx, ecx
dec edx
while:
cmp edx, 0
jl while_quit
mov eax, edx
imul eax, 4
add eax, a
cmp ebx, [eax]
jge while_quit
mov esi, [eax]
mov dword [eax + 4], esi
dec edx
jmp while
while_quit:
mov [eax], ebx
inc ecx
cmp ecx, n
jl for
popa
leave
ret
Et le tableau d'échantillons était {5, 8, 12, 2, 1, 7}. C'est plus pour comprendre la langue 8086 depuis que nous venons de commencer il y a quelques jours, et je me demandais si quelqu'un pouvait expliquer comment et ce qui pourrait mal se passer.