1

czy ktoś potrafi wskazać algorytm który generuje kod dla operacji MODulo (reszta z dzielenia) dla typu BYTE w następujący sposób (źródło Millifork)

main_j = main_i mod 9

    LDA #0
    STA __reg
    LDA main_i
    CMP #$90
    BCC dv__00001
    SBC #$90
dv__00001:
    ROL __reg
    CMP #$48
    BCC dv__00002
    SBC #$48
dv__00002:
    ROL __reg
    CMP #$24
    BCC dv__00003
    SBC #$24
dv__00003:
    ROL __reg
    CMP #$12
    BCC dv__00004
    SBC #$12
dv__00004:
    ROL __reg
    CMP #9
    BCC dv__00005
    SBC #9
dv__00005:
    ROL __reg
    STA main_j

dla np. MOD 15

    LDA #0
    STA __reg
    LDA main_i
    CMP #$F0
    BCC dv__00029
    SBC #$F0
dv__00029:
    ROL __reg
    CMP #$78
    BCC dv__00030
    SBC #$78
dv__00030:
    ROL __reg
    CMP #$3C
    BCC dv__00031
    SBC #$3C
dv__00031:
    ROL __reg
    CMP #$1E
    BCC dv__00032
    SBC #$1E
dv__00032:
    ROL __reg
    CMP #$F
    BCC dv__00033
    SBC #$F
dv__00033:
    ROL __reg
    STA main_j
*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

2

Ale co w tym dziwnego? To jest po prostu rozwinięte dzielenie przez 9.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

3

ok :)

LOOP    ASL AL
    ROL @
    CMP CL
    BCC DIV2
    SBC CL
    INC AL
DIV2
    DEY
    BNE LOOP

    STA ZTMP
*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C