<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="https://pmd85.borik.net/w/skins/common/feed.css?240204"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
		<id>https://pmd85.borik.net/wiki/Blog:Programovanie_v_assembleri_i8080_pre_PMD_85_%289%29&amp;limit=20&amp;action=history&amp;feed=atom</id>
		<title>Blog:Programovanie v assembleri i8080 pre PMD 85 (9) - História úprav</title>
		<link rel="self" type="application/atom+xml" href="https://pmd85.borik.net/wiki/Blog:Programovanie_v_assembleri_i8080_pre_PMD_85_%289%29&amp;limit=20&amp;action=history&amp;feed=atom"/>
		<link rel="alternate" type="text/html" href="https://pmd85.borik.net/wiki/Blog:Programovanie_v_assembleri_i8080_pre_PMD_85_%289%29&amp;action=history"/>
		<updated>2026-05-01T17:03:36Z</updated>
		<subtitle>História úprav pre túto stránku na wiki</subtitle>
		<generator>MediaWiki 1.11.1</generator>

	<entry>
		<id>https://pmd85.borik.net/wiki/Blog:Programovanie_v_assembleri_i8080_pre_PMD_85_%289%29&amp;diff=1894&amp;oldid=prev</id>
		<title>Rombor: Opravené preklepy</title>
		<link rel="alternate" type="text/html" href="https://pmd85.borik.net/wiki/Blog:Programovanie_v_assembleri_i8080_pre_PMD_85_%289%29&amp;diff=1894&amp;oldid=prev"/>
				<updated>2021-11-20T16:55:46Z</updated>
		
		<summary type="html">&lt;p&gt;Opravené preklepy&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class=&#039;diff-marker&#039; /&gt;
			&lt;col class=&#039;diff-content&#039; /&gt;
			&lt;col class=&#039;diff-marker&#039; /&gt;
			&lt;col class=&#039;diff-content&#039; /&gt;
			&lt;tr&gt;
				&lt;td colspan=&#039;2&#039; style=&quot;background-color: white; color:black;&quot;&gt;← Staršia verzia&lt;/td&gt;
				&lt;td colspan=&#039;2&#039; style=&quot;background-color: white; color:black;&quot;&gt;Verzia zo dňa a času 16:55, 20. november 2021&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 444:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 444:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Nepriamy návrat z rutiny by sa dal urobiť aj iným spôsobom a to uložením registra {{Kbd|DE}} na zásobník {{Príkaz|push de}} a obvyklým návratom inštrukciou {{Príkaz|ret}}, ale táto alternatíva trvá 21T, oproti 9T z nášho riešenia.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Nepriamy návrat z rutiny by sa dal urobiť aj iným spôsobom a to uložením registra {{Kbd|DE}} na zásobník {{Príkaz|push de}} a obvyklým návratom inštrukciou {{Príkaz|ret}}, ale táto alternatíva trvá 21T, oproti 9T z nášho riešenia.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Text za volaním rutiny v našom prípade nepoužíva znaky s diakritikou, keďže definíciu charsetu máme až neskôr. Šlo by to samozrejme realizovať tak, že &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;definíciou &lt;/del&gt;charsetu by sme mali hneď na začiatku zdrojového textu (napr. v mieste, kde sme si definovali makrá) a tak všetky texty v zdrojovom texte by už mohli byť s diakritikou.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Text za volaním rutiny v našom prípade nepoužíva znaky s diakritikou, keďže definíciu charsetu máme až neskôr. Šlo by to samozrejme realizovať tak, že &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;definíciu &lt;/ins&gt;charsetu by sme mali hneď na začiatku zdrojového textu (napr. v mieste, kde sme si definovali makrá) a tak všetky texty v zdrojovom texte by už mohli byť s diakritikou.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Vypisovanie textov z tabuľky ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Vypisovanie textov z tabuľky ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Niekedy je vhodné mať všetky texty/reťazce na jednom mieste a mať ich &amp;quot;očíslované&amp;quot;. To znamená, že pre vypísanie konkrétneho reťazca zavoláme príslušnú rutinu s číslom reťazca.&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Niekedy je vhodné mať všetky texty/reťazce na jednom mieste a mať ich &amp;quot;očíslované&amp;quot;. To znamená, že pre vypísanie konkrétneho reťazca zavoláme príslušnú rutinu s číslom reťazca.&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 450:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 450:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		...&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		...&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		; vypísanie textu podľa čísla textu - verzia vyhľadania textu&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		; vypísanie textu podľa čísla textu - verzia vyhľadania textu&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTN1:	lxi	h,AV(1, 0)	; počiatočná adresa VRAM&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTN1: &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/ins&gt;lxi	h,AV(1,0)	; počiatočná adresa VRAM&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		mvi	c,8		; 8 reťazcov&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		mvi	c,8		; 8 reťazcov&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTN1L:	mov	b,c		; číslo reťazca do B&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTN1L:	mov	b,c		; číslo reťazca do B&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 461:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 461:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		; vypísanie textu podľa čísla textu - verzia s tabuľkou&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		; vypísanie textu podľa čísla textu - verzia s tabuľkou&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTN2:	lxi	h,AV(11, 0)	; počiatočná adresa VRAM&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTN2: &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/ins&gt;lxi	h,AV(11,0)	; počiatočná adresa VRAM&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		mvi	b,8		; 8 reťazcov&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		mvi	b,8		; 8 reťazcov&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTN2L:	push	b		; odpamätaj počítadlo na zásobník&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTN2L:	push	b		; odpamätaj počítadlo na zásobník&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 480:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 480:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTxtN1:	lxi	d,T_TextBase	; bázová adresa textov&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTxtN1:	lxi	d,T_TextBase	; bázová adresa textov&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTxtN1B:	dcr	b		; zníž číslo textu&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTxtN1B:	dcr	b		; zníž číslo textu&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		jz	PrtTxt0AV	; našli sme, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;skoč ho vypísať&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		jz	PrtTxt0AV	; našli sme, skoč ho vypísať&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTxtN1L:	ldax	d		; vezmi znak&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; PrtTxtN1L:	ldax	d		; vezmi znak&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		inx	d		; posuň ukazateľ&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt; 		inx	d		; posuň ukazateľ&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rombor</name></author>	</entry>

	<entry>
		<id>https://pmd85.borik.net/wiki/Blog:Programovanie_v_assembleri_i8080_pre_PMD_85_%289%29&amp;diff=1884&amp;oldid=prev</id>
		<title>Rombor: Nový Blogový článok</title>
		<link rel="alternate" type="text/html" href="https://pmd85.borik.net/wiki/Blog:Programovanie_v_assembleri_i8080_pre_PMD_85_%289%29&amp;diff=1884&amp;oldid=prev"/>
				<updated>2021-09-26T12:07:10Z</updated>
		
		<summary type="html">&lt;p&gt;Nový Blogový článok&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{VelkyNadpis|Programovanie v assembleri i8080 pre PMD 85 (9)}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
V predošlej kapitole sme si ukázali, ako vypisovať jednotlivé znaky, či už za pomoci rutín z Monitora alebo vlastnými rutinami. Čo sa týka vlastných rutín pre výpis znakov, tých spôsobov výpisu sa dá vymyslieť určite viac, to však nechám na vašu tvorivosť a fantáziu, ale možno si neskôr ešte niečo ukážeme.&lt;br /&gt;
&lt;br /&gt;
== Vypisovanie textov ==&lt;br /&gt;
Textom budeme rozumieť nejaký reťazec znakov uzavretý v úvodzovkách, ktorý budeme definovať za pomoci pseudoinštrukcie {{Príkaz|db}}. Dôležitou vecou pri vypisovaní reťazcov je vedieť, aký je daný reťazec dlhý, resp. ako je ukončený. To sa dá urobiť rôznymi spôsobmi:&lt;br /&gt;
* Dĺžka reťazca je v jednom byte pred samotným reťazcom.&lt;br /&gt;
* Reťazec je ukončený nulovým bytom (alebo iným kódom, ktorý nie je tlačiteľným znakom).&lt;br /&gt;
* Reťazec je ukončený znakom, ktorého kód má nastavený 7. bit (zo ZX Spectra sa vžil termín &amp;quot;s invertovaným&amp;quot; znakom, pretože sa v rôznych debuggeroch takýto byte zobrazoval ako invertovaný znak). Tento spôsob teda umožňuje používať iba znaky do kódu 127 (čo ale nevylučuje používať aj znaky s diakritikou, ak si vytvoríme font s vlastným kódovaním znakov), ale ušetrí sa jeden byte na každý reťazec.&lt;br /&gt;
Ktorý spôsob budete používať, záleží od vašej voľby, ale my si ukážeme všetky spôsoby a pre každý z týchto spôsobov si vytvoríme {{Príkaz|macro}}, ktoré nám opäť sprehľadní kód.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 		cpu	8080&lt;br /&gt;
 		page	0&lt;br /&gt;
 		title	&amp;quot;ASM Program 2&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 		org	0		; program začne od adresy 0&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; definícia adries rutín v Monitore&lt;br /&gt;
 ERASE		equ	85A7h&lt;br /&gt;
 MONIT		equ	8C40h&lt;br /&gt;
 &lt;br /&gt;
 ; systémové premenné&lt;br /&gt;
 COLOR		equ	0C03Ah&lt;br /&gt;
 &lt;br /&gt;
 ; adresa VRAM&lt;br /&gt;
 VRAM		equ	0C000h&lt;br /&gt;
 AV		function row,col,VRAM+row*300h+col&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; - dp - pripraví text txt tak, že jeho dĺžka je v prvom byte pred textom&lt;br /&gt;
 dp		macro	txt&lt;br /&gt;
 		  db	strlen(txt)&lt;br /&gt;
 		  db	txt&lt;br /&gt;
 		endm&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; - dz - pripraví text txt tak, že ho ukončí nulou&lt;br /&gt;
 dz		macro	txt&lt;br /&gt;
 		  db	txt&lt;br /&gt;
 		  db	0&lt;br /&gt;
 		endm&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; - dm - pripraví text txt tak, že posledné písmeno má svoj kód s nastaveným 7. bitom&lt;br /&gt;
 dm		macro	txt&lt;br /&gt;
 		  if	strlen(txt) &amp;gt; 1&lt;br /&gt;
 		    db	substr(txt, 0, strlen(txt) - 1)&lt;br /&gt;
 		  endif&lt;br /&gt;
 		  if	strlen(txt) &amp;gt; 0&lt;br /&gt;
 		    db	charfromstr(txt, strlen(txt) - 1) | 80h&lt;br /&gt;
 		  endif&lt;br /&gt;
 		endm&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 Start:		di			; zakázanie prerušení&lt;br /&gt;
 		lxi	sp,8000h	; nastav zásobník na koniec RAM&lt;br /&gt;
 &lt;br /&gt;
 		xra	a		; nastav normálny výpis znakov&lt;br /&gt;
 		sta	COLOR&lt;br /&gt;
 &lt;br /&gt;
 		call	ERASE		; zmazanie obrazovky&lt;br /&gt;
 &lt;br /&gt;
 		lxi	h,AV(4,2)	; do HL adresu VRAM pre 4. riadok a 2. stĺpec&lt;br /&gt;
 		lxi	d,T_Text1	; adresa 1. textu&lt;br /&gt;
 		call	PrtTxtPasAV	; vypíš text, ktorého dĺžka je v prvom byte&lt;br /&gt;
 &lt;br /&gt;
 		lxi	h,AV(6,8)	; do HL adresu VRAM pre 6. riadok a 8. stĺpec&lt;br /&gt;
 		lxi	d,T_Text2	; adresa 2. textu&lt;br /&gt;
 		call	PrtTxt0AV	; vypíš text ukončený nulou&lt;br /&gt;
 &lt;br /&gt;
 		lxi	h,AV(8,0)	; do HL adresu VRAM pre 8. riadok a 0. stĺpec&lt;br /&gt;
 		lxi	d,T_Text3	; adresa 3. textu&lt;br /&gt;
 		call	PrtTxtMAV	; vypíš text, ktorý má posledný znak &amp;quot;invertovaný&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 		; návrat do Monitora (Os ready)&lt;br /&gt;
 		jmp	MONIT&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; Výpis reťazca &amp;quot;pascalovského&amp;quot; typu, kedy byte dĺžky reťazca predchádza samotný&lt;br /&gt;
 ; reťazec.&lt;br /&gt;
 ; I: DE=adresa textu (prvý byte je dĺžka), HL=adresa VRAM&lt;br /&gt;
 ; O: DE=adresa posledného znaku textu, B=0&lt;br /&gt;
 ; M: DE, B, AF&lt;br /&gt;
 PrtTxtPasAV:	shld	PrtCharDiaPos+1	; ulož adresu VRAM do inštrukcie&lt;br /&gt;
 					; LXI H,nn v rutine PrtCharDia&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; Výpis reťazca &amp;quot;pascalovského&amp;quot; typu, kedy byte dĺžky reťazca predchádza samotný&lt;br /&gt;
 ; reťazec.&lt;br /&gt;
 ; I: DE=adresa textu (prvý byte je dĺžka)&lt;br /&gt;
 ; O: DE=adresa posledného znaku textu, B=0&lt;br /&gt;
 ; M: DE, B, AF&lt;br /&gt;
 PrtTxtPas:	ldax	d		; prevezmi do A dĺžku reťazca&lt;br /&gt;
 		mov	b,a		; a ulož ju do B&lt;br /&gt;
 PrtTxtPasL:	inx	d		; posuň ukazateľ na znaky reťazca&lt;br /&gt;
 		ldax	d		; prevezmi znak do A&lt;br /&gt;
 		call	PrtCharDia	; vypíš znak&lt;br /&gt;
 		dcr	b		; zníž počítadlo znakov&lt;br /&gt;
 		jnz	PrtTxtPasL	; a opakuj pre celý reťazec&lt;br /&gt;
 		ret&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; Výpis reťazca ukončeného nulou.&lt;br /&gt;
 ; I: DE=adresa textu ukončeného nulou, HL=adresa VRAM&lt;br /&gt;
 ; O: DE=adresa ukončovacej nuly&lt;br /&gt;
 ; M: DE, AF&lt;br /&gt;
 PrtTxt0AV:	shld	PrtCharDiaPos+1	; ulož adresu VRAM do inštrukcie&lt;br /&gt;
 					; LXI H,nn v rutine PrtCharDia&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; Výpis reťazca ukončeného nulou.&lt;br /&gt;
 ; I: DE=adresa textu ukončeného nulou&lt;br /&gt;
 ; O: DE=adresa ukončovacej nuly&lt;br /&gt;
 ; M: DE, AF&lt;br /&gt;
 PrtTxt0:	ldax	d		; prevezmi znak do A&lt;br /&gt;
 		ora	a		; je to ukončovacia nula?&lt;br /&gt;
 		rz			; áno, vráť sa&lt;br /&gt;
 		call	PrtCharDia	; vypíš znak&lt;br /&gt;
 		inx	d		; posuň ukazateľ na ďalší znak reťazca&lt;br /&gt;
 		jmp	PrtTxt0		; opakuj pre celý reťazec&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; Výpis reťazca, ktorý má v poslednom znaku nastavený 7. bit (&amp;quot;invertovaný&amp;quot; znak).&lt;br /&gt;
 ; I: DE=adresa textu ukončeného nulou, HL=adresa VRAM&lt;br /&gt;
 ; O: DE=adresa posledného znaku textu&lt;br /&gt;
 ; M: DE, AF&lt;br /&gt;
 PrtTxtMAV:	shld	PrtCharDiaPos+1	; ulož adresu VRAM do inštrukcie&lt;br /&gt;
 					; LXI H,nn v rutine PrtCharDia&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; Výpis reťazca, ktorý má v poslednom znaku nastavený 7. bit (&amp;quot;invertovaný&amp;quot; znak).&lt;br /&gt;
 ; I: DE=adresa textu ukončeného nulou&lt;br /&gt;
 ; O: DE=adresa posledného znaku textu&lt;br /&gt;
 ; M: DE, AF&lt;br /&gt;
 PrtTxtM:	ldax	d		; prevezmi znak do A&lt;br /&gt;
 		ani	7Fh		; odmaskuj iba platné bity&lt;br /&gt;
 		call	PrtCharDia	; vypíš znak&lt;br /&gt;
 		ldax	d		; opäť vezmi znak do A&lt;br /&gt;
 		ora	a		; je to posledný znak s nastaveným 7. bitom?&lt;br /&gt;
 		rm			; áno, vráť sa&lt;br /&gt;
 		inx	d		; posuň ukazateľ na ďalší znak reťazca&lt;br /&gt;
 		jmp	PrtTxtM		; opakuj pre celý reťazec&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; Vypísanie znaku, ktorého kód je v A.&lt;br /&gt;
 ; Rutina využíva vlastný font, kde sú znaky vysoké 8 bodov (mikroriadkov).&lt;br /&gt;
 ; Riadok je ale vysoký 12 mikroriadkov a horné 4 mikroriadky slúžia pre&lt;br /&gt;
 ; diakritické znamienka.&lt;br /&gt;
 ; I: A=znak &amp;lt;32, 127&amp;gt; a &amp;lt;192, 255&amp;gt;, [PrtCharDiaPos+1]=adresa VRAM&lt;br /&gt;
 ; O: -&lt;br /&gt;
 ; M: AF&lt;br /&gt;
 PrtCharDia:	cpi	32		; ak je to riadiaci kód, návrat&lt;br /&gt;
 		rc			; neplatný kód znaku, ihneď sa vráť&lt;br /&gt;
 		cpi	127+1		; ak je to znak zo základného ASCII&lt;br /&gt;
 		jc	PrtCharDiaN	; skoč ďalej s CY=1&lt;br /&gt;
 		cpi	192		; kód znaku medzi &amp;lt;128, 191&amp;gt;&lt;br /&gt;
 		rc			; nie je podporovaný, vráť sa&lt;br /&gt;
 PrtCharDiaN:	push	h		; odpamätaj registre&lt;br /&gt;
 		push	d&lt;br /&gt;
 		push	b&lt;br /&gt;
 		push	psw		; odpamätaj kód znaku aj CY&lt;br /&gt;
 		jc	PrtCharDiaN1	; skoč, ak je to znak bez diakritiky&lt;br /&gt;
 		ani	3Fh		; odmaskuj poradie znaku s diakritikou&lt;br /&gt;
 		mov	c,a		; v tabuľke a ulož do BC&lt;br /&gt;
 		mvi	b,0&lt;br /&gt;
 		lxi	h,CsChar	; tabuľka zodp. znakov bez diakritiky&lt;br /&gt;
 		dad	b		; pripočítaj offset&lt;br /&gt;
 		mov	a,m		; a ulož do A základný znak&lt;br /&gt;
 PrtCharDiaN1:	sui	32		; uprav kód znaku na rozsah od 0&lt;br /&gt;
 		add	a		; kód znaku x2&lt;br /&gt;
 		mov	l,a		; ulož do HL&lt;br /&gt;
 		mvi	h,0&lt;br /&gt;
 		dad	h		; x4&lt;br /&gt;
 		dad	h		; x8; HL = (kód_znaku - 32) * 8&lt;br /&gt;
 		lxi	b,Font		; BC=bázová adresa fontu&lt;br /&gt;
 		dad	b		; pripočítaj k offsetu znaku&lt;br /&gt;
 		pop	psw		; obnov kód znaku a CY&lt;br /&gt;
 		push	h		; adresu predlohy znaku na zásobník&lt;br /&gt;
 		mvi	l,NN		; bez diakritického znamienka&lt;br /&gt;
 		jc	PrtCharDiaN2	; pre základne znaky&lt;br /&gt;
 		ani	3Fh		; odmaskuj poradie znaku s diakritikou&lt;br /&gt;
 		mov	c,a		; v tabuľke a ulož do BC&lt;br /&gt;
 		mvi	b,0&lt;br /&gt;
 		lxi	h,CsDiaChar	; nájdi v tabuľke nižší byte predlohy&lt;br /&gt;
 		dad	b		; diakritického znamienka&lt;br /&gt;
 		mov	l,m		; a ulož do L&lt;br /&gt;
 PrtCharDiaN2:	mvi	h,FontDia/256	; vyšší byte adresy predlohy diakr. zn.&lt;br /&gt;
 &lt;br /&gt;
 		xchg			; DE=predloha diakritického znamienka&lt;br /&gt;
 PrtCharDiaPos:	lxi	h,0		; adresa VRAM&lt;br /&gt;
 PrtCharDiaC:	mvi	c,0		; atribút do C&lt;br /&gt;
 &lt;br /&gt;
 		mvi	b,4		; 4 mikroriadky nad znakom diakr. zn.&lt;br /&gt;
 PrtCharDiaK:	ldax	d		; vezmi byte predlohy diakr. zn.&lt;br /&gt;
 		inx	d		; posun na ďalší byte predlohy&lt;br /&gt;
 		xra	c		; pridaj atribút&lt;br /&gt;
 		mov	m,a		; ulož do VRAM&lt;br /&gt;
 		mov	a,l		; posun na nasledujúci mikroriadok&lt;br /&gt;
 		adi	40h&lt;br /&gt;
 		mov	l,a&lt;br /&gt;
 		jnc	PrtCharDiaK0	; skoč, ak nedošlo k pretečeniu&lt;br /&gt;
 		inr	h		; inak inkrementuj ešte H&lt;br /&gt;
 PrtCharDiaK0:	dcr	b		; opakuj pre celé diakritické znamienko&lt;br /&gt;
 		jnz	PrtCharDiaK&lt;br /&gt;
 &lt;br /&gt;
 		pop	d		; obnov predlohu základného znaku&lt;br /&gt;
 		mvi	b,8		; výška znaku 8 mikroriadkov&lt;br /&gt;
 PrtCharDiaL:	ldax	d		; vezmi byte predlohy&lt;br /&gt;
 		inx	d		; posun na ďalší byte predlohy&lt;br /&gt;
 		xra	c		; pridaj atribút&lt;br /&gt;
 		mov	m,a		; ulož do VRAM&lt;br /&gt;
 		mov	a,l		; posun na nasledujúci mikroriadok&lt;br /&gt;
 		adi	40h&lt;br /&gt;
 		mov	l,a&lt;br /&gt;
 		jnc	PrtCharDiaL0	; skoč, ak nedošlo k pretečeniu&lt;br /&gt;
 		inr	h		; inak inkrementuj ešte H&lt;br /&gt;
 PrtCharDiaL0:	dcr	b		; opakuj pre celý znak&lt;br /&gt;
 		jnz	PrtCharDiaL&lt;br /&gt;
 		lhld	PrtCharDiaPos+1	; aktuálna adresa VRAM&lt;br /&gt;
 		inx	h		; posun na ďalšiu znakovú pozíciu VRAM&lt;br /&gt;
 		mov	a,l		; opustili sme textový riadok?&lt;br /&gt;
 		ani	3Fh&lt;br /&gt;
 		cpi	48		; 48 znakov na riadok&lt;br /&gt;
 		jc	PrtCharDiaE	; nie, návrat&lt;br /&gt;
 		mov	a,l		; áno, prejdi na ďalší textový riadok&lt;br /&gt;
 		ani	0C0h		; CR - návrat na začiatok riadku&lt;br /&gt;
 		mov	l,a&lt;br /&gt;
 		inr	h		; LF - ďalší riadok (12 mikroriadkov)&lt;br /&gt;
 		inr	h&lt;br /&gt;
 		inr	h&lt;br /&gt;
 PrtCharDiaE:	shld	PrtCharDiaPos+1	; ulož novú adresu VRAM&lt;br /&gt;
 		pop	b		; obnov registre&lt;br /&gt;
 		pop	d&lt;br /&gt;
 		pop	h&lt;br /&gt;
 		ret&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; tabuľka základných znakov, ktoré korešpondujú so znakmi s diakritikou podľa&lt;br /&gt;
 ; kódovania v KOI-8čs&lt;br /&gt;
 CsChar:		db	&amp;quot; a cder uiullonooarstu e yz     &amp;quot;&lt;br /&gt;
 		db	&amp;quot; A CDER UIULLONOOARSTU E YZ     &amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; tabuľka nižších bytov adresy predlohy diakritického znamienka&lt;br /&gt;
 CsDiaChar:	db	NN,D1,NN,M1,M1,M1,D1,NN&lt;br /&gt;
 		db	P1,D1,K1,D2,M3,P1,M1,D1&lt;br /&gt;
 		db	V1,P1,M1,M1,M3,D1,NN,D1&lt;br /&gt;
 		db	NN,D1,M1,NN,NN,NN,NN,NN&lt;br /&gt;
 		db	NN,D2,NN,M2,M2,M2,D2,NN&lt;br /&gt;
 		db	P2,D2,K2,D2,M3,P2,M2,D2&lt;br /&gt;
 		db	V2,P2,M2,M2,M2,D2,NN,D2&lt;br /&gt;
 		db	NN,D2,M2,NN,NN,NN,NN,NN&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; dáta fontu&lt;br /&gt;
 Font:		binclude &amp;quot;../data/font.bin&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; dáta diakritických znamienok&lt;br /&gt;
 ; Potrebujeme, aby predlohy diakritických znamienok neprekročili 256 bytovú&lt;br /&gt;
 ; &amp;quot;stránku&amp;quot;, teda aby mali všetky predlohy rovnaký vyšší byte adresy.&lt;br /&gt;
 	if (($ / 256) &amp;lt;&amp;gt; (($ + 48) / 256))&lt;br /&gt;
 		align	256		; zarovnanie na adresu MOD 256&lt;br /&gt;
 	endif&lt;br /&gt;
 FontDia:	binclude &amp;quot;../data/font-dia.bin&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; definícia návestí na nižší byte adresy predlohy diakritických znamienok&lt;br /&gt;
 NN		equ	(FontDia+0)&amp;amp;255	 ; nič&lt;br /&gt;
 D1		equ	(FontDia+4)&amp;amp;255	 ; dĺžeň nad malým písmenom&lt;br /&gt;
 M1		equ	(FontDia+8)&amp;amp;255	 ; mäkčeň nad malým písmenom&lt;br /&gt;
 M3		equ	(FontDia+12)&amp;amp;255 ; mäkčeň pre malé/veľké L a malé T&lt;br /&gt;
 P1		equ	(FontDia+16)&amp;amp;255 ; prehláska nad malým písmenom&lt;br /&gt;
 K1		equ	(FontDia+20)&amp;amp;255 ; krúžok nad malým U&lt;br /&gt;
 V1		equ	(FontDia+24)&amp;amp;255 ; vokáň nad malým O&lt;br /&gt;
 D2		equ	(FontDia+28)&amp;amp;255 ; dĺžeň nad veľkým písmenom&lt;br /&gt;
 M2		equ	(FontDia+32)&amp;amp;255 ; mäkčeň nad veľkým písmenom&lt;br /&gt;
 P2		equ	(FontDia+36)&amp;amp;255 ; prehláska nad veľkým písmenom&lt;br /&gt;
 K2		equ	(FontDia+40)&amp;amp;255 ; krúžok nad veľkým U&lt;br /&gt;
 V2		equ	(FontDia+44)&amp;amp;255 ; vokáň nad veľkým O&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; definícia vlastného charsetu (transformačnej tabuľky) kódovania znakov&lt;br /&gt;
 ; CP1250 -&amp;gt; KOI8čs&lt;br /&gt;
 		charset	&amp;#039;á&amp;#039;,0C1h&lt;br /&gt;
 		charset	&amp;#039;č&amp;#039;,0C3h&lt;br /&gt;
 		charset	&amp;#039;ď&amp;#039;,0C4h&lt;br /&gt;
 		charset	&amp;#039;ě&amp;#039;,0C5h&lt;br /&gt;
 		charset	&amp;#039;ŕ&amp;#039;,0C6h&lt;br /&gt;
 		charset	&amp;#039;ü&amp;#039;,0C8h&lt;br /&gt;
 		charset	&amp;#039;í&amp;#039;,0C9h&lt;br /&gt;
 		charset	&amp;#039;ů&amp;#039;,0CAh&lt;br /&gt;
 		charset	&amp;#039;ĺ&amp;#039;,0CBh&lt;br /&gt;
 		charset	&amp;#039;ľ&amp;#039;,0CCh&lt;br /&gt;
 		charset	&amp;#039;ö&amp;#039;,0CDh&lt;br /&gt;
 		charset	&amp;#039;ň&amp;#039;,0CEh&lt;br /&gt;
 		charset	&amp;#039;ó&amp;#039;,0CFh&lt;br /&gt;
 		charset	&amp;#039;ô&amp;#039;,0D0h&lt;br /&gt;
 		charset	&amp;#039;ä&amp;#039;,0D1h&lt;br /&gt;
 		charset	&amp;#039;ř&amp;#039;,0D2h&lt;br /&gt;
 		charset	&amp;#039;š&amp;#039;,0D3h&lt;br /&gt;
 		charset	&amp;#039;ť&amp;#039;,0D4h&lt;br /&gt;
 		charset	&amp;#039;ú&amp;#039;,0D5h&lt;br /&gt;
 		charset	&amp;#039;é&amp;#039;,0D7h&lt;br /&gt;
 		charset	&amp;#039;ý&amp;#039;,0D9h&lt;br /&gt;
 		charset	&amp;#039;ž&amp;#039;,0DAh&lt;br /&gt;
 		charset	&amp;#039;Á&amp;#039;,0E1h&lt;br /&gt;
 		charset	&amp;#039;Č&amp;#039;,0E3h&lt;br /&gt;
 		charset	&amp;#039;Ď&amp;#039;,0E4h&lt;br /&gt;
 		charset	&amp;#039;Ě&amp;#039;,0E5h&lt;br /&gt;
 		charset	&amp;#039;Ŕ&amp;#039;,0E6h&lt;br /&gt;
 		charset	&amp;#039;Ü&amp;#039;,0E8h&lt;br /&gt;
 		charset	&amp;#039;Í&amp;#039;,0E9h&lt;br /&gt;
 		charset	&amp;#039;Ů&amp;#039;,0EAh&lt;br /&gt;
 		charset	&amp;#039;Ĺ&amp;#039;,0EBh&lt;br /&gt;
 		charset	&amp;#039;Ľ&amp;#039;,0ECh&lt;br /&gt;
 		charset	&amp;#039;Ö&amp;#039;,0EDh&lt;br /&gt;
 		charset	&amp;#039;Ň&amp;#039;,0EEh&lt;br /&gt;
 		charset	&amp;#039;Ó&amp;#039;,0EFh&lt;br /&gt;
 		charset	&amp;#039;Ô&amp;#039;,0F0h&lt;br /&gt;
 		charset	&amp;#039;Ä&amp;#039;,0F1h&lt;br /&gt;
 		charset	&amp;#039;Ř&amp;#039;,0F2h&lt;br /&gt;
 		charset	&amp;#039;Š&amp;#039;,0F3h&lt;br /&gt;
 		charset	&amp;#039;Ť&amp;#039;,0F4h&lt;br /&gt;
 		charset	&amp;#039;Ú&amp;#039;,0F5h&lt;br /&gt;
 		charset	&amp;#039;É&amp;#039;,0F7h&lt;br /&gt;
 		charset	&amp;#039;Ý&amp;#039;,0F9h&lt;br /&gt;
 		charset	&amp;#039;Ž&amp;#039;,0FAh&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; Texty (tento súbor je uložený v kódovaní CP1250)&lt;br /&gt;
 T_Text1:	dp	&amp;quot;Tento reťazec má dĺžku uvedenú v prvom byte.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 T_Text2:	dz	&amp;quot;Tento reťazec je ukončený nulou.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 T_Text3:	dm	&amp;quot;Retazec s nastavenym 7. bitom v poslednom znaku.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; zrušenie špeciálneho charsetu&lt;br /&gt;
 		charset&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 		end&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
Na začiatku sme si teda zadefinovali 3 makrá {{Príkaz|dp}}, {{Príkaz|dz}} a {{Príkaz|dm}} pre každý zo spôsobov definície reťazca. V makrách použité funkcie {{Príkaz|strlen}}, {{Príkaz|substr}} a {{Príkaz|charfromstr}} sú interné funkcie macroassemblera &amp;#039;&amp;#039;&amp;#039;AS&amp;#039;&amp;#039;&amp;#039;. Samotné makrá sú myslím dostatočne zrozumiteľné, takže nepotrebujú ďalšie vysvetlenie. Na konci sme si za pomoci týchto makier zadefinovali 3 rôzne reťazce rovnakým spôsobom, ako by sme to robili pomocou pseudoinštrukcie {{Príkaz|db}}. V tomto prípade sa ale reťazec pripraví príslušným  spôsobom a je vidieť, že takto je kód prehľadnejší. Odporúčam pozrieť si listing prekladu (súbor s príponou {{Príkaz|.lst}}), kde uvidíte, ako sú makrá rozvinuté do kódu. Listing prekladu je veľmi užitočný hlavne pri debuggovaní, kde vidíme konkrétne adresy, na ktorých sa jednotlivé rutiny a dáta nachádzajú.&lt;br /&gt;
&lt;br /&gt;
Pre výpis znaku používame našu rutinu {{Príkaz|PrtCharDia}}, ktorú sme si ale mierne upravili. Zmena je ale iba v tom, že cieľová adres VRAM už nevstupuje do rutiny v registri {{Kbd|HL}}, ale je ju treba pripraviť zápisom na adresu {{Príkaz|PrtCharDiaPos+1}} vo vnútri samotnej rutiny. Adresa VRAM sa potom podľa očakávania po vypísaní znaku inkrementuje a uloží sa opäť na adresu {{Príkaz|PrtCharDiaPos+1}}. Tým sme dosiahli, že rutina {{Príkaz|PrtCharDia}} nemení ani register {{Kbd|HL}}, čo sa nám môže hodiť.&lt;br /&gt;
&lt;br /&gt;
V predošlej kapitole som na to priamo nepoukázal, ale asi ste si všimli, že sme farbu textu v rutine {{Príkaz|PrtCharDia}} nastavovali zápisom atribútu na adresu {{Príkaz|PrtCharDiaC+1}}, teda prakticky sme modifikovali hodnotu číselného operandu priamo v inštrukcii {{Príkaz|mvi c,0}}. Teraz rovnakým spôsobom nastavujeme aj adresu VRAM. Na adrese {{Príkaz|PrtCharDiaPos}} je inštrukcia {{Príkaz|lxi h,0}}, kedy zápisom na adresu {{Príkaz|PrtCharDiaPos+1}} modifikujeme operand v tejto inštrukcii. Táto technika &amp;#039;&amp;#039;&amp;#039;samomodifikujúceho sa kódu&amp;#039;&amp;#039;&amp;#039; sa používa veľmi často, pretože daná hodnota jednak nemusí byť niekde inde v pamäti a zároveň to skráti a aj zrýchli kód. Samozrejme, ak by sme písali kód, ktorý bude bežať v ROM, táto technika sa, pochopiteľne, nedá použiť.&lt;br /&gt;
&lt;br /&gt;
Prvá rutina {{Príkaz|PrtTxtPas}}, resp. {{Príkaz|PrtTxtPasAV}} vypisuje reťazec zadefinovaný makrom {{Príkaz|dp}}. Adresa reťazca vstupuje do rutiny v registri {{Kbd|DE}}. Na úvod sa do registra {{Kbd|B}} pripraví dĺžka reťazca a potom sa postupne vyberajú a vypisujú jednotlivé znaky. Vo výpisovej slučke sa ukazateľ na znaky reťazca posunie pred vypísaním znaku, keďže pri prvej iterácii potrebujeme preskočiť byte dĺžky reťazca. Po každom vypísanom znaku sa zníži počítadlo znakov v registri {{Kbd|B}}. Kým nie je počítadlo nulové, pokračuje sa vo vypisovaní znakov. Keďže rutina {{Príkaz|PrtCharDia}} nemení okrem {{Kbd|AF}} žiadne iné registre, nemusíme to pri volaní tejto rutiny robiť my. Pri volaní rutiny {{Príkaz|PrtTxtPasAV}} musí byť cieľová adresa VRAM v registri {{Kbd|HL}}, ale pri volaní rutiny {{Príkaz|PrtTxtPas}} sa pokračuje pri výpise od poslednej pozície.&lt;br /&gt;
&lt;br /&gt;
Druhá rutina {{Príkaz|PrtTxt0}}, resp. {{Príkaz|PrtTxt0AV}} vypisuje reťazec zadefinovaný makrom {{Príkaz|dz}}. Adresa reťazca vstupuje do rutiny opäť v registri {{Kbd|DE}}. Výpisová slučka sa líši tým, že hneď na začiatku sa prevezme znak do akumulátora a overuje sa, či je to už koniec reťazca, teda že je akumulátor nulový. Ak to tak je (nastaví sa príznak {{Kbd|Z}}), urobí sa návrat z rutiny. Po výpise znaku sa inkrementuje ukazateľ na text a slučka sa opakuje. Pre obe verzie rutín platí to isté, čo v predošlom odstavci.&lt;br /&gt;
&lt;br /&gt;
Tretia rutina {{Príkaz|PrtTxtM}}, resp. {{Príkaz|PrtTxtMAV}} vypisuje reťazec zadefinovaný makrom {{Príkaz|dm}}. Pred vypísaním znaku sa vynuluje prípadne nastavený 7. bit v kóde znaku. Až po vypísaní znaku sa overuje, či to bol posledný znak, teda či jeho kód mal nastavený 7. bit a to testovaním príznaku znamienka {{Kbd|S}}.&lt;br /&gt;
&lt;br /&gt;
V hlavnom programe sú už obvyklé veci a jednoducho sa iba zavolajú jednotlivé rutiny s predchádzajúcim nastavením používaných registrov.&amp;lt;br /&amp;gt;&lt;br /&gt;
Za zmienku ešte stojí, že na zmazanie obrazovky sme použili rutinu Monitora {{Príkaz|ERASE}}. Tá zmaže obrazovku vyplnením VRAM hodnotou systémovej premennej {{Príkaz|COLOR}}. Rutina {{Príkaz|ERASE}} mení všetky registre.&lt;br /&gt;
&lt;br /&gt;
Nakoniec je potrebné vysvetliť definíciu vlastného &amp;#039;&amp;#039;&amp;#039;charsetu&amp;#039;&amp;#039;&amp;#039;. Keďže náš zdrojový text píšeme na PC, kedy je zdrojový súbor uložený v kódovaní &amp;#039;&amp;#039;&amp;#039;CP1250&amp;#039;&amp;#039;&amp;#039; (ANSI Central European) a naša rutina vypisuje znaky v kódovaní &amp;#039;&amp;#039;&amp;#039;KOI-88čs&amp;#039;&amp;#039;&amp;#039;, potrebujeme, aby sa naše texty už pri kompilácii &amp;quot;transformovali&amp;quot; do správneho kódovania. Toto nám umožňuje pseudoinštrukcia {{Príkaz|charset}}. Pomocou nej definujeme dvojice hodnôt pre transformáciu jedného kódu znaku na iný. Prvá hodnota je znak zapísaný v PC editore v kódovaní CP1250 a druhá hodnota je kód daného znaku v KOI-8čs (viď tabuľka znakov v návode k PMD 85-3). Táto definícia zmeny charsetu musí byť, samozrejme, uvedená skôr, ako je zadefinovaný prvý text, ktorý používa znaky s diakritikou. Pre vypnutie &amp;quot;prekódovania&amp;quot; znakov sa použije pseudoinštrukcia {{Príkaz|charset}} bez parametrov. Táto pseudoinštrukcia môže mať aj iný počet parametrov, ale to si už preštudujte v návode ku makroassembleru &amp;#039;&amp;#039;&amp;#039;AS&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Ďalšie spôsoby výpisu textu ==&lt;br /&gt;
Uvedené rutiny pre výpis textu vyžadovali, aby adresy textu a VRAM boli pripravené v registroch {{Kbd|DE}} a {{Kbd|HL}}. Ukážeme si ale aj iný spôsob predania parametra do rutiny a to tak, že bude uvedené za volaním rutiny.&lt;br /&gt;
 		...&lt;br /&gt;
 		call	PrtTxt0R	; vypíš text&lt;br /&gt;
 		dw	AV(10,1)	; cieľová adresa VRAM&lt;br /&gt;
 		dw	T_Text4		; adresa textu&lt;br /&gt;
 		...&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; Vypísanie textu ukončeného nulou. Adresa VRAM a adresa textu sú uvedené za&lt;br /&gt;
 ; volaním rutiny.&lt;br /&gt;
 ; I: adresa VRAM a textu za volaním rutiny ako dw&lt;br /&gt;
 ; O: -&lt;br /&gt;
 ; M: HL, DE, AF&lt;br /&gt;
 PrtTxt0R:	pop	h		; návratová adresa z rutiny do HL&lt;br /&gt;
 		mov	e,m		; do DE prevezmi adresu VRAM, ktorá&lt;br /&gt;
 		inx	h		; je uvedená za volaním rutiny&lt;br /&gt;
 		mov	d,m&lt;br /&gt;
 		inx	h&lt;br /&gt;
 		xchg			; prehoď adresu VRAM do HL&lt;br /&gt;
 		shld	PrtCharDiaPos+1	; a ulož do rutiny PrtCharDia&lt;br /&gt;
 		xchg			; vráť do HL adresu za volaním rutiny&lt;br /&gt;
 		mov	e,m		; do DE teraz prevezmi adresu textu&lt;br /&gt;
 		inx	h&lt;br /&gt;
 		mov	d,m&lt;br /&gt;
 		inx	h&lt;br /&gt;
 		push	h		; ulož novú návratovú adresu na zásobník&lt;br /&gt;
 PrtTxt0RL	ldax	d		; prevezmi znak do A&lt;br /&gt;
 		ora	a		; je to ukončovacia nula?&lt;br /&gt;
 		rz			; áno, vráť sa&lt;br /&gt;
 		call	PrtCharDia	; vypíš znak&lt;br /&gt;
 		inx	d		; posuň ukazateľ na ďalší znak reťazca&lt;br /&gt;
 		jmp	PrtTxt0RL	; opakuj pre celý reťazec&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 T_Text4:	db	&amp;quot;Tento reťazec je ukončený nulou,&amp;quot;&lt;br /&gt;
 		db	&amp;quot; jeho adresa,   spolu s cieľovou adresou VRAM, sú&amp;quot;&lt;br /&gt;
 		db	&amp;quot; uvedené za    volaním rutiny PrtTxt0VA&amp;quot;&lt;br /&gt;
 		dz	&amp;quot; - najprv adresa VRAM,  potom adresa textu.&amp;quot;&lt;br /&gt;
Ako sme si povedali v popise inštrukcií, pri vykonávaní inštrukcie {{Príkaz|call}} sa na zásobník uloží návratová adresa, čo je adresa inštrukcie za touto inštrukciou. V našom prípade tam ale pri volaní rutiny {{Príkaz|PrtTxt0R}} nie je žiadna inštrukcia, ale sú tam dve dvojbytové hodnoty. Preto si na začiatku rutiny {{Príkaz|PrtTxt0R}} vyberieme z vrcholu zásobníka &amp;quot;návratovú&amp;quot; adresu do {{Kbd|HL}} a odtiaľ si postupne vyzdvihneme najprv adresu VRAM (ktorú uložíme do rutiny {{Príkaz|PrtCharDia}}) a potom adresu textu do {{Kbd|DE}}. Následne už skutočnú návratovú adresu za týmito dvoma adresami uložíme späť na zásobník. Zbytok rutiny je už známy.&amp;lt;br /&amp;gt;&lt;br /&gt;
Keďže {{Príkaz|T_Text4}} používa znaky s diakritikou, musí byť v bloku za definíciou {{Príkaz|charset}}, tak ako ostatné texty. Tu sme to pre skrátenie textu už neuviedli. Pri definícii textu {{Príkaz|T_Text4}} si ešte všimnite, že až na poslednom riadku textu je uvedené makro {{Príkaz|dz}} a predošlé riadky sú definované pomocou pseudoinštrukcie {{Príkaz|db}}. Ukončenie reťazca nulou chceme až na jeho konci a keďže sme chceli pre sprehľadnenie zdrojového kódu rozdeliť tento dlhý text do viacerých riadkov, museli sme pre prvé 3 riadky použiť pseudoinštrukciu {{Príkaz|db}}.&lt;br /&gt;
&lt;br /&gt;
Za volaním rutiny ale môže byť aj samotný text. Princíp bude rovnaký. Zo zásobníka si vyberieme návratovú adresu, kde budeme mať adresu VRAM a aj samotný text.&lt;br /&gt;
 		...&lt;br /&gt;
 		call	PrtTxt0RT	; vypíš text&lt;br /&gt;
 		dw	AV(15,3)	; cieľová adresa VRAM&lt;br /&gt;
 		dz	&amp;quot;Tento text je za volanim rutiny PrtTxt0RT.&amp;quot;&lt;br /&gt;
 		...&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; Vypísanie textu ukončeného nulou. Adresa VRAM a aj samotný text sú uvedené za&lt;br /&gt;
 ; volaním rutiny.&lt;br /&gt;
 ; I: Adresa VRAM a text za volaním rutiny&lt;br /&gt;
 ; O: -&lt;br /&gt;
 ; M: HL, DE, AF&lt;br /&gt;
 PrtTxt0RT:	pop	h		; návratová adresa z rutiny do HL&lt;br /&gt;
 		mov	e,m		; do DE prevezmi adresu VRAM, ktorá&lt;br /&gt;
 		inx	h		; je uvedená za volaním rutiny&lt;br /&gt;
 		mov	d,m&lt;br /&gt;
 		inx	h&lt;br /&gt;
 		xchg			; prehoď adresu VRAM do HL&lt;br /&gt;
 		shld	PrtCharDiaPos+1	; a ulož do rutiny PrtCharDia&lt;br /&gt;
 					; v DE je teraz adresa textu&lt;br /&gt;
 PrtTxt0RTL	ldax	d		; prevezmi znak do A&lt;br /&gt;
 		ora	a		; je to ukončovacia nula?&lt;br /&gt;
 		jz	JumpDE		; áno, skoč sa nepriamo vrátiť z rutiny&lt;br /&gt;
 		call	PrtCharDia	; vypíš znak&lt;br /&gt;
 		inx	d		; posuň ukazateľ na ďalší znak reťazca&lt;br /&gt;
 		jmp	PrtTxt0RL	; opakuj pre celý reťazec&lt;br /&gt;
 &lt;br /&gt;
 JumpDE:		xchg			; prehoď adresu skoku z DE do HL&lt;br /&gt;
 JumpHL:		pchl			; skoč na adresu v HL&lt;br /&gt;
Vyzdvihnutie cieľovej adresy VRAM je rovnaký, ako v predošlom prípade. Po uložení adresy VRAM do rutiny {{Príkaz|PrtCharDia}} nám ale v DE zostane ukazateľ na samotný text a rutina pokračuje ako obvykle vypisovaním jednotivých znakov. Líši sa reakcia na ukončovaciu nulu, kde namiesto okamžitého návratu pomocou inštrukcie {{Príkaz|rz}}, skočíme na nepriamy návrat z rutiny ({{Príkaz|jz JumpDE}}). Návrat pomocou inštrukcie {{Príkaz|rz}} ani nemôžeme urobiť, pretože na zásobníku naša návratová adresa nie je, na rozdiel od predošlého prípadu, kedy sme ju tam uložili. My máme návratovú adresu prakticky v registri {{Kbd|DE}} a preto skokom na návestie {{Príkaz|JumpDE}} najprv prehodíme túto adresu do {{Kbd|HL}} a nepriamo na ňu skočíme.&lt;br /&gt;
&lt;br /&gt;
Tu ešte upriamim pozornosť na jednu maličkosť. Určite ste si všimli, že po dosiahnutí konca reťazca register {{Kbd|DE}} ukazuje na ukončovaciu nulu reťazca a práve na túto adresu sa vlastne prevedie návrat z rutiny. Máte pravdu, exaktne vzaté, mali by sme sa vrátiť o byte neskôr, pretože až tam začína ďalšia &amp;quot;platná&amp;quot; inštrukcia. Keďže ale &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; je kód inštrukcie {{Príkaz|nop}}, nevadí to a nič nebezpečné sa nestane.&lt;br /&gt;
&lt;br /&gt;
Nepriamy návrat z rutiny by sa dal urobiť aj iným spôsobom a to uložením registra {{Kbd|DE}} na zásobník {{Príkaz|push de}} a obvyklým návratom inštrukciou {{Príkaz|ret}}, ale táto alternatíva trvá 21T, oproti 9T z nášho riešenia.&lt;br /&gt;
&lt;br /&gt;
Text za volaním rutiny v našom prípade nepoužíva znaky s diakritikou, keďže definíciu charsetu máme až neskôr. Šlo by to samozrejme realizovať tak, že definíciou charsetu by sme mali hneď na začiatku zdrojového textu (napr. v mieste, kde sme si definovali makrá) a tak všetky texty v zdrojovom texte by už mohli byť s diakritikou.&lt;br /&gt;
== Vypisovanie textov z tabuľky ==&lt;br /&gt;
Niekedy je vhodné mať všetky texty/reťazce na jednom mieste a mať ich &amp;quot;očíslované&amp;quot;. To znamená, že pre vypísanie konkrétneho reťazca zavoláme príslušnú rutinu s číslom reťazca.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ukážeme si dva spôsoby. Prvý spôsob bude spočívať vo vyhľadávaní koncov textov a tým nájdení toho požadovaného (rutina {{Príkaz|PrtTxtN1}}). Druhý spôsob bude postavený na tabuľke adries textov (rutina {{Príkaz|PrtTxtN2}}).&lt;br /&gt;
 		...&lt;br /&gt;
 		; vypísanie textu podľa čísla textu - verzia vyhľadania textu&lt;br /&gt;
 PrtTN1:	lxi	h,AV(1, 0)	; počiatočná adresa VRAM&lt;br /&gt;
 		mvi	c,8		; 8 reťazcov&lt;br /&gt;
 PrtTN1L:	mov	b,c		; číslo reťazca do B&lt;br /&gt;
 		call	PrtTxtN1	; vypíš daný reťazec&lt;br /&gt;
 		inr	h		; prejdi na ďalší textový riadok&lt;br /&gt;
 		inr	h&lt;br /&gt;
 		inr	h&lt;br /&gt;
 		dcr	c		; opakuj pre všetky reťazce&lt;br /&gt;
 		jnz	PrtTN1L&lt;br /&gt;
 &lt;br /&gt;
 		; vypísanie textu podľa čísla textu - verzia s tabuľkou&lt;br /&gt;
 PrtTN2:	lxi	h,AV(11, 0)	; počiatočná adresa VRAM&lt;br /&gt;
 		mvi	b,8		; 8 reťazcov&lt;br /&gt;
 PrtTN2L:	push	b		; odpamätaj počítadlo na zásobník&lt;br /&gt;
 		call	PrtTxtN2	; vypíš daný reťazec&lt;br /&gt;
 		pop	b		; obnov počítadlo&lt;br /&gt;
 		inr	h		; prejdi na ďalší textový riadok&lt;br /&gt;
 		inr	h&lt;br /&gt;
 		inr	h&lt;br /&gt;
 		dcr	b		; opakuj pre všetky reťazce&lt;br /&gt;
 		jnz	PrtTN2L&lt;br /&gt;
 		...&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; Vypísanie textu podľa čísla textu - verzia vyhľadania textu.&lt;br /&gt;
 ; I: HL=adresa VRAM, B=číslo textu &amp;lt;1, N&amp;gt;&lt;br /&gt;
 ; O: -&lt;br /&gt;
 ; M: DE, B, AF&lt;br /&gt;
 PrtTxtN1:	lxi	d,T_TextBase	; bázová adresa textov&lt;br /&gt;
 PrtTxtN1B:	dcr	b		; zníž číslo textu&lt;br /&gt;
 		jz	PrtTxt0AV	; našli sme,  skoč ho vypísať&lt;br /&gt;
 PrtTxtN1L:	ldax	d		; vezmi znak&lt;br /&gt;
 		inx	d		; posuň ukazateľ&lt;br /&gt;
 		ora	a		; koniec textu?&lt;br /&gt;
 		jnz	PrtTxtN1L	; nie, hľadaj jeho koniec&lt;br /&gt;
 		jmp	PrtTxtN1B	; opakuj, kým nenájdeš požadovaný text&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; Vypísanie textu podľa čísla textu - verzia s tabuľkou adries textov.&lt;br /&gt;
 ; I: HL=adresa VRAM, B=číslo textu &amp;lt;1, N&amp;gt;&lt;br /&gt;
 ; O: -&lt;br /&gt;
 ; M: DE, BC, AF&lt;br /&gt;
 PrtTxtN2:	xchg			; adresa VRAM dočasne do DE&lt;br /&gt;
 		mov	a,b		; číslo textu do A&lt;br /&gt;
 		add	a		; x2 - adresa v tabuľke má 2 byty&lt;br /&gt;
 		mov	c,a		; ulož offset do BC&lt;br /&gt;
 		mvi	b,0&lt;br /&gt;
 		lxi	h,T_TxtBTab-2	; adresa tabuľky adries textov&lt;br /&gt;
 		dad	b		; pripočítaj offset&lt;br /&gt;
 		mov	a,m		; vyber adresu textu do HL&lt;br /&gt;
 		inx	h&lt;br /&gt;
 		mov	h,m&lt;br /&gt;
 		mov	l,a&lt;br /&gt;
 		xchg			; prehoď adresu VRAM a adresu textu&lt;br /&gt;
 		jmp	PrtTxt0AV	; a skoč vypísať text&lt;br /&gt;
 &lt;br /&gt;
 ;------------------------------------------------------------------------------&lt;br /&gt;
 ; Tabuľka textov&lt;br /&gt;
 T_TextBase:&lt;br /&gt;
 T_TxtB1:	dz	&amp;quot;Prvý&amp;quot;&lt;br /&gt;
 T_TxtB2:	dz	&amp;quot;Druhý&amp;quot;&lt;br /&gt;
 T_TxtB3:	dz	&amp;quot;Tretí&amp;quot;&lt;br /&gt;
 T_TxtB4:	dz	&amp;quot;Štvrtý&amp;quot;&lt;br /&gt;
 T_TxtB5:	dz	&amp;quot;Piaty&amp;quot;&lt;br /&gt;
 T_TxtB6:	dz	&amp;quot;Šiesty&amp;quot;&lt;br /&gt;
 T_TxtB7:	dz	&amp;quot;Siedmy&amp;quot;&lt;br /&gt;
 T_TxtB8:	dz	&amp;quot;Ôsmy&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ; Tabuľka adries textov&lt;br /&gt;
 T_TxtBTab:	dw	T_TxtB1,T_TxtB2,T_TxtB3,T_TxtB4&lt;br /&gt;
 		dw	T_TxtB5,T_TxtB6,T_TxtB7,T_TxtB8&lt;br /&gt;
V prvej rutine {{Príkaz|PrtTxtN1}} sa najprv pripraví do registra {{Kbd|DE}} bázová adresa jednotlivých textov. Následne sa zníži číslo požadovaného textu v registri {{Kbd|B}} a ak sa register {{Kbd|B}} vynuloval, máme v registri {{Kbd|DE}} adresu požadovaného textu a môžeme ho vypísať. Inak sa potom prechádza po jednotlivých znakoch aktuálneho textu a hľadá sa jeho koniec. Tým sa dostaneme na začiatok ďalšieho textu. Toto sa opakuje, kým sa teda nevynuluje register {{Kbd|B}}.&amp;lt;br /&amp;gt;&lt;br /&gt;
Vo fragmente kódu od návestia {{Príkaz|PrtTN1}} sa postupne vypíše všetkých 8 textov od ôsmeho po prvý. Číslo textu a zároveň počítadlo je v registri {{Kbd|C}}, keďže rutina {{Príkaz|PrtTxtN1}} register {{Kbd|B}} vynuluje. Jednotlivé texty sa vypisujú na osobitných riadkoch, čo sa udeje už známou inkrementáciu vyššieho bytu adresy VRAM o 3.&lt;br /&gt;
&lt;br /&gt;
V druhej rutine {{Príkaz|PrtTxtN2}} sa číslo textu vynásobí dvoma, čím dostaneme offset do tabuľky adries jednotlivých textov {{Príkaz|T_TxtBTab}}. Do registra {{Kbd|HL}} sa uloží adresa tejto tabuľky znížená o 2, keďže číslujeme texty od 1. Po pripočítaní offsetu k adrese tabuľky sa vyberie už samotná adresa textu do {{Kbd|HL}} a po prehodení s adresou VRAM sa text vypíše.&amp;lt;br /&amp;gt;&lt;br /&gt;
Fragment kódu pre výpis všetkých textov touto rutinou je veľmi podobný predošlému, len počítadlo a teda aj číslo textu je priamo v registri {{Kbd|B}} a preto sa musí odpamätávať na zásobníku.&lt;br /&gt;
&lt;br /&gt;
Každá z týchto dvoch rutín má svoje výhody aj nevýhody. Prvá je časovo náročnejšia a čím viac je textov, tým dlhšie trvá nájdenie posledného textu. Nepotrebuje však osobitnú tabuľku adries textov, ktorá pri veľkom počte textov zaberá dvojnásobok ich počtu. Druhá rutina potrebuje pre nájdenie ktoréhokoľvek textu vždy rovnaký čas, ale vyžaduje už spomenutú tabuľku adries textov.&lt;br /&gt;
== Na stiahnutie ==&lt;br /&gt;
Opäť je tu na stiahnutie celý projekt pre túto kapitolu a opäť sú všetky príklady v jednom zdrojovom súbore.&lt;br /&gt;
* [[download:142|ASM Program 2]]&lt;br /&gt;
----&lt;br /&gt;
[[Blog:Programovanie_v_assembleri_i8080_pre_PMD_85_(8)|&amp;amp;lt;&amp;amp;lt;Vypisujeme znaky na obrazovku]]&lt;br /&gt;
&amp;lt;span style=&amp;quot;float: right;&amp;quot;&amp;gt;&lt;br /&gt;
[[Blog:Programovanie_v_assembleri_i8080_pre_PMD_85_(10)|Vypisujeme čísla &amp;amp;gt;&amp;amp;gt;]]&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rombor</name></author>	</entry>

	</feed>