1. Treba naprogramovať
vyhodnocovanie karetnej hry Očko pre dvoch hráčov.
type tKarty = array [1..10] of byte;
Pote tKarty obsahuje informáciu o kartách, ktoré
má jeden hráč v ruke. Prvky poľa od začiatku
znamenajú bodové hodnoty kariet. Za poslednou použitou
hodnotou je nula a zvyšné prvky poľa za nulovým prvkom
môžu mať nedefinovanú hodnotu.
Naprogramujte úsek programu v strojovom kóde:
Vstup:
V ESI je adresa poľa typu tKarty s kartami prvého hráča
na konci hry
V EDI je adresa poľa typu tKarty s kartami druhého hráča
na konci hry
Výstup:
V AL je výsledok hry.
Výsledok hry je 1 ak vyhral prvý hráč, 2 ak vyhral
druhý hráč a 0 ak je výsledok nerozhodný.
Pomôcka: v očku
vyhrá ten, kto má viac bodov ale nepresiahol 21.
Nerozhodne je (pre naše účely) keď obaja presiahnu 21 alebo ak
majú rovnaký počet bodov.
2. type tPole = array [1..10] of byte;
Mierou podobnosti dvoch hodnôt typu bajt nazveme počet bitov v
ktorých sa zhodujú.
Vstup:
V ESI je adresa poľa typu tPole (nazveme ho p1)
V EDI je adresa poľa typu tPole (nazveme ho p2)
Výstup:
V EAX je index p do polí p1 a p2 taký, že p1[p] a p2[p]
majú najväčšiu mieru podobnosti zo všetkých indexov 1
<= p <= 10. Ak takých indexov p existuje viac,
výsledkom je ľubovoľný z nich.
3. Naprogramujte úsek
programu v strojovom kóde:
type pole = аrray[1..10000] of byte;
Vstup:
V ESI je adresa poľa P typu pole, v ECX je počet prvkov N, ktoré
sú v poli P použité.
Hodnoty použitých prvkov poľa P sa spolu chápu ako jeden
reťazec bitov dĺžky 8*N bitov, ktorý je poskladaný z
hodnôt P[1] až P[N] zľava doprava.
Výstup:
V EAX je číslo vyjadrujúce najväčší počet za
sebou idúcich jedničiek v bitovom reťazci P
Príklad:
Prvky poľa P sú zapísané v dvojkovej
sústave a sú uvedené len hodnoty do N-tého
prvku.
Vstup:
N = 4
P[1] = 11110101, P[2] = 11010011,
P[3] = 11101101, P[4]
= 00001111
Výstup:
EAX = 5
Miesto, kde sa vyskytuje 5 za sebou idúcich jedničiek je
podčiarknuté
4. Naprogramujte úsek
programu v strojovom kóde:
type retazec = аrray[1..10000] of char;
Vstup:
V ESI je adresa poľa P typu retazec, v ECX je počet prvkov N,
ktoré sú v poli P použité.
Výstup:
V AL je hodnota 0 alebo 1 vyjadrujúca logickú hodnotu
tvrdenia: "Prvých N znakov poľa P je palyndróm".
Hodnota poľa P sa nesmie zmeniť.
Poznámka: typ char je na
úrovni strojového kódu uložený do
jedného bajtu. S poľom P teda narábate rovnako akoby bolo
deklarované ako аrray[1..10000] of byte, kde každý bajt
obsahuje kód jedného písmena.
Príklady:
Vstup:
N = 5
P = ('Ť', 'A', 'H', 'A', 'Ť',....)
Výstup:
AL = 1
Vstup:
N = 5
P = ('M', 'A', 'K', 'A', 'Ť',....)
Výstup:
AL = 0