[Back Home]





Assembly stuff

I wrote a book about assembly programming for x86 intended for beginners (in czech) link is here
Fixes for Czech version:

Errata alias opravenka:

Děkuji laskavým čtenářům za upozornění na chyby, kterých jsem se dopustil:

Strana/kde

99/kapitola 7.2, druhý odstavec
Postupovat budeme stejně jako při převodu...
Matoucí formulace ve větě. Lépe by bylo uvést, že každé číslo můžu rozepsat do jednotlivých cifer podobným algoritmem jako je převod čísel z desítkové soustavy do jiné. Například číslo 1234 v desítkové soustavě mohu rozdělit na cifry tak, že jej vydělím deseti a dostanu 123 a zbytek 4 číslo 123 zase vydělím deseti a dostanu 12 a 3. Je vidět, že postupným dělením dostávám cifry čísla v soustavě o zvoleném základu, jsem-li  schopen číslo v dané soustavě, ve které zrovna počítám, dělit.
146/tabulka nahoře
Správné módy pro otevření souboru:

AL = 0 jen pro čtení
AL = 1 jen pro zápis
AL = 2 pro čtení i zápis

Chyby se vyskytují i v příkladech, nicméně ty záhadně fungují (i když otevřu standartní výstup jen pro čtení přesto to funguje)
150/dole
Stejné známky, stejné chyby správně je snad toto:

BX = 0 jen pro čtení
BX = 1 jen pro zápis
BX = 2 pro čtení i zápis
150/nahoře
Špatný popis bitové masky registru DX:

Registr DH jmusí být 0x00.
Spodní 4 bity registru DL určují akce pokud soubor existuje, vrchní 4 bity zase akce pokud soubor neexistuje, tedy:

Spodní 4 bity (registr DL)
0000 - skonči s chybou,jestliže soubor existuje
0001 - otevři jestliže soubor existuje
0010 - zkrať soubor na nulovou délku (nahraď) a otevři, pokud existuje

Horní 4 bity (registr DL)
0000 - skonči s chybou jestliže soubor neexistuje
0001 - vytvoř soubor, pokud neexistuje
151/kód
Chybí instrukce pro mód otevření souboru, stačí přidat:

mov bx,0x0002 ;otevřít pro čtení a zápis

Třeba těsně za řádku
 mov ax, 6C00h          ;funkce DOSu inteligentni otevreni souboru

Viz následující patch:

--- copy.asm    Wed Aug 13 13:10:46 2003
+++ copyOK.asm  Wed Nov 10 20:34:52 2004
@@ -1,3 +1,4 @@
+;pouze pridana chybejici instrukce "mov bx, 0002h" na 9. radku a tento komentar
 %define DELKA_B  80    ;zadefinujeme symbolickou konstantu
 %define STDOUT 0x0001  ;specialni identifikacni cislo souboru pro
                        ;standartni vystup.
@@ -5,6 +6,7 @@
 org 0x100
 
 mov ax, 6C00h          ;funkce DOSu inteligentni otevreni souboru
+mov bx, 0002h
 mov cx, 0x20           ;atribut nove vznikleho souboru
 mov dx, 0x12           ;pozadovana akce
 mov si, jmeno_druheho_souboru  ;offset na retezec specifikujici jmeno

někde jinde
pravděpodobně tam ještě pár chybiček bude... ale i tak až dosud jich není mnoho :)


Poznamky k dotisku prvniho vydani

Zdar Ruik.

Dostala sa mi do ruk Tvoja kniha, vydana v roku 2005, takze chyby, ktore
uvadzas na web stranke su odstranene. Objavil som vsak este zopar
drobnosti. Preklepy, chybne formulacie a odsadzenia uvediem na koniec.

str. 154
Praca s dlhymi nazvami suborov je pristupna pod 0x71, nie 0x70, cize pre
uvadzany priklad by malo ist o 0x716C.

str. 189
Priklad Hello World! definuje velkost, resp. pocet znakov tohto retazca,
no nepouziva ju. Namiesto toho je tam konstanta 012.


str. 156, 157, 158
Zrejme chyba DTP v slove pamat, resp. pismeno t je prepisane pismenom z.

str. 209
Zasobnikovemu oknu, ktere se sklada s parametru -- cesku gramatiku
neovladam, no povedal by som, ze by sem patrila predlozka z.

str. 181
...kde prejdemte dalsi odkazy i uzitecne informace  -- prejde ->m<- te

str. 193
kdyz se otevreni nezdarilo, jinak v registru  -- trosku matuci komentar

str. 195
; kdyz chyba, pak se skoncime -- "se" je navyse

str. 196
; z prvniho souboru  -- odsadenie

str. 197
Nevyhodu je nemoznost vytvorit odkaz...  -- Nevyhodou

eraser
Zdar, mam asik druhe vydanie tvojej knihy
bo vela veci je tam uz opravenych, ale predsa
som nasiel bug v poznamke:

str.63, posledny riadok v priklade:

mov dword [i],0 ;naplnime register ECX nulou


Poznamka je skopirovana z prechadzajuceho prikladu. :-)
Ved sa zapisuje na adresu navestia 'i'.
Inak je kniha super, hlavne pre zaciatocnikov.

bye

Marian Nagy (nairam) 
EOF
blinking cursor