A feladat megnevezése (MCS85-re)
Komparáló szoftver készítése, mely a perifériáról behozott két nyolcbites bináris számot összehasonlítja és az eredménytől függően más-más logikai kapcsolatot hoz létre közöttük.
A logikai kapcsolat a két behozott értékre vonatkozik,attól függően,hogy a komparálásnak mi lett az eredménye.
Tehát két 8bites bináris számot hasonlít össze az áramkor és ha C=B akkor negálja azakkumulátor tartalmát. Ha C<B vagy kapcsolatot kell csinálni C és az aksi között és ha C>B akkor és kapcsolatot kell létrehozni az aksi és C között.
Egy lehetséges megoldás a forrásnyelvi
programra:
8000 IN 00 //A nulla nullás portról beviszünk egy adatot
8002 MOV C,A //Ezt az adatot elmozgatjuk a „C” regiszterbe
8003 IN 01 // A nulla egyes portról beviszünk egy másik adatot
8005 MOV B,A //Ezt az adatot a „B” regiszterbe mozgatjuk
8006 CMP C //Kivonja az „A” tartalmából a „C” regiszter értékét
8007 JZ 8015 //Ugrás a 8015-ös címre ha a „Zero” bit 1 (C=B) Tehát ha a C megegyezik a b-vel akkor ugrik 8015-ös címre
800A JC 801D //Ugrás a 801D címre ha a „Carry” bit 1 (C>B) Ha C nagyobb B-nél akkor 801D címre ugrik
800D ORA C //Vagy kapcsolat „C”-vel ha (C<B) ha B nagyobb C-nél akkor nem ugrik el a program hanem folytatódik a program.
800E OUT 04 //Kiíratás a 04-es kijelzőre
8010 OUT 05 //Kiíratás a 05-ös kijelzőre
8012 JMP 8000 //Ugrás az elejére
8015 CMA //Akkumulátor negálása
8016 OUT 04 //Kiíratás a 04-es kijelzőre
8018 OUT 05 //Kiíratás a 05-ös kijelzőre
801A JMP 8000 //Ugrás az elejére
801D ANA C //És kapcsolat C-vel
801E OUT 04 //Kiíratás a 04-es kijelzőre
8020 OUT 05 //Kiíratás a 05-ös kijelzőre
8022 JMP 8000 //Ugrás
az elejére
Az én megoldásom erre a feladatra:
A 8000 IN 00 //Ha az előzőt érted akkor ezt is //
A 8002 MOV B,A
A 8003 IN 01
A 8005 MOV C,A
A 8006 CMP B
A 8007 JZ 8015
A 800A JC 8019
A 800D ORA B
A 800E OUT 04
A 8010 OUT 05
A 8012 JMP 8000
A 8015 CMA
A 8016 JMP 800E
A 8019 ANA B
A 801A JMP 800E