1. Naprogramujte assemblerovú funkciu:

function ZipsK(a,b:byte; k:byte):word;

Jej výsledkom sú "spojené" vstupy a a b tak, že prvých k bitov (zdola) je z a, ďalších k bitov je z b, ďalších k bitov je z a atď. Posledná skupina bitov z oboch vstupov je prípadne menšia.

Napríklad ak vstupy a a b vyjadríme po bitoch ako:
a7 a6 a5 a4 a3 a2 a1 a0 resp. b7 b6 b5 b4 b3 b2 b1 b0
a k=3, tak výsledné slovo bude takéto:
b7 b6 a7 a6 b5 b4 b3 a5 a4 a3 b2 b1 b0 a2 a1 a0



2. Naprogramujte assemblerovú funkciu:

type tVysledok = array [0..1000] of ShortInt;
function
Porovnaj(a,b:string):tVysledok;

Jej vstupom sú dva reťazce. Môžete predpokladať, že dĺžka vstupného reťazca nie je väčšia než 1000 znakov.
Výstupné pole tVysledok obsahuje len znaky 0, 1 a -1 podľa týchto pravidiel:
Poznámka: v kóde ASCII sú malé písmená za veľkými a rozdiel kódu malého a veľkého písmena je 32 (alebo stačí napísať 'a'-'A').



3. Naprogramujte assemblerovú funkciu

function SuPodobne(const a,b:string):Boolean;

Jej výsledkom je TRUE práve vtedy ak všetky znaky, ktoré sú použité v b sa nachádzajú aj v a a všetky znaky, ktoré sú použité v a sa sa nachádzajú aj v b.



4.
Naprogramujte assemblerovú funkciu:

type SetOfChar = set of Char;
function vOboch(const a,b:string):SetOfChar;

Výsledkom je množina znakov, ktoré sa nachádzajú v obidvoch reťazcoch.
 
Príklad:
vOboch('aabbcd+23','bcde+ab') = ['+','a','b','c','d']