trebao si da posaljes kompletan tasm kod sa direktivama!!
------------------------------------------------
;smesta 13h u al, sto znaci da je ah=0
;ovo znaci zeli se funkcija 0 interapta 10h a to je
;postavljanje ekrana u zeljeni video mod koji se specifiran
;u al registru a to je 13h a to je VGA/MCGA 320x200 pixela u 256 boja
mov al, 13h
;poziv prekida
int 10h
;instrukcija koja ucitava 32 bitni pointer iz memorije u
;registar bp i es registre, e sad u bp ide offset a u es segment adrese, znaci 32bit = 4 BYTES = 2 WORDS
;prvi word ide u bp a drugi u es
;ovde je memorija vrednost koja se nalazi u bx
;registru a to je u ovom slucaju 0, posto bx nije menjan on je pri startovanju programa 0
;a sta je na 0 toj adresi? kod .com fajlova koji pocinju sa offseta 100h prvih
;100h bajtova je rezervisano za PSP tj program segment prefix
;na offsetu 0 nalazi se "int 20h" i to su prva 2 bajta, to u hex vrednostima predstavlja "CD 20" i ta
;vrednost ce biti ubacena u bp, ali to je ono sto nas neinteresuje, ono sto nam zaista treba je da u ES segmentu
;bude adresa video buffera a ona je A000h, a to se dobija iz sledeca 2 bajta na offsetu 0004h tj posle "int
;20h", a to su "A000" bas ono sto nam treba, dakle posle ove instrukcije bp ce sadrzati "20 CD" a es "A000", bp
;je potpuno nevazan i moga se koristiti i neki drugi registar koji nam netreba a ono sto je vazno je da es sadrzi
;segment video buffera koji nam treba kod sledece instrukcije
;(inace vrlo zanimljivo koriscenje instrukcije, prakticno covek je morao da gleda hex vrednosti na 0000
;ofsetu i da posle poveze to sa ovom instrukcijom ..ovo sve je mogao da odradi prostim
;mov ax,a000h
;xchg ax,es
;ali nije i time je dobio mozda 2 bajta manji program)
les bp, [bx]
;ova instrukcija je skracenica za store string byte i ona ce da smesti vrednost iz ax registra tj u ovom slucaju
;posto se radi o bajtu onda samo donji deo registra ax tj al u memoriju na koju pokazuje es:di
;es je segment video buffera
di je offset
;znaci ako je di = 0 onda ce stosb da smesti vrednost iz al na gornju levu tacku naseg monitora, ovde vrednost u
;al predstavlja boju posto sam rekao na pocetku da se radi o video modu sa 256 boja a al = byte, svi znamo da byte
;moze da predstavlja 256 razlicitih brojeva a to su u ovom slucaju boje
stosb
;sledeca instrukcija ce inkrementirati ax registar ako je CF flag postavljen, cilj ovoga je da poveca vrednost
;broja koji predstavlja boju, kako bi se ta boja sledeca iscrtala u tacki na ekranu pored one prethodne
adc ax, di
;sledeca instrukcija mi nije jasna, ne znam sta je fs
;nikad nisam radio sa tasm ali moguce da fs
;predstavlja neki od segmenata
adc ax, fs[046C]
;ovo je unconditional jmp i skace na 106 offset tj na stsob instrukciju, i time stvara endless loop kako bi se tackice stalno iscrtavale
jmp 0106
------------------------------------------------
dakle u osnovi program predstavlja beskrajnu petlju koja u svakom koraki iscrta po jednu tacku na ekranu na sledecem mestu sa sledecom bojom u spektru, posto su racunari jako brzi to sto mi vidimo na ekranu je jako brzo iscrtavanje tackica u raznim bojama i zato nam izgleda da kazem lepo
-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.