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

istrukcije su veome slične instrukcijama oduzimanja (sub), sa razlikom da operandi ostaju nepromenjeni. Operacije transfera podataka (mov) ne određuju vrednosti zastavica, naime kod transfera podataka ne koristi se aritmetičko-logička jedinica, nasuprot tome cmp radi preko ALU jedinice. U programu za testiranje rezultata upoređivanja konkretno se koristi Z (zero) bit. Najvažniji indikatori su: • indikator nule (Zero flag) je specijalizovani indikator koji služi za ispitivanje vrednosti smeštene u akumulator, u slučaju da je, posle neke operacije, vrednost svih bitova u akumulatoru jednaka nuli, indikator nule će imati logičku vrednost jedan (Z = 1), a ako bar jedan bit u akumulatoru ima vrednost jedinicu ( (A) ≠ 0), indikator nule će imati logičku vrednost nulu (Z = 0), • indikator prenosa (Carry flag) je specijalizovani indikator, koji registruje prekoračenje nastalo u akumulatoru, u slučaju da rezultat neke aritmetičke operacije nije moguće smestiti u akumulator (zbog prekoračenja, odnosno negativnog prekoračenja), indikator prenosa će dobiti logićku vrednost jedan (C = 1). 5. Zadatak: Program treba da realizije logičku I funkciju između dva osmobitna broja, zatim treba da ispiše brojeve i rezultat. Program mora da briše ekran. Za realizaciju ponovljenih delova programa treba koristiti potprogram (ispisivanje teksta, brojeva). Listing programa je: ;******************************************************************** Prog05 Segment ;definicija segmenta assume CS:Prog05,DS:Prog05 ;pocetak CS i DS segmenta ;******************************************************************** Start:mov ax,Prog05 ;pocetak na DS mov ds,ax ;******************************************************************** mov ax,0b800h ;adresa video memorije u es registar mov es,ax ;******************************************************************** mov ax,3 ;brisanje ekrana int 10h ;******************************************************************** mov di,0*160 ;pozicija 1. teksta (0,0) mov si,offset TEKST1 ;pocetna adresa TEKST1 call tekstisp ;ispisivanje teksta ;******************************************************************** mov bl,byte ptr [BR1] ;prvi broj call brojisp ;ispisivanje broja ;******************************************************************** mov di,1*160 ; pozicija 2. teksta (1,0) mov si,offset TEKST2 ; pocetna adresa TEKST2 call tekstisp ;ispisivanje teksta ;******************************************************************** mov bl,byte ptr [BR2] ;drugi broj call brojisp ;ispisivanje broja ;******************************************************************** mov di,2*160 ;pozicija teksta ‘REZULTAT’ 88

mov si,offset TEKST3 ;pocetna adresa TEKST3 call tekstisp ;ispisivanje teksta ;******************************************************************** mov bl,byte ptr [BR1] ;prvi broj and bl,byte ptr [BR2] ;BR1 AND BR2 call brojisp ;ispisivanje broja ;******************************************************************** mov ax,0 ;cekanje na taster int 16h ;******************************************************************** kraj: mov ax,4c00h ;nazad u DOS int 21h ;******************************************************************** ;#################################################################### tekstisp Proc ;rutina za ispisivanje teksta mov cx,16 ;tekst ima ukupno 16 karaktera mov ah,15 ;crna pozadina, beli karakter ;******************************************************************** cikl1:mov al,[si] ;karakter u al mov es:[di],ax ;karakter u video memoriju add di,2 ;sledeca pozicija inc si ;sledeci karakter loop cikl1 ;cx=cx-1 i skok ako je cx0 ret ;povratak u glavni program szovir Endp ;kraj potprograma ;#################################################################### ;******************************************************************** ;#################################################################### brojisp Proc ;potprogram za ispisivanje ;broja add di,6 ;+ 3 pozicije mov cx,8 ;broj je osmobitni mov ah,15 ;crna pozadina, beli karakter ;******************************************************************** cikl2:mov al,48 ;ASCII kod nule (0) shl bl,1 ;CY

istrukcije su veome slične instrukcijama oduzimanja (sub), sa razlikom da operandi<br />

ostaju nepromenjeni. Operacije transfera podataka (mov) ne određuju vrednosti<br />

zastavica, naime kod transfera podataka ne koristi se aritmetičko-logička jedinica,<br />

nasuprot tome cmp radi preko ALU jedinice.<br />

U programu za testiranje rezultata upoređivanja konkretno se koristi Z (zero) bit.<br />

Najvažniji indikatori su:<br />

• indikator nule (Zero flag) je specijalizovani indikator koji služi za<br />

ispitivanje vrednosti smeštene u akumulator, u slučaju da je, posle neke<br />

operacije, vrednost svih bitova u akumulatoru jednaka nuli, indikator<br />

nule će imati logičku vrednost jedan (Z = 1), a ako bar jedan bit u<br />

akumulatoru ima vrednost jedinicu ( (A) ≠ 0), indikator nule će imati<br />

logičku vrednost nulu (Z = 0),<br />

• indikator prenosa (Carry flag) je specijalizovani indikator, koji<br />

registruje prekoračenje nastalo u akumulatoru, u slučaju da rezultat<br />

neke aritmetičke operacije nije moguće smestiti u akumulator (zbog<br />

prekoračenja, odnosno negativnog prekoračenja), indikator prenosa će<br />

dobiti logićku vrednost jedan (C = 1).<br />

5. Zadatak: Program treba da realizije logičku I funkciju između dva osmobitna broja,<br />

zatim treba da ispiše brojeve i rezultat. Program mora da briše ekran. Za realizaciju<br />

ponovljenih delova programa treba koristiti potprogram (ispisivanje teksta, brojeva).<br />

Listing programa je:<br />

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

Prog05 Segment ;definicija segmenta<br />

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

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

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

mov ds,ax<br />

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

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

registar<br />

mov es,ax<br />

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

mov ax,3 ;brisanje ekrana<br />

int 10h<br />

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

mov di,0*160 ;pozicija 1. teksta (0,0)<br />

mov si,offset TEKST1 ;pocetna adresa TEKST1<br />

call tekstisp ;ispisivanje teksta<br />

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

mov bl,byte ptr [BR1] ;prvi broj<br />

call brojisp ;ispisivanje broja<br />

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

mov di,1*160 ; pozicija 2. teksta (1,0)<br />

mov si,offset TEKST2 ; pocetna adresa TEKST2<br />

call tekstisp ;ispisivanje teksta<br />

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

mov bl,byte ptr [BR2] ;drugi broj<br />

call brojisp ;ispisivanje broja<br />

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

mov di,2*160 ;pozicija teksta ‘REZULTAT’<br />

88

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

Saved successfully!

Ooh no, something went wrong!