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

[asm][atmega8] Jak najprościej podzielić liczbę 3 bajtową przez 1 bajtową?

21 Lis 2011 11:37 1450 6
REKLAMA
  • #1 10164498
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #2 10164617
    jarekz_2
    Poziom 16  
    Saabotaz napisał:
    (...)potrzebuję jedynie opis krok po kroku jak by to wykonać.

    Mam mało czasu, ale spróbuję... Proponuję algorytm niezbyt szybki, ale dość prosty w realizacji. Zakładam że wejściowa liczba 3-bajtowa (nazwijmy ją X) może wynosić od 0 do 16777125.

    a) dogodnym formatem wyniku jest format dziesiętny, np. ciąg znaków ASCII do pokazania do wyświetlaczu:
    A = zmienna 3-bajtowa
    LICZNIK = zmienna 1-bajtowa
    a1) A = 10000000; LICZNIK = 0;
    jak długo X >=A, odejmuję A od X i zwiększam LICZNIK o 1;
    pierwsza (najstarsza) dziesiętna cyfra wyniku = LICZNIK;
    a2) A = 1000000; LICZNIK = 0;
    jak długo X >=A, odejmuję A od X i zwiększam LICZNIK o 1;
    następna dziesiętna cyfra wyniku = LICZNIK;
    i tak dalej aż do
    a7) A = 10; LICZNIK = 0;
    jak długo X >=A, odejmuję A od X i zwiększam LICZNIK o 1;
    przedostatnia dziesiętna cyfra wyniku = LICZNIK;
    a8) ostatnia (najmłodsza) dziesiętna cyfra wyniku = X;

    b) dogodnym formatem wyniku jest format dwójkowy;
    można zastosować wariant algorytmu a), tyle że zacząć od A = 100000 hex,
    w kolejnych krokach podstawiać pod A wartości 10000 hex, 1000 hex itd.,
    a cyfry wyniku będą 4-bitowe (wartości od 0 do F hex).
  • REKLAMA
  • Pomocny post
    #3 10164706
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #4 10164769
    Bdeath
    Poziom 10  
    Witam

    Kiedyś pisałem coś podobnego na ATTiny26, to jest podział liczby 4 bajtowej przez 100, przy czym w 1 bajcie (MSB) może być maksymalnie 199, ale jako przykład może Ci się przydać.

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam
  • #6 10165255
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #7 10165294
    Nawigator
    Poziom 33  
    Odejmij 125 tyle razy aby uzyskać trzy zera na końcu a następnie podziel przez 8 czyli 8*125=1000 i tak do uzyskania wyniku.

    N.
REKLAMA