Osnovi programiranja i programski jezici

Osnovi programiranja i programski jezici Osnovi programiranja i programski jezici

carstvolokvanja.com
from carstvolokvanja.com More from this publisher
06.04.2015 Views

o Ako postoji greška, sa editorom otklonimo je i ponovimo prethodnu tačku. o Pošto smo dobili prog01.obj ukucamo link i ENTER, i odgovorimo na pitanja, ukucamo prog01.obj i ENTER, a na ostala tri pitanja odgovorimo sa ENTER-om. o Ako link program ne javlja grešku, uspešno je preveden program u izvršni kod sa imenom prog01.exe. o Ukucamo prog01.exe, opet ćemo dobiti u DOS-u PROMPT. 2. Zadatak: Na monitor (ekran) u 7. red i 13. kolonu treba ispisati slovo X. Analiza programa: Kod IBM PC personalnih računara postoji video memorija od adrese 0B800h, ova memorija se nalazi u operativnoj memoriji (ES - ekstra segment). Kod ovog primera nama treba tekstualni režim te memorije, gde možemo upisati ASCII karaktere. IBM PC ima hardver i softver za periodično ispisivanje sadržaja video memorije na monitor. Na slici 19. je prikazana organizacija monitora, odnosno video memorije. Vidi se, da za jednu poziciju u video memoriji dva bajta koristi sistem: • prvi bajt je kod karaktera (ASCII kod), • a drugi bajt služi za određivanje boja karaktera (u Tabeli 14 su dati kodovi boja). Slika 19. Organizacija slike monitora i video memorije Jednostavno možemo izračunati poziciju u video memoriji gde treba upisati kod karaktera i boju, ako znamo u koju poziciju ekrana želimo nešto upisati: adresa = 80 * 2 * red + 2 * kolona (1.3.) gde su: 84

• adresa – adresa u operativnoj memoriji, • red - mesto na ekranu, koji red (od 0 do 24 – ukupno 25) i • kolona – mesto na ekranu, koja kolona (od 0 do 79 – ukupno 80). Ako želimo ispisati karakter u 7. red i 13-u kolonu, onda je adresa 1146d = 047ah, odnosno 0b800h:47ah. Tabela 14.: kodovi boje bit značenje bit značenje 0. plava boja karaktera 4. plava boja pozadine 1. zelena boja karaktera 5. zelena boja pozadine 2. crvena boja karaktera 6. crvena boja pozadine 3. intenzitet boja karaktera 7. periodično/kontinualno ispisivanje Listing programa je: ;******************************************************************** Prog02 Segment ;definicija segmenta assume CS:Prog02,DS:Prog02 ;pocetak CS i DS segmenta ;******************************************************************** Start: mov ax,Prog02 ;pocetak na DS mov ds,ax ;******************************************************************** mov ds,ax mov ax,0b800h ;adresa video memorije u es registar mov es,ax ;******************************************************************** mov di,1146 ;ofset adreasa u di ;******************************************************************** mov al,"X" ;slovo X u al registar mov ah,7 ;crna pozadina, beli karakter mov es:[di],ax ;slovo u video memoriju ;******************************************************************** mov ax,4c00h ;nazad u DOS int 21h ;******************************************************************** Prog02 Ends ;kraj segmenta End Start ;********************************************************************* 3. Zadatak: Ispisati jedan karakter na monitor, pozicija karaktera je data sa x i y koordinatama, program treba da izračuna adresu u video memoriji. Listing programa je: ;******************************************************************** Prog03 Segment ;definicija segmenta assume CS:Prog03,DS:Prog03 ;pocetak CS i DS segmenta ;******************************************************************** Start:mov ax,Prog03 ;pocetak na DS mov ds,ax ;******************************************************************** mov ds,ax mov ax,0b800h ;adresa video memorije u es ;registar 85

• adresa – adresa u operativnoj memoriji,<br />

• red - mesto na ekranu, koji red (od 0 do 24 – ukupno 25) i<br />

• kolona – mesto na ekranu, koja kolona (od 0 do 79 – ukupno 80).<br />

Ako želimo ispisati karakter u 7. red i 13-u kolonu, onda je adresa 1146d = 047ah,<br />

odnosno 0b800h:47ah.<br />

Tabela 14.: kodovi boje<br />

bit značenje bit značenje<br />

0. plava boja karaktera 4. plava boja pozadine<br />

1. zelena boja karaktera 5. zelena boja pozadine<br />

2. crvena boja karaktera 6. crvena boja pozadine<br />

3. intenzitet boja karaktera 7. periodično/kontinualno ispisivanje<br />

Listing programa je:<br />

;********************************************************************<br />

Prog02 Segment ;definicija segmenta<br />

assume CS:Prog02,DS:Prog02 ;pocetak CS i DS segmenta<br />

;********************************************************************<br />

Start: mov ax,Prog02 ;pocetak na DS<br />

mov ds,ax<br />

;********************************************************************<br />

mov ds,ax<br />

mov ax,0b800h ;adresa video memorije u es<br />

registar<br />

mov es,ax<br />

;********************************************************************<br />

mov di,1146 ;ofset adreasa u di<br />

;********************************************************************<br />

mov al,"X" ;slovo X u al registar<br />

mov ah,7 ;crna pozadina, beli karakter<br />

mov es:[di],ax ;slovo u video memoriju<br />

;********************************************************************<br />

mov ax,4c00h ;nazad u DOS<br />

int 21h<br />

;********************************************************************<br />

Prog02 Ends ;kraj segmenta<br />

End Start<br />

;*********************************************************************<br />

3. Zadatak: Ispisati jedan karakter na monitor, pozicija karaktera je data sa x i y<br />

koordinatama, program treba da izračuna adresu u video memoriji.<br />

Listing programa je:<br />

;********************************************************************<br />

Prog03 Segment ;definicija segmenta<br />

assume CS:Prog03,DS:Prog03 ;pocetak CS i DS segmenta<br />

;********************************************************************<br />

Start:mov ax,Prog03 ;pocetak na DS<br />

mov ds,ax<br />

;********************************************************************<br />

mov ds,ax<br />

mov ax,0b800h ;adresa video memorije u es<br />

;registar<br />

85

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!