logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Błąd w programie asembler 8051 - operacje arytmetyczne -3 + (-5)

hiter19 10 Lis 2014 16:31 3201 7
  • #1 14118637
    hiter19
    Poziom 9  
    Witam, na zajęciach z mikroprocesorów miałem wykonać zadanie. Korzystając z operacji arytmetycznych wykonaj działanie -3+(-5) i program miał to obliczyć. Mój program wygląda następujaco:

    Kod: text
    Zaloguj się, aby zobaczyć kod

    Prowadzący stwierdził, że jest błąd w programie, bo na wyświetlaczu pojawia jako ostatnia liczba F3 czyli w przeliczeniu 243, a powinna być -8. Nie mam pojęcia co dokładnie trzeba poprawić?
  • Pomocny post
    #2 14119111
    szelus
    Poziom 34  
    Zastanów się, jaka wartość ląduje w R1 i dlaczego. Zresztą, chyba wyświetla się na wyświetlaczu?
  • #3 14120032
    hiter19
    Poziom 9  
    Czyli tak powinno być:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    #4 14120595
    mi14chal
    Poziom 28  
    Nie. Pomyśl nad tym fragmentem:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #5 14121694
    hiter19
    Poziom 9  
    Poprawiłem nie wiem czy dobrze
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #6 14121779
    mi14chal
    Poziom 28  
    Kod dodający nie ma teraz sensu.
  • Pomocny post
    #7 14122682
    kasjo
    Poziom 26  
    Tak na szybko:
    Po pierwsze źle Ci się wylicza wartość, bo powinno być F8 a nie F3.
    Pierwsze odejmowanie umieszcza w rejestrze R0 wartość FB, następnie musisz jeszcze wyzerować akumulator bo odejmujesz wartość 3 od akumulatora w którym jest już FB (a powinno być 0)
    MOV R1,C jest bez sensu bo C to nie rejestr tylko znacznik przeniesienia (dziwne, że Ci się w ogóle skompilowało)
    Podsumowując w rejestrze R0 powinno być FB a w R1 wartość FD. Po dodaniu tych wartości wyjdzie Ci wartość F8. Teraz musisz sobie założyć że wartości ujemne mają ustawiony najstarszy bit i przerobić F8 na -8
  • #8 14122969
    hiter19
    Poziom 9  
    Zmieniłem trochę program
    Kod: text
    Zaloguj się, aby zobaczyć kod
REKLAMA