Amiga Dünyası sayı 29, sayfa 42

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 42

program sort;

Var: Amy (1.119) of WORD:

Procedure — wordsort(tane:integer;start:- Long);IMPORT;

Var

Begin randomize; Writeln('Random 100 sayi urete- lim...'); Delay(20); ( biraz bekleme ) For to 100 do Begin writeln(arr|i)); End;

sıralama routini çağrılıyor..');

wordsort(100,Long(”arr(1)1)); MWriteln('Siralama bitti..'); Delay(20); For i:—1 to 100 do writeln(arr(i)); End;

Programda ithal edilen alt program, wordsort adında ve iki parametreye sahip. Bunlardan ilki, dizide bulunan eleman sayısını, diğeri ise dizinin başlangıç adresini belirtiyor. İlk olarak dizi rasgele sayılarla dolduruluyor, daha sonra alt program çağrılarak dizi sıralanıyor. Gelelim alt programa:

XDEF wordsort wordsort: move.l — 4(a7),d0

move.l d0,a0 ;a0 arrayin langic adresini tutuyor. move.w 8(a7),d0 ; word sayisini tutuyor.

bas-

asl.w #1,d0 move.w d0,d5 add.w — di disloop: move.w di,d2 add.w #2,d2

move.w #-1,d4 move.w (a0,d1.w),d3 icloop: cmp.w (a0,d2.w),d3 bgttamam move.w d2,d4 tamam: add.w #2,d2 cmp.w d2,d0 bne icloop cMp.w #-1,d4 beg noreplace move.w move.w d3,(a0,d1.w) noreplace: add.w #2,d1 cmp.w di,d5 bne disloop rts

Burada bir assembly programından tek fark, ilk XDEF satırı. Bu satır ile alt programın ihraç edileceği belirtiliyor. Assembly kısmına gelince, bu konuda hiç sorununuz olmayacaktır. Olsa bile CEM sorularınıza cevap verecektir. Ne de olsa burası Pascal köşesi. Bu aylık benden bu kadar, yakında İstanbul'a şu baskı hatası adı altında geçen olayın neden ve niçini hakkında çok yönlü bilgi sahibi olacağım. O zamana dek kendinize iyi bakın.

Klavyeyle gezinmek için ← ve → tuşları.