BI-SAP.21 Struktura a architektura počítačů
Jdi na navigaci předmětu

8. Laboratoř: Aritmetika, posuvy, využití příznaků

Navrhněte a simulujte v MPLABu prográmky pro 8bitovou a 16bitovou aritmetiku. Použijte instrukce pro sčítání, odčítání a bitové posuvy k násobení malou konstantou. Vyzkoušejte si také jednoduché větvení/podmínky. Zejména instrukce add, adc, sub, sbc, subi, lsl, rol, lsr, ror, asr, cp, cpi.

1. Bodované úlohy

1.1. Úloha 7: Spočítejte následující výraz

(Tato úloha je částečně řešena ve skriptech a byla částečně vzorově vyřešena na prosemináři. V těchto vyřešených příkladech chybí kontrola správnosti výpočtu!)

R20 = (4 * R16 + 3 * R17 - R18) / 8

LDI R16, 5
LDI R17, 10
LDI R18, 58
... doplňte instrukce ...
  • Operandy jsou 8bitové, výsledek 8bitový, veškeré mezivýsledky udržujte také 8bitové.
  • Operandy a výsledek jsou v doplňkovém kódu.
  • Výraz by měl být spočítán správně. Pokud nelze výraz správně spočítat (s použitím 8bitových registrů), program by měl toto indikovat (např. nastavením V flagu nebo alespoň skokem na příslušné návěští).

Hodnocení

1 bod za úspěšné dokončení tohoto úkolu.

1.2. Úloha 8: Napište program, který zobrazí na displeji zadané osmibitové číslo v šestnáctkové soustavě

Číslo, které se má zobrazovat, bude "natvrdo" zadané v kódu. Např.

ldi r16, 0x5A
  • Použijte knihovny pro práci s displejem z minulého cvičení.
  • Použijte instrukce pro posuv a maskování, abyste dostali jednu šestnáctkovou číslici (resp. dvě šestnáctkové číslice).
  • Použijte porovnání a sčítání, abyste z číslice vytvořili ASCII znak (kód ‘A’ je 65, kód ‘0’ je 48).
  • Cvičící může zadat libovolné číslo z rozsahu 0x00-0xff a program jej musí (po překladu) zobrazit korektně.
Varování:

Simulátor displeje nepodporuje Reset simulace - může dojít k tomu, že se přestanou vypisovat jakékoli znaky. V takovém případě simulaci ukončete a znovu spusťte.

Hodnocení

1 bod za úspěšné dokončení tohoto úkolu.

1.3. Úloha 9: Napište program, který vypočítá výraz z Úlohy 7 vždy správně a zobrazí na displeji

  • Zdrojové operandy budou stále 8bitové (r16-r18), ale mezivýsledky a výsledek budou 16bitové.
  • Operandy a výsledek jsou v doplňkovém kódu.
  • 16bitový výsledek zobrazte na displeji.
  • Jediný možný nesprávný výsledek je způsobený chybou přesnosti. Toto indikujte na displeji (spolu se zaokrouhleným výsledkem).

Hodnocení

2 body za úspěšné dokončení tohoto úkolu.

2. Odevzdání úloh na EET

Pokud cvičící neurčí jinak, odevzdejte řešení úloh na EET dle pokynů na hlavní stránce cvičení.

3. Doplňující informace

V těchto úlohách úloze budete pracovat s displejem – více informací naleznete na stránce s manuály na AVR – konkrétně na Práce s displejem.