petek, 15. marec 2002
BISSSSSS EXTRN modul
V nadaljevanju je originalna BISSSSSS zunanja, to je EXTRN, rutina, ki se vključi med izvajanjem LNKEDT, to je povezovanja, prevedenega source programa in vse skupaj postane enoten program za neposredno izvajanje.
CATALOG BISSSSSS.A REPLACE=YES
BISS TITLE '... BISSSSSS ... BINARNO ISKANJE / RL MODUL / '
PUNCH ' CATALR BISSSSSS '
BISSSSSS CSECT
USING *,15
STM 2,4,BISSSS12 STORE REG.2,3,4
SR 0,0 R0=NULA
LH 4,0(14) R4=DOLŽ.ARGUMENTA
L 1,14(14) END OZ.ŠT.ELEMENTOV
LR 3,1
CH 4,=H'254' DOLŽ.ARGUM.VEČJA OD 254 ?
BH BISSSS03 DA,ŠT.ELEMEN.V END POLJU
S 1,2(14) END-START=DOL.TABELE
LH 2,10(14) R2=KORAK
DR 0,2 R1=ŠT.ELEMENTOV
*
BISSSS01 EQU *
LA 0,1 R0=1
*
BISSSS02 EQU *
SRA 1,1 R1/2
BZ BISSSS04 DA, R0=2**N
SLA 0,1 R0*2
B BISSSS02 LOOP
*
BISSSS03 EQU *
SH 4,=H'255' R4=DOLŽ.ARG.-255 /ZA MOD. CLC/
MH 3,10(14) ŠT.ELEM.*KORAK=DOLŽ.TABELE
A 3,2(14) +START=END ADRESA
B BISSSS01
*
BISSSS04 EQU *
MH 0,10(14) 2**N*KORAK
LR 1,0 R0=OFFSET ***
SH 1,10(14) R1=2**N-1
A 1,2(14) +START= R1 =SREDINA TABELE ***
OC BISSSS11+2(2),12(14) DISPLACEMENT ***
L 2,6(14) R2=ADRES.ARGUMENTA /ZA CLC/
*
BISSSS05 EQU *
SRA 0,1 R0/2
CR 1,3 R1 PREKO END TABELE ?
BNL BISSSS06 DA, ZMANJŠAJ R1
EX 4,BISSSS11 SKOK NA CLC ***
BL BISSSS07 POVE$AJ R1
BE BISSSS10 NAŠEL
* BH BISSSS06 ZMANJŠAJ R1
*
BISSSS06 EQU *
CH 0,10(14) OFFSET:KORAK ŠE ZADOSTUJE ?
BL BISSSS08 NE, NI V TABELI
SR 1,0 R1-R0=NOVA POLOVICA V TABELI
B BISSSS05
*
BISSSS07 EQU *
CH 0,10(14) OFFSET:KORAK ŠE ZADOSTUJE ?
BL BISSSS09 NE, NI V TABELI
AR 1,0 R1+R0=NOVA POLOVICA V TABELI
B BISSSS05
*
BISSSS08 EQU *
SH 1,10(14) R1=PRVI MANJŠI ELEMENT TABELE
*
BISSSS09 EQU *
O 1,BISSSS13 REG.1 NA NEGATIVNO VREDNOST
*
BISSSS10 EQU *
LR 3,1 ADRESA ELEM.V TABELI
S 3,2(14) -START=ZAP.ŠTEV.*KORAK-1
SR 2,2 R2=0
LH 4,10(14) VELIKOST KORAKA V R4
DR 2,4 R3=ZAP.ŠTEV.ELEMENTA-1
LA 0,1(3) R0=ZAPOREDNA ŠTEVILKA ELEMNTA
MVC BISSSS11+2(2),=X'1000' DISPLACEMENT NAZAJ NA 0
LM 2,4,BISSSS12 RESTORE REGISTROV
B 18(14) RETURN IZ MODULA
*
* D A T A
*
BISSSS11 EQU *
CLC 0(0,1),0(2) PRIMERJAVA TABELE Z ARGUMENTOM
*
BISSSS12 DS 3F SAVE AREA ZA REGISTRE
BISSSS13 DC X'80000000' INDIKATOR NI V TABELI
*
LTORG
*
BKEND
/+
Naročite se na:
Objavi komentarje (Atom)
Ni komentarjev:
Objavite komentar