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

ali se ne može zasebno izvršiti. U programu prog05 na primer ispisivanje teksta, ili ispisivanje broja su potprogrami. Potprogram se uvek poziva od nekog drugog programa, to može da bude glavni program (Slika 20. a).) ili neki drugi potprogram (Slika 20. b).), ili potprogram može da zove samog sebe, ovo je Rekurzivnost: Postupak, kod koga svaki korak u radu koristi rezultate prethodnih koraka. U programiranju ovaj pojam označava obično one potprograme, koji mogu da pozivaju sami sebe. rekurzija. U asembleru pozivanje potprograma se vrši sa naredbom call i navođenjem imena potprograma. Predaja i preuzimanje parametara je preko registara, odnosno promenljive koje su u memoriji. Kod viših programskih jezika predaja parametara je sa simboličkim imenima. Slika 20.: a). Glavni program zove potprogram i b). Glavni program zove 1. potprogram, a 1. potprogram zove 2. potprogram Posle izvršavanja potprograma upravljanje potprogramom preuzima pozivni program, u asembleru se to postiže sa ret naredbom na kraju potprograma. Potprogrami se najčešće koriste za programiranje nekog programskog dela koji se više puta ponavlja. Rastavljanje programa u veći broj potprograma daje pregledniji program. Registar cx je projektovan tako, da sa loop instrukcijom jednostavno možemo koristiti kao brojača. Pre početka petlje unosimo sa mov operacijom početnu vrednost brojača, koju vrednost na kraju petlje loop instrukcija dekrementira (cx = cx – 1) i istovremeno i testira, da li je vrednost 0, ako nije onda izvršava skok na naznačenu poziciju, inače (cx = 0) napušta petlju i od sledeće tačke nastavi rad. Instrukcija loop je iz grupe instrukcije “uslovan skok”. 90

Ako je parametar 0 kod int 10h potprograma onda sistem prelazi u 80*25 tekstualni rad. Potprogram int 16h je koristan program iz BIOS-a, ako želimo da program čeka sve do pritiska tastera. Kad je pritisnut bilo koji taster, onda potprogram sačuva ASCII kod tastera u ah registru. U ovom primeru nismo isčitali tu vrednost. 6. Zadatak: Treba ispisati vreme iz računara memorije na ekran. Program je: ;******************************************************************** Prog06 Segment ;definicija segmenta assume CS:Prog06,DS:Prog06 ;pocetak CS i DS segmenta ;******************************************************************** Start:mov ax,Prog06 ;pocetak na DS mov ds,ax ;******************************************************************** mov ax,0b800h ;adresa video memorije u es registar mov es,ax ;******************************************************************** cikl: mov ax,0200h ;citanje vremena iz sistemskog casovnika int 1ah ;******************************************************************** call vrisp ;ispisivanje vremena ;******************************************************************** mov ax,0100h ;taster? int 16h ;******************************************************************** jz cikl ;ne, nazad ;******************************************************************** mov ax,0 ;da, iscitati vrednost int 16h ;******************************************************************** mov ax,4c00h ;nazad u DOS int 21h ;******************************************************************** ;#################################################################### vrisp Proc ;potrogram za ispisivanje vremena ;******************************************************************** mov di,0 ;monitor, levo gore mov ah,15 ;crna pozadina, beli karakter ;******************************************************************** mov bx,cx ;bx

Ako je parametar 0 kod int 10h potprograma onda sistem prelazi u 80*25 tekstualni<br />

rad.<br />

Potprogram int 16h je koristan program iz BIOS-a, ako želimo da program čeka sve<br />

do pritiska tastera. Kad je pritisnut bilo koji taster, onda potprogram sačuva ASCII<br />

kod tastera u ah registru. U ovom primeru nismo isčitali tu vrednost.<br />

6. Zadatak: Treba ispisati vreme iz računara memorije na ekran.<br />

Program je:<br />

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

Prog06 Segment ;definicija segmenta<br />

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

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

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

mov ds,ax<br />

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

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

mov es,ax<br />

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

cikl: mov ax,0200h ;citanje vremena iz sistemskog casovnika<br />

int 1ah<br />

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

call vrisp ;ispisivanje vremena<br />

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

mov ax,0100h ;taster?<br />

int 16h<br />

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

jz cikl ;ne, nazad<br />

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

mov ax,0 ;da, iscitati vrednost<br />

int 16h<br />

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

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

int 21h<br />

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

;####################################################################<br />

vrisp Proc<br />

;potrogram za ispisivanje vremena<br />

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

mov di,0 ;monitor, levo gore<br />

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

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

mov bx,cx ;bx

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

Saved successfully!

Ooh no, something went wrong!