J'ai écrit un code pour calculer la valeur minimale dans le tableau donné et l'idée est de prendre le premier élément (en considérant que c'est la valeur min) et de le comparer avec les éléments restants puis échanger les valeurs en cas que je trouve plus petite et voici mon code:trouver la valeur min dans un tableau donné dans l'assembly 8086
array dw 7,4,12,5,1
mov si,00h
mov ax,array[si]
mov cx,5
minimum:
inc si ;find the minimum value
mov dx,array[si]
cmp ax,dx
jb nochange
swap:
xchg ax,dx
nochange:
dec cx
cmp cx,0
JNE minimum
lastcmp: ; to compare the last item with the minimum value and swap if it's smaller
mov dx,array[si]
cmp ax,dx
jb endi
xchg ax,dx
end
, mais il semble que j'ai un problème ici car il compare tous les éléments, mais pas le dernier il me donne toujours (4) et c'est pour me donner (1), de l'aide!
Damn ... ** jamais ** utiliser 'array [si]' jamais! Tu ne sais pas ce que tu fais. Votre tableau est un tableau de mots et non d'octets! Il n'y a pas d'accès au tableau indexé dans l'assembly! –
vous voulez dire la dernière étape "lastcmp"! , mais je l'ai déplacé au registre dx pour pouvoir comparer!? –
Non, je veux dire ceci 'inc si' –