Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Быстрая сортировка на TASM-е

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> Быстрая сортировка на TASM-е
Имя
Сообщение << Старые топики   Новые топики >>
Быстрая сортировка на TASM-е - 2007-11-27 18:29:43.903333   
maccros

Сообщений: 9
Оценки: 0
Присоединился: 2007-06-19 16:25:00.700000
У кого-нибудь есть реализация быстрой сортировки на TASM-е !?
Post #: 1
RE: Быстрая сортировка на TASM-е - 2007-11-27 20:02:19.046666   
BinZo

Сообщений: 230
Оценки: 0
Присоединился: 2006-12-02 20:29:14.373333
Поиском учили пользоваться? Или только вчера и-нет подключили?
http://www.algolist.manual.ru/
Примеры в основном на С, но переписать их под тасм не составит труда.
Post #: 2
RE: Быстрая сортировка на TASM-е - 2007-11-27 20:11:59.450000   
maccros

Сообщений: 9
Оценки: 0
Присоединился: 2007-06-19 16:25:00.700000
BinZo, дело в том что я так и поступил! Но что то не так более 3 чисел не сортирует, виснет вот код может кто поможет:

quote:

segment sst stack "stack"
&nbsp;&nbsp;&nbsp; db 256 dup (?)
ends sst
segment dst
&nbsp;&nbsp;&nbsp; mas&nbsp;&nbsp;&nbsp; db&nbsp;&nbsp;&nbsp; 2,6,1,4,3,7,5,9,8
&nbsp;&nbsp;&nbsp; x&nbsp;&nbsp;&nbsp; db&nbsp;&nbsp;&nbsp; 0
&nbsp;&nbsp;&nbsp; k&nbsp;&nbsp;&nbsp; db&nbsp;&nbsp;&nbsp; 2
&nbsp;&nbsp;&nbsp; i&nbsp;&nbsp;&nbsp; dw&nbsp;&nbsp;&nbsp; 0
&nbsp;&nbsp;&nbsp; j&nbsp;&nbsp;&nbsp; dw&nbsp;&nbsp;&nbsp; 0
&nbsp;&nbsp;&nbsp; l&nbsp;&nbsp;&nbsp; dw&nbsp;&nbsp;&nbsp; 0
&nbsp;&nbsp;&nbsp; r&nbsp;&nbsp;&nbsp; dw&nbsp;&nbsp;&nbsp; 8
ends dst
segment cst
&nbsp;&nbsp;&nbsp; assume ss:sst,ds:dst,cs:cst

begin:&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ax,dst
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ds,ax

&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; cx,9
&nbsp;&nbsp;&nbsp; xor&nbsp;&nbsp;&nbsp; si,si

q1:&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; dl,mas[si]
&nbsp;&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp; dl,30h
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ah,2
&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp; 21h
&nbsp;&nbsp;&nbsp; inc&nbsp;&nbsp;&nbsp; si
&nbsp;&nbsp;&nbsp; loop&nbsp;&nbsp;&nbsp; q1

; go to the next string
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; dx,13
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; ah,2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp; 21h
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; dx,10
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; ah,2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp; 21h

; i := l j := r in stack
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ax,l
&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; ax
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ax,r
&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; ax

; begin of the sort
; i := l j := r from stack
start:&nbsp;&nbsp;&nbsp; pop&nbsp;&nbsp;&nbsp; ax
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; r,ax
&nbsp;&nbsp;&nbsp; pop&nbsp;&nbsp;&nbsp; ax
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; l,ax

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; ax,l
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; i,ax
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; ax,r
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; j,ax

; x := mas[(l+r)/2]
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ax,i
&nbsp;&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp; ax,j
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; bl,k
&nbsp;&nbsp;&nbsp; div&nbsp;&nbsp;&nbsp; bl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; bx,ax
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; bh,0

&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; dl,mas[bx]
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; x,dl

; begin of while-s
main:&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; bx,i
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; al,mas[bx]
&nbsp;&nbsp;&nbsp; cmp&nbsp;&nbsp;&nbsp; al,x
&nbsp;&nbsp;&nbsp; jl&nbsp;&nbsp;&nbsp; in_m

main1:&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; bx,j
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; al,mas[bx]
&nbsp;&nbsp;&nbsp; cmp&nbsp;&nbsp;&nbsp; x,al
&nbsp;&nbsp;&nbsp; jl&nbsp;&nbsp;&nbsp; in_mm
; end of while-s
; if i &lt;= j then
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ax,i
&nbsp;&nbsp;&nbsp; cmp&nbsp;&nbsp;&nbsp; ax,j
&nbsp;&nbsp;&nbsp; jle&nbsp;&nbsp;&nbsp; s_if

e_un:&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ax,i
&nbsp;&nbsp;&nbsp; cmp&nbsp;&nbsp;&nbsp; ax,j
&nbsp;&nbsp;&nbsp; jle&nbsp;&nbsp;&nbsp; main

; end of main sort
; begin of if-s to return to the sort with changed parametrs
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ax,l
&nbsp;&nbsp;&nbsp; cmp&nbsp;&nbsp;&nbsp; ax,j
&nbsp;&nbsp;&nbsp; jl&nbsp;&nbsp;&nbsp; usl1

;—————————-
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; ax,8
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp; r,ax

&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ax,i
&nbsp;&nbsp;&nbsp; cmp&nbsp;&nbsp;&nbsp; ax,r
&nbsp;&nbsp;&nbsp; jl&nbsp;&nbsp;&nbsp; usl2
; the end of if-s

exit:&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; cx,9
&nbsp;&nbsp;&nbsp; xor&nbsp;&nbsp;&nbsp; si,si

q2:&nbsp;&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; dl,mas[si]
&nbsp;&nbsp;&nbsp; add&nbsp;&nbsp;&nbsp; dl,30h
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ah,2
&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp; 21h
&nbsp;&nbsp;&nbsp; inc&nbsp;&nbsp;&nbsp; si
&nbsp;&nbsp;&nbsp; loop&nbsp;&nbsp;&nbsp; q2

&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ah,4ch
&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp; 21h

; all links here!!!
in_m:&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; dx,i
&nbsp;&nbsp;&nbsp; inc&nbsp;&nbsp;&nbsp; dx
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; i,dx
&nbsp;&nbsp;&nbsp; jmp&nbsp;&nbsp;&nbsp; main

in_mm:&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; dx,j
&nbsp;&nbsp;&nbsp; dec&nbsp;&nbsp;&nbsp; dx
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; j,dx
&nbsp;&nbsp;&nbsp; jmp&nbsp;&nbsp;&nbsp; main1

s_if:&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; si,i
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; al,mas[si]
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; di,j
&nbsp;&nbsp;&nbsp; xchg&nbsp;&nbsp;&nbsp; mas[di],al
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; mas[si],al

&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; dx,i
&nbsp;&nbsp;&nbsp; inc&nbsp;&nbsp;&nbsp; dx
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; i,dx

&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; dx,j
&nbsp;&nbsp;&nbsp; dec&nbsp;&nbsp;&nbsp; dx
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; j,dx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jmp&nbsp;&nbsp;&nbsp; e_un

usl1:&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ax,l
&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; ax
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ax,j
&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; ax
&nbsp;&nbsp;&nbsp; jmp&nbsp;&nbsp;&nbsp; start

usl2:&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ax,i
&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; ax
&nbsp;&nbsp;&nbsp; mov&nbsp;&nbsp;&nbsp; ax,r
&nbsp;&nbsp;&nbsp; push&nbsp;&nbsp;&nbsp; ax
&nbsp;&nbsp;&nbsp; jmp&nbsp;&nbsp;&nbsp; start

ends cst
end begin
Post #: 3
RE: Быстрая сортировка на TASM-е - 2007-11-27 21:09:46.370000   
furiousangel

Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
Капец чувак учи лучше win32asm. Я так и не успел выучить номера фунций и прерываний… Вовремя (имхо) перепрыгнул на masm32. И так неохота смотреть эти номера. Если тебе не лень будь добр откоменть возле вызовов функций их параметры.
Post #: 4
RE: Быстрая сортировка на TASM-е - 2007-11-27 21:42:34.933333   
maccros

Сообщений: 9
Оценки: 0
Присоединился: 2007-06-19 16:25:00.700000
Сйчас отредакитирую в предыдущем посте…
Post #: 5
RE: Быстрая сортировка на TASM-е - 2007-11-28 15:08:02.263333   
furiousangel

Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
Ну вообщем пришлось мне чуток вспомнить работу с afdpro. Поганял я малость твою прогу. Не знаю как у тебя, а у меня по ходу вообще не работает сортировка. Вначале выводит начальный массив, а потом циклит конкретно. В памяти он не меняется вообще. Даже более того в dx постоянно 32 (это твой первый элемент массива, сразу после add dl,30h ). Досконально смотреть неохота было, да и так есть чем занятся. Но такое предчуствие, будто не перебираются индексы массива, или в dx постоянно заносится только базовый элемент массива. Если не разберешься сам то пиши. Будет время ковырну глубже.
Post #: 6
RE: Быстрая сортировка на TASM-е - 2007-11-28 19:50:22.026666   
maccros

Сообщений: 9
Оценки: 0
Присоединился: 2007-06-19 16:25:00.700000
Всем спасибо за помощь :) Сделал!!! Все работает, работающий вариант выложил в предидущем посте если кому еще понадобится!
Post #: 7
RE: Быстрая сортировка на TASM-е - 2007-12-11 10:34:02.303333   
crbunny

Сообщений: 223
Оценки: 0
Присоединился: 2006-06-22 21:20:01
Эх, опоздал я. Сырец Qsort есть в поставке masm32.
Post #: 8
Страниц:  [1]
Все форумы >> [Прочее] >> Быстрая сортировка на TASM-е







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.