Kod: Zaznacz cały
;program do metody babelkowej
.MODEL SMALL
.DATA
t DB 01h, 02h, 00h, 10h, 12h, 33h,5h, 09h, 11h, 08h, 0Ah, 00h
t_size EQU 11 ; dlugosc tablicy
again_s db 0 ; przyjmie 1 jesli byla zamiana
.CODE
s:
mov ax,@DATA
mov ds,ax
;buble sort
prepare:
mov bx, OFFSET t
again:
mov again_s,0
xor si,si
nextElement:
mov ah,[bx+si]
mov al,[bx+si+1]
cmp ah,al
jbe noSwap
mov [bx+si],al
mov [bx+si+1],ah
mov again_s,1
noSwap:
inc si
cmp si,t_size
jl nextElement
cmp again_s,1
je again
mov ax,4c00h
int 21h
.STACK 100H
end s
Program sortuje, kończy się kodem 0, po analizie w turbo debuggerze wykazuje znamiona poprawności, ale nie jestem do końca pewien owej poprawności.
Jeśli ktoś ma jakieś doświadczenie z assemblerem, byłbym wdzięczny za rzucenie okiem i ewentualne przydatne uwagi.
Użyte oprogramowanie: tasm, td, tlink wszystko w wersji 16b, uruchamiana pod kontrolą 32b wirtualizowanego systemu Windows XP.