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.

Z80 programowanie asm - pomoc w zadaniu

pawelhome 04 Sty 2011 11:43 1299 3
  • #1 04 Sty 2011 11:43
    pawelhome
    Poziom 9  

    witam,proszę o pomoc w zaprogramowaniu procesora z80
    treść zadania:
    Utwórz wiersz N i zapisz go w pamięci w sposób następujący: każdy elementwiersza W 10 elementowego: 3,4,1,6,7,3,7,9,2 pomnóż przez 2

    korzystam z symulatora Z80 (SimpleSimulator)

    dziękuje z góry za pomoc

    0 3
  • #2 04 Sty 2011 15:11
    arnoldziq
    Moderator Programowanie

    Jak na razie, temat łamie 16-ty punkt regulaminu forum.
    Proszę pokazać swoje dotychczasowe postępy w rozwiązaniu tego zadania, albo cały temat wyląduje w koszu.

    0
  • #3 04 Sty 2011 18:50
    pawelhome
    Poziom 9  

    Kod: asm
    Zaloguj się, aby zobaczyć kod


    tyle udało mi się wymyślić, jednakże nie bardzo wiem, gdzie jest błąd.
    mnoże liste przez liste i wyświetlam wynik
    proszę o pokierowanie
    Proszę pamiętać o używaniu znaczników code. - arnoldziq

    0
  • #4 28 Sty 2011 19:00
    Raldan
    Poziom 1  

    Kod: asm
    Zaloguj się, aby zobaczyć kod

    Wyjaśnienie:
    START: Wczytaj do rejestru IX adres wiersza W.
    Wczytaj do rejestru IY adres wiersza N.
    Do rejestru B wczytujemy 10(bo 10 elementów trzeba przekopiować) w systemie szesnastkowym. Ten rejestr będzie odpowiadał za pętlę.
    PETLA: Do akumulatora wczytaj wartość z adresu IX.
    Pomnóż zawartość akumulatora przez 2.
    Pod adres IY przenieś zawartość akumulatora.
    Idź pod adres o 1 większy od IX
    Idź pod adres o 1 większy od IY
    Zmniejsz zawartość B o 1.
    Skocz do PETLA dopóki B nie będzie zerem.
    KONIEC

    Mam nadzieję, że pomogło :)
    PS. Napisałeś wiersz 10-elementowy, lecz podany przez Ciebie liczył tylko 9, pozwoliłem więc sobie dodać 0 na końcu, aby liczba elementów się zgadzała. Jeżeli jednak byłby to wiersz 9-elementowy to zapis u dołu wyglądałby tak:
    Kod: asm
    Zaloguj się, aby zobaczyć kod

    A co za tym idzie należałoby wczytać inną wartość do rejestru B czyli po prostu 9.
    Kod: asm
    Zaloguj się, aby zobaczyć kod

    0