array DW 1,1, 3,0, 3,3, 4,4, -1
Первое число в каждой паре чисел размером с слово является наиболее значимым для вашей задачи.
Каждая из этих пар может рассматриваться как меч, но на x86 (малоendian) первое слово будет наименее значимым.Это просто противоположность того, что вам нужно.Что если вы временно поменялись местами?Затем вы можете отсортировать массив как обычные слова.
- Поменять
- Сортировать эти слова как обычно.(Осторожно, терминатор по-прежнему слово )
- Swap.
Это может быть процедура swap (32-разрядная):
Swap:
mov ebx, array
jmp First
Next:
rol dword [ebx], 16
add ebx, 4
First:
cmp word [ebx], -1
jne Next
ret
Это может быть процедура swap (16-битная):
Swap:
mov bx, array
jmp First
Next:
xchg ax, [bx+2]
mov [bx], ax
add bx, 4
First:
mov ax, [bx]
cmp ax, -1
jne Next
ret
Решение, в котором вы выполняете эти операции до и после замены в алгоритме сортировки меча было бы так же просто.