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

/+

Ni komentarjev:

Objavite komentar