06.04.2015 Views

Osnovi programiranja i programski jezici

Osnovi programiranja i programski jezici

Osnovi programiranja i programski jezici

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

mov es,ax<br />

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

mov al,byte ptr [Y] ;y<br />

mov ah,0<br />

mov bl,160 ;0. red 80 * 2 bajta<br />

mul bl ;ax = al * bl<br />

mov di,ax ;upisati u di<br />

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

mov al,byte ptr [X] ;x<br />

mov ah,0<br />

mov bl,2 ;x * 2<br />

mul bl<br />

add di,ax ;pozicija karaktera u memoriji<br />

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

mov al,byte ptr [KARAKT] ;ASCII kod karaktera<br />

mov ah,byte ptr [BOJA] ;kod boje<br />

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

mov es:[di],ax ;upisivanje karaktera<br />

;u memoriju<br />

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

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

int 21h<br />

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

X: db 40<br />

Y: db 12<br />

KARAKT:db "X"<br />

BOJA: db 7<br />

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

Prog03 Ends ;kraj segmenta<br />

End Start<br />

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

Analiza programa:<br />

Za upisivanje podataka (broja) u memoriju služi db (define byte) direktiva<br />

(instrukcija asemblera). Na početak reda dolazai labela, simboličko ime broja, zatim<br />

direktiva db i kao parametar vrednost. Čitanje iz te memorije je jednostavno, samo<br />

treba se pozivati na promenljivu i označiti tip broja (na primer byte). U programu<br />

prog03 na primer x pozicija je opisana sa X: db 40 redom.<br />

Sa instrukcijom mul vršimo množenje dva operanda, na primer al sa bl, a pošto su ovi<br />

operandi osmobitni, rezultat je šesnaestobitni, biće upisan u registar ax. Množenje<br />

registara ax sa bx daje tridesetodvobitni rezultat, koji će biti upisan u dx i ax registar.<br />

4. Zadatak: Program treba da štampa tekst iz memorije. Dužina teksta je<br />

proizvoljna, kraj teksta je označena sa ASCII karakterom, koji ne može da<br />

bude ni slovo ni broj, na primer 0.<br />

Listing programa je:<br />

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

Prog04Segment<br />

;definicija segmenta<br />

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

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

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

mov ds,ax<br />

86

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

Saved successfully!

Ooh no, something went wrong!