Osnovi programiranja i programski jezici
Osnovi programiranja i programski jezici Osnovi programiranja i programski jezici
STRUKTURA *.exe I *.com IZVRŠNIH PROGRAMA Na Slici 18.a. je struktura *.exe, a na Slici 1.b. je struktura *.com programa. Dužina *.exe programa nije limitirana, dok *.com program ne može da bude duži od jednog segmenta (a to je 64 kB). *.EXE *.COM Kod Segment Kod Segment assume assume CS:Kod,DS:Kod CS:Kod,DS:Podatak,SS:Stack Start: . Org 100h . Start . . . Kod Ends . Podatak Segment Kod Ends . End Start . . Podatak Ends Stack Segment . . . Stack Ends End Start a) b) Slika 18.: Struktura *.exe i *.com programa U listingu za početak segmenta se koristi izraz Segment, a ispred toga labela, koja je ime programa, a za označavanje kraja segmenta se koristi Ends izraz. Naredba assume upisuje segmentne adrese u segmentne registre. Nije obavezno korišćenje SS registara. Kod *.com programa početak kod segmenta i početak segmenta za podatke može da bude isto. Org je naredba asemblera kod *.com programa i služi za određivanje početka programa. Ne smemo koristiti adrese od 0000h do 00FFh, jer tamo su sistemske promenljive. BIOS (Basic Input Output System) softver kod IBM PC personalnih računara sadrži niz potprograma, koji su za razmenu podataka između procesora i memorije, odnosno procesora i perifernih jefinica. Korisno je ugrađivanje tih potprograma u naše programe. U programima uspešno možemo koristiti int 21 potprogram, koji obezbeđuje korektan izlazak iz korisničkog programa. Parametar u ovom slučaju je 4C00h, a treba ga upisati u ax registar. Ovaj izlazak obezbeđuje povratak u glavni program bez poruke. 1. Zadatak: Napisati korisnički program, koji korektno vraća upravljanje operativnom sistemu i ne šalje nikakvu poruku korisniku Listing programa je: 82
;******************************************************************** Prog01 Segment ;definicija segmenta assume CS:Prog01,DS:Prog01 ;pocetak CS I DS segmenta ;******************************************************************** Start: mov ax,Prog01 ;pocetak na DS mov ds,ax ;******************************************************************** mov ax,4c00h ;nazad u DOS int 21h ;******************************************************************** Prog01 Ends ;kraj segmenta End Start ;********************************************************************* Analiza programa: • Asembler ne prevodi tekst od ‘;’ znaka do kraja reda, ovde može programer da piše komentar, (komentar je koristan za dokumentaciju). • U ovom programu tri puta imamo mov instrukciju, mada formalno su iste, i imaju isti zadatak, prenos podataka, realizuju različite prenose. U Tabeli 13. vidimo nekoliko primera za instrukciju mov. Tabela 13.: Neke mov instrukcije mov ax,1839 u akumulator ax će biti upisan broj 1839 mov ax,3Bh u akumulator ax će biti upisan broj 3Bh mov al,45 u akumulator al će biti upisan broj 45 mov ax,bx u akumulator ax će biti upisan sadržaj bx registara mov al,bh u akumulator al će biti upisan sadržaj bh registara mov ax,labela u akumulator ax će biti upisana vrednost labele Veoma veliki broj kombinacija postoji kod korišćenja instrukcija, ove kombinacije treba naučiti, da bismo mogli efikasno iskoristiti mogućnosti asemblera. Neke od tih su: • posle mnemoničkog koda barem jedan parametar je registar, • u prvi operand (odredište) ulazi sadržaj iz drugog operanda (izvor), • sadržaj drugog operanda nakon operacije ostaje nepromenjen, • ako je podatak u memoriji, onda između [] znaka je adresa lokacije, odakle podatak će biti upisan u prvi operand, • ako je operand određen sa labelom, onda obavezno treba odrediti tip (byte, word), • dimenzije operanada moraju biti iste (kod instrukcije mov ax,0B3h u ax će biti upisan 00B3h). Realizacija programa: o Iz Windows-a prelazimo u DOS operativni sistem, kreiramo poddirektorijum (ako već ne postoji) i ovde u Norton Commander-u sa SHIFT F4 funkcijom otvorimo praznu datoteku (fajl) sa imenom prog01.asm. o Ukucamo gornji program. o Aktiviramo asembler, parametar asemblera je ime fajla: tasm prog01.asm. 83
- Page 32 and 33: oliver% (primer prompta) Kod Bourn
- Page 34 and 35: Slika 5.: Izgled jednog UNIX datote
- Page 36 and 37: Slika 6.: Primeri za apsolutni i re
- Page 38 and 39: oliver% Dodamo li naredbi ls opciju
- Page 40 and 41: • g-grupa, • o-ostali i • a-s
- Page 42 and 43: namenjena spajanju datoteka. Takođ
- Page 44 and 45: Kao što smo mogli preusmeravati st
- Page 46 and 47: n :[%]s/str1/str2/[g] ponovi pretra
- Page 48 and 49: TRAŽENJE DATOTEKE Ponekad kada ima
- Page 50 and 51: Također ovde imamo ime trenutno ak
- Page 52 and 53: [Connection established^G^G^G] Ta i
- Page 54 and 55: Izaberimo opciju C COMPOSE MESSAGE
- Page 56 and 57: Pogledajmo ukratko koje naredbe raz
- Page 58 and 59: inary bye cd close get udaljena-dat
- Page 60 and 61: POJAM SOFTVERA UVOD Realizacijom, n
- Page 62 and 63: ASEMBLER Zbog nepreglednosti progra
- Page 64 and 65: INSTRUKCIJE RAČUNARA S opšteg sta
- Page 66 and 67: Instrukcije možemo još svrstati u
- Page 68 and 69: Slika 9. : Funkcionalna blokšema m
- Page 70 and 71: izuzev onih koji se koriste registr
- Page 72 and 73: TEHNIKA PISANJA PROGRAMA NA ASEMBLE
- Page 74 and 75: ZAPIS UNOŠENJE PROGRAMA U MNEMONI
- Page 76 and 77: JEDNOSTAVNI i8086 ASEMBLERSKI PROGR
- Page 78 and 79: Na slici 164C je adresa kod segment
- Page 80 and 81: izlistamo program, potražimo red,
- Page 84 and 85: o Ako postoji greška, sa editorom
- Page 86 and 87: mov es,ax ;************************
- Page 88 and 89: istrukcije su veome slične instruk
- Page 90 and 91: ali se ne može zasebno izvršiti.
- Page 92 and 93: mov es:[di-12],ax ;****************
- Page 94 and 95: ;**********************************
- Page 96 and 97: CHOICE:db "PRVI",0 db "DRUGI",0 db
- Page 98 and 99: Krajem drugog svetskog rata, engles
- Page 100 and 101: "osećaj", a kod čoveka još i sam
- Page 102 and 103: simuliranja ponašanja čoveka-eksp
- Page 104 and 105: verovatne procene, prognostički si
- Page 106 and 107: znanja s podacima. Ugrađene strate
- Page 108 and 109: koje daje čovek-ekspert. Predstavl
- Page 110 and 111: Neke tehnike sticanja znanja za ES,
- Page 112 and 113: obeleženog usmerenog grafa. Svako
- Page 114 and 115: Tabela 15.: Tabela odlučivanja 1 2
- Page 116 and 117: Za razliku od proceduralnih jezika,
- Page 118 and 119: Ne_pije(petar). Vozac_autobusa(dusa
- Page 120 and 121: SINTAKSA I SEMANTIKA PROLOGA Abeced
- Page 122 and 123: * */ /* GLAVNI GRADOVI */ /* */ /**
- Page 124 and 125: Lista (a, lista (c, prazno)). LISTA
- Page 126 and 127: izračunavanja. Korišćenjem ovog
- Page 128: LITERATURA • Berković, Ivana: El
;********************************************************************<br />
Prog01 Segment ;definicija segmenta<br />
assume CS:Prog01,DS:Prog01 ;pocetak CS I DS segmenta<br />
;********************************************************************<br />
Start: mov ax,Prog01 ;pocetak na DS<br />
mov ds,ax<br />
;********************************************************************<br />
mov ax,4c00h ;nazad u DOS<br />
int 21h<br />
;********************************************************************<br />
Prog01 Ends ;kraj segmenta<br />
End Start<br />
;*********************************************************************<br />
Analiza programa:<br />
• Asembler ne prevodi tekst od ‘;’ znaka do kraja reda, ovde može programer da<br />
piše komentar, (komentar je koristan za dokumentaciju).<br />
• U ovom programu tri puta imamo mov instrukciju, mada formalno su iste, i<br />
imaju isti zadatak, prenos podataka, realizuju različite prenose. U Tabeli 13.<br />
vidimo nekoliko primera za instrukciju mov.<br />
Tabela 13.: Neke mov instrukcije<br />
mov ax,1839 u akumulator ax će biti upisan broj 1839<br />
mov ax,3Bh u akumulator ax će biti upisan broj 3Bh<br />
mov al,45 u akumulator al će biti upisan broj 45<br />
mov ax,bx u akumulator ax će biti upisan sadržaj bx registara<br />
mov al,bh u akumulator al će biti upisan sadržaj bh registara<br />
mov ax,labela u akumulator ax će biti upisana vrednost labele<br />
Veoma veliki broj kombinacija postoji kod korišćenja instrukcija, ove kombinacije<br />
treba naučiti, da bismo mogli efikasno iskoristiti mogućnosti asemblera. Neke od tih<br />
su:<br />
• posle mnemoničkog koda barem jedan parametar je registar,<br />
• u prvi operand (odredište) ulazi sadržaj iz drugog operanda (izvor),<br />
• sadržaj drugog operanda nakon operacije ostaje nepromenjen,<br />
• ako je podatak u memoriji, onda između [] znaka je adresa lokacije, odakle<br />
podatak će biti upisan u prvi operand,<br />
• ako je operand određen sa labelom, onda obavezno treba odrediti tip (byte,<br />
word),<br />
• dimenzije operanada moraju biti iste (kod instrukcije mov ax,0B3h u ax će<br />
biti upisan 00B3h).<br />
Realizacija programa:<br />
o Iz Windows-a prelazimo u DOS operativni sistem, kreiramo<br />
poddirektorijum (ako već ne postoji) i ovde u Norton Commander-u<br />
sa SHIFT F4 funkcijom otvorimo praznu datoteku (fajl) sa imenom<br />
prog01.asm.<br />
o Ukucamo gornji program.<br />
o Aktiviramo asembler, parametar asemblera je ime fajla: tasm<br />
prog01.asm.<br />
83