Aritmetični podprogram

Zaradi uporabe podprograma za pretvorbo znakovnega niza v 16-bitno število S2I (opis delovanja), je potrebno vključiti podprogram, ki pri pretvorbi v desetiški številski sistem opravi 16-bitno množenje s konstanto 10, MUL10 [multiply by 10]. Program je kasneje klican s strani pretvorbenega podprograma.

;_____________________________ MULTIPLY D BY 10(~<=52) ________________________________
;  Multiply the contents of D by 10. In case of overflow, return C=1.
;----------------------------------------------------------------------------------------
MUL10   
        pshx              ;4  Potisne X na sklad,
        asld              ;3  zmnoži AKU D z 2
        bcs   MUL102      ;3    in skoči na MUL102 v primeru preliva, sicer
        pshb              ;3  potisne (2×D)
        psha              ;3    na sklad
        tsx               ;3    in pomakne kazalec X na vrh sklada
        asld              ;3  zmnoži AKU D z 2
        bcs   MUL101      ;3    in skoči na MUL101 v primeru preliva, sicer if overflow.
        asld              ;3  zmnoži AKU D z 2
        bcs   MUL101      ;3    in skoči na MUL101 v primeru preliva, sicer
        addd  0,X         ;6  Prišteje AKU D s sklada
MUL101  pulx              ;5  Potegne (2×D) s sklada v primeru preliva oz.
MUL102  pulx              ;5  obnovi X.
        rts               ;5  RETURN(D=D×10,C)


Nazaj!