Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

asembler Motorola 6800 dodawanie

beaciak 05 Gru 2010 20:15 933 0
  • #1 05 Gru 2010 20:15
    beaciak
    Poziom 2  

    Witam,
    Mam do wykonania następujące zadanie:
    dodawac do siebie poszczególne komórki obszarów pamieci, wynik dodawania umieszczac w drugim obszarze. Program ma sprawdzac poprawnosc podanych adresów – wynik w akumulatorze B. Program ma sie zaczynac od adresu 0020h.
    Dane wejsciowe:
    0010h, 0011h - dwie komórki pamieci zawierajace adres poczatku pierwszego obszaru;
    0012h, 0013h – 16 bitowa liczba okreslajaca rozmiar obszaru;
    0014h, 0015h - dwie komórki pamieci zawierajace adres poczatku drugiego obszaru;
    Dane wyjsciowe:
    akumulator B:
    • ffh - jesli blednie podano adresy pierwszego obszaru;
    • 11h - jesli obszary zachodza na siebie;
    • 00h - jesli operacja przebiegla poprawnie;

    no i to co ja napisałam:

    Code:
    blad equ $0004 ; FF 
    
    zachodzi equ $0005 ; 11
    ok equ $0006 ;00
    wsk equ $0003 ;aktualna pozycja wskaznika obsz1
    wsk2 equ $0002 ; j.w. obszar 2
    obph equ $0010 ;pocz obszaru s.b.
    obpl equ $0011 ;pocz obszaru m.b
    romzh equ $0012 ;rozm s.b
    rozml equ $0013 ; rom. m.b.
    obp2h equ $0014 ; pocz obszaru 2 s.b
    obp2l equ $0015 ;pocz obszaru 2 m.b.
    obkh equ $0016 ;koniec obszaru s.b
    obkl equ $0017 ;koniec obszaru m.b
    obk2h equ $0007 ;koniec obszaru 2 s.b.
    obk2l equ $0008 ;koniec obszaru 2 m.b
    LDAA obpl
    ADDA rozml
    STAA obkl ; koniec obszaru m. b. zapisany pod adresem 0017
    LDAA obph
    ADCA rozmh
    STAA obkh ;zapisanie obszaru pod 0016
    LDAA obp2l
    ADDA rozml
    STAA obk2l
    LDAA obp2h
    ADCA rozmh
    STAA obk2h   ;koniec liczenia obszarów.
    LDX obph ; sprawdzenie kolejnosc poczatek-koniec
    CPX obkh
    BPL p1  ; zle wpisany obszar to  wykonuje petle
    p1:
    LDAB blad
    end
    LDX obp2l  ; spr czy obszary nie zachodza na siebie
    CPX obkl
    BPL p2
    p2:
    LDAB zachodzi
    end
    LDX obpl ;wczytujemy poczatek obszaru do rejestru
    LDAB 00,x
    INX
    STX wsk ; zapisujemy poz wskaznika
    LDX obp2l
    ADDB 00,x
    STAB 00,x
    INX
    STX wsk2 ; zap poz wsk2
    BRA p3
    p3:
    LDX wsk
    LDAB 00,x
    INX
    STX wsk
    LDX wsk2
    ADDB 00,x
    INX
    STX wsk2
    BRA p4
    p4:
    LDX wsk
    CPX obkl
    BNE p3
    end:
    END


    Czy mógłby ktoś podpowiedzieć, jak wskazać pozycję wskaźnika dla obszarów 1 i 2 w sposób optymalny? bo wydaje mi się, że to moje "dzieło" nie sprawdzi się.

    Proszę pamiętać o używaniu znaczników code.
    Proszę poprawić błędy w poście! - arnoldziq

    0 0