arhitektura ra Čunara

35
1 ARHITEKTURA ARHITEKTURA RA RA ČUNARA ČUNARA

Upload: fionn

Post on 11-Jan-2016

62 views

Category:

Documents


1 download

DESCRIPTION

ARHITEKTURA RA ČUNARA. 16-bitni registri opšte namene. AX – akumulator za aritmetečke i logičke operacije. Neke instrukcije imaju kraće kodiranje u slučaju njegovog korišćenja, a takođe mogu biti i brže. BX – base registar za čuvanje adresa. CX – brojač - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ARHITEKTURA RA ČUNARA

11

ARHITEKTURA ARHITEKTURA RARAČUNARAČUNARA

Page 2: ARHITEKTURA RA ČUNARA

22

16-bitni registri16-bitni registri opšte namene opšte namene

AX – AX – akumulator za aritmetečke i logičke akumulator za aritmetečke i logičke operacije. Neke instrukcije imaju kraće operacije. Neke instrukcije imaju kraće kodiranje u slučaju njegovog korišćenja, a kodiranje u slučaju njegovog korišćenja, a takođe mogu biti i brže.takođe mogu biti i brže.

BX – base registar za čuvanje adresa.BX – base registar za čuvanje adresa. CX – brojačCX – brojač DX – registar za aritmetičke i I/O operacijeDX – registar za aritmetičke i I/O operacije Postoje AH, AL, BH, BL, CH, CL, DH, DL.Postoje AH, AL, BH, BL, CH, CL, DH, DL.

Page 3: ARHITEKTURA RA ČUNARA

33

16-bitni registri opšte namene16-bitni registri opšte namene

SI – source index za indeksiranje SI – source index za indeksiranje nizova i pristup memoriji.nizova i pristup memoriji.

DI – destination index za indeksiranje DI – destination index za indeksiranje nizova i pristup memoriji.nizova i pristup memoriji.

BP – base pointer sličan BX registruBP – base pointer sličan BX registru,, aliali za pristup argumentima i lokalnim za pristup argumentima i lokalnim promenljivim funkcija.promenljivim funkcija.

SP – stack pointer pokazivač na stek.SP – stack pointer pokazivač na stek.

Page 4: ARHITEKTURA RA ČUNARA

44

Segmentni registriSegmentni registri Segment je količina memorije koja se može Segment je količina memorije koja se može

adresirati pomoću jednog registra.adresirati pomoću jednog registra. CS – code segment sadrži adresu segmenta koda.CS – code segment sadrži adresu segmenta koda. DS – data segmet sadrži adresu segmenta DS – data segmet sadrži adresu segmenta

podataka.podataka. ES – extra segment dodatni segmentni registar.ES – extra segment dodatni segmentni registar. SS – stack segment sadrži adresu segmenta koji SS – stack segment sadrži adresu segmenta koji

sadrži stek.sadrži stek. U ove segmente je moguće smeštati i podatke, ali U ove segmente je moguće smeštati i podatke, ali

to ne treba raditi!to ne treba raditi!

Page 5: ARHITEKTURA RA ČUNARA

55

Specijalni registriSpecijalni registri IP – instruction pointer sadrži adresu instrukcije IP – instruction pointer sadrži adresu instrukcije

koja se trenutno izvršava.koja se trenutno izvršava. FLAGS registar se sastoji od sledećih bitovaFLAGS registar se sastoji od sledećih bitova

• XXXXODITSZXAXPXCXXXXODITSZXAXPXC• X – ne koristi seX – ne koristi se• O – OverflowO – Overflow• D – DirectionD – Direction• I – InterruptI – Interrupt• T – TraceT – Trace• S – SignS – Sign• Z – ZeroZ – Zero• A – Auxilary carryA – Auxilary carry• P – ParityP – Parity• C - CarryC - Carry

Page 6: ARHITEKTURA RA ČUNARA

66

Page 7: ARHITEKTURA RA ČUNARA

77

SegmentacijaSegmentacija Pošto je 8086 imao 16-bitne registre, bilo je Pošto je 8086 imao 16-bitne registre, bilo je

moguće adresirati najviše 65536 bajtova. Ovo je moguće adresirati najviše 65536 bajtova. Ovo je veličina jednog segmenta. Da bi se ovo veličina jednog segmenta. Da bi se ovo prevazišlo, koriste se tzv. segmentni registri koji prevazišlo, koriste se tzv. segmentni registri koji određuju koji se segment koristi.određuju koji se segment koristi.

Adrese se navode u obliku Adrese se navode u obliku segment:offsetsegment:offset. Npr. . Npr. 1000:1F00. Ove adrese se nazivaju logičkim.1000:1F00. Ove adrese se nazivaju logičkim.

Fizička adresa se, u slučaju da računar radi u Fizička adresa se, u slučaju da računar radi u realreal modu, dobija tako što se modu, dobija tako što se segmentsegment množi sa 16 i množi sa 16 i dodaje se dodaje se offsetoffset. Npr. 10000h+1F00h=11F00h. Npr. 10000h+1F00h=11F00h

Očigledno, različite logičke adrese mogu Očigledno, različite logičke adrese mogu odgovarati istoj fizičkoj adresi.odgovarati istoj fizičkoj adresi.

U slučaju U slučaju protectedprotected moda postupak je moda postupak je komplikovaniji.komplikovaniji.

Page 8: ARHITEKTURA RA ČUNARA

88

Page 9: ARHITEKTURA RA ČUNARA

99

Načini adresiranjaNačini adresiranja memorije za memorije za 80868086

Validni načini adresiranja memorije se mogu Validni načini adresiranja memorije se mogu dobiti tako što se iz svake kolone donje tabele dobiti tako što se iz svake kolone donje tabele izabere najviše jedan element, pri čemu je izabere najviše jedan element, pri čemu je ukupno potrebno izabrati bar jedan i formira se ukupno potrebno izabrati bar jedan i formira se izraz izraz [E1+E2+E3]. Npr.[E1+E2+E3]. Npr.

mov ax, [50h+bp+si]mov ax, [50h+bp+si]

DISPDISP[BX][BX] [SI][SI]

[BP][BP] [DI][DI]

Page 10: ARHITEKTURA RA ČUNARA

1010

NaNačini adresiranja za 8086čini adresiranja za 8086

Prvi registar koji se pojavljuje u Prvi registar koji se pojavljuje u uglastim zagradama određuje uglastim zagradama određuje podrazumevani segmentni registar. podrazumevani segmentni registar. On se može navesti i eksplicitno.On se može navesti i eksplicitno.

Za BX, SI i DI podrazumeva se DS, a Za BX, SI i DI podrazumeva se DS, a za BP - SS.za BP - SS.

Registri se adresiraju navođenjem Registri se adresiraju navođenjem imena.imena.

Page 11: ARHITEKTURA RA ČUNARA

1111

Page 12: ARHITEKTURA RA ČUNARA

1212

Page 13: ARHITEKTURA RA ČUNARA

1313

Adresiranje memorije za 80386Adresiranje memorije za 80386

Adresa se formira kao Adresa se formira kao [base+index*scale+disp][base+index*scale+disp]

Npr. mov ax, [bx+si*2+30]Npr. mov ax, [bx+si*2+30]

Page 14: ARHITEKTURA RA ČUNARA

1414

NETWIDE NETWIDE ASSEMBLERASSEMBLER

Page 15: ARHITEKTURA RA ČUNARA

1515

NNASMASM

Pokretanje:Pokretanje:• nasm –f <format> <filename> [-o <output>]nasm –f <format> <filename> [-o <output>]• <format> predstavlja jedan od formata u <format> predstavlja jedan od formata u

kojima se generikojima se generiše izlaz. Najvažniji su bin i obj.še izlaz. Najvažniji su bin i obj.• <filename> predstavlja ulazni fajl sa kodom.<filename> predstavlja ulazni fajl sa kodom.• <output> predstavlja naziv izlaznog fajla.<output> predstavlja naziv izlaznog fajla.

Naravno, postoje i druge opcijeNaravno, postoje i druge opcije..

Page 16: ARHITEKTURA RA ČUNARA

1616

NASMNASM Izgled komandne linijeIzgled komandne linije

• oznaka:oznaka: instrukcija operandiinstrukcija operandi ; ; komentarkomentar Bilo koji deo može nedostajati.Bilo koji deo može nedostajati. Prisustvo operanada je uslovljeno prirodom instrukcije.Prisustvo operanada je uslovljeno prirodom instrukcije. Ako na kraju linije stoji Ako na kraju linije stoji \, slede\, sledeća linija se smatra nastavkom ća linija se smatra nastavkom

tekuće.tekuće. Oznake ne moraju imati : na kraju.Oznake ne moraju imati : na kraju. Validna imena oznaka su sastavljena od slova, brojeva, _, $, Validna imena oznaka su sastavljena od slova, brojeva, _, $,

#, #, @, ~, . i ?. I@, ~, . i ?. Identifikatoridentifikatori mogu mogu popočinjati slovom, ., _ ili ?. činjati slovom, ., _ ili ?. Ako ime počinje znakom $, niska se ne tumači kao Ako ime počinje znakom $, niska se ne tumači kao

rezervisana reč, već kao identifikator. Npr. $ax.rezervisana reč, već kao identifikator. Npr. $ax. Ako se znak $ javi sam, označava trenutnu poziciju prilikom Ako se znak $ javi sam, označava trenutnu poziciju prilikom

asembliranja.asembliranja.

Page 17: ARHITEKTURA RA ČUNARA

1717

NASMNASM

U slučaju bin formata postoje tri U slučaju bin formata postoje tri istaknute sekcije:istaknute sekcije:• .text za kod,.text za kod,• .data za inicijalizovane podatke i.data za inicijalizovane podatke i• .bss za neinicijalizovane podatke..bss za neinicijalizovane podatke.

Page 18: ARHITEKTURA RA ČUNARA

1818

Pseudo instrukcije – d*Pseudo instrukcije – d* DB, DW, DD, DQ, DTDB, DW, DD, DQ, DT

• db 0x55 – bajt 0x55db 0x55 – bajt 0x55• db 0x55, 0x56, 0x57 – tri uzastopna bajtadb 0x55, 0x56, 0x57 – tri uzastopna bajta• db db ‘a’, 0x55 – bajtovi 0x61 i 0x55‘a’, 0x55 – bajtovi 0x61 i 0x55• db ‘hello’, 13, 10, ‘$’db ‘hello’, 13, 10, ‘$’• dw 0x1234 – 0x34, 0x12dw 0x1234 – 0x34, 0x12• dw ‘a’ – 0x61, 0x00dw ‘a’ – 0x61, 0x00• dw ‘ab’ – 0x61, 0x6dw ‘ab’ – 0x61, 0x622• dw ‘abc’ – 0x61, 0x62, 0x63, 0x00dw ‘abc’ – 0x61, 0x62, 0x63, 0x00• dd 0x12345678 – 0x78, 0x56, 0x34, 0x12dd 0x12345678 – 0x78, 0x56, 0x34, 0x12• dd 1.234567e20dd 1.234567e20• dq 1.234567e20dq 1.234567e20• dt 1.234567e20dt 1.234567e20

dq i dt ne prihvataju numeridq i dt ne prihvataju numeričke konstante ili niske za čke konstante ili niske za operandeoperande (?) (?)..

Page 19: ARHITEKTURA RA ČUNARA

1919

Pseudo instrukcije – RES*Pseudo instrukcije – RES*

RESB, RESW, RESD, RESQ i REST RESB, RESW, RESD, RESQ i REST rezervišu memoriju za rezervišu memoriju za neinicijalizovane podatke. neinicijalizovane podatke. Predviđeno je da se koristi u bss Predviđeno je da se koristi u bss sekciji. Npr.sekciji. Npr.• buffer:buffer: resbresb 6464

Page 20: ARHITEKTURA RA ČUNARA

2020

Pseudo instrukcije – EQUPseudo instrukcije – EQU

EQU sluEQU služi da definiše konstantu. Npr.ži da definiše konstantu. Npr.• msglenmsglen equequ 1212

Page 21: ARHITEKTURA RA ČUNARA

2121

Pseudo instrukcije - TIMESPseudo instrukcije - TIMES

Čini da instrukcija bude asemblirana Čini da instrukcija bude asemblirana više puta. Npr.više puta. Npr.• zerobuff: times 64 db 0zerobuff: times 64 db 0• buffer: dbbuffer: db ‘hello, world’‘hello, world’

times 64-($-buffer) db ‘ ’times 64-($-buffer) db ‘ ’• times 100 movsbtimes 100 movsb• times 100 resb 1 ili resb 100times 100 resb 1 ili resb 100

Page 22: ARHITEKTURA RA ČUNARA

2222

PromenljivePromenljive

Promenljive u punom smislu nisu Promenljive u punom smislu nisu podrpodržane. Sve što se pamti uz simbol žane. Sve što se pamti uz simbol prilikom deklaraciji je početna adresa prilikom deklaraciji je početna adresa u memoriji. Dužina se mora u memoriji. Dužina se mora naknadno zadati u instrukciji. Npr.naknadno zadati u instrukciji. Npr.• varvar dwdw 55• mov mov word [var], 2word [var], 2• mov bx, varmov bx, var

Page 23: ARHITEKTURA RA ČUNARA

2323

Pristup memorijiPristup memoriji

Za sva pristupanja memoriji moraju Za sva pristupanja memoriji moraju biti koripšćene uglaste zagrade.biti koripšćene uglaste zagrade.• var var dwdw 55• mov axmov ax,, [var][var]• mov ax, [var+1]mov ax, [var+1]• mov ax, [ds:var+bx]mov ax, [ds:var+bx]• mov ax, [bp+di+8]mov ax, [bp+di+8]• mov ax, [byte bx+6]mov ax, [byte bx+6]

Page 24: ARHITEKTURA RA ČUNARA

2424

NumeriNumeričke konstantečke konstante

mov ax, 100mov ax, 100 ; dekadna; dekadna mov ax, 0a2hmov ax, 0a2h ; hex; hex mov ax, $0a2mov ax, $0a2 ; hex; hex mov ax, 0xa2mov ax, 0xa2 ; hex; hex mov ax, 777qmov ax, 777q ; oktalna; oktalna mov ax, 777omov ax, 777o ; oktalna; oktalna mov ax, 10010011bmov ax, 10010011b ; binarna; binarna

Page 25: ARHITEKTURA RA ČUNARA

2525

Karakterske konstanteKarakterske konstante

Do 4 karaktera ograniDo 4 karaktera ograničena čena jednostrukim ili dvostrukim jednostrukim ili dvostrukim navodnicima. Npr. navodnicima. Npr. ‘abcd’ se prevodi ‘abcd’ se prevodi kao 0x64636261. S obzirom da se kao 0x64636261. S obzirom da se radi o little-endian arhitekturi, radi o little-endian arhitekturi, zapisuje se kao 0x61626364 zapisuje se kao 0x61626364 što je i što je i željeno.željeno.

Page 26: ARHITEKTURA RA ČUNARA

2626

StringoviStringovi

Izgledaju kao karakterske konstante, Izgledaju kao karakterske konstante, samo što su duže. Dozvoljene su samo što su duže. Dozvoljene su samo u nekim pseudo instrukcijama.samo u nekim pseudo instrukcijama.

ddb b ‘‘hellohello’’ ; string; string db ‘h’,’e’,’l’,’l’,’o’ ; karakterskdb ‘h’,’e’,’l’,’l’,’o’ ; karakterska a

konstantakonstanta dd ‘ninechars’dd ‘ninechars’ dd ‘nine’, ‘char’, ‘s’dd ‘nine’, ‘char’, ‘s’ ddb ‘ninechars’,0,0,0b ‘ninechars’,0,0,0

Page 27: ARHITEKTURA RA ČUNARA

2727

Realne konstanteRealne konstante podrzane su realne konstante u pokretnom podrzane su realne konstante u pokretnom

zarezuzarezu mogu se koristiti samo kao operandi mogu se koristiti samo kao operandi

instrukcija dd, dq i dtinstrukcija dd, dq i dt

dd 1.2 dq 1.e10dq 1.e+10dq 1.e−10dt 3.141592653589793238462

Page 28: ARHITEKTURA RA ČUNARA

2828

SEG i WRTSEG i WRT SEG SEG operator vraća adresu podrazumevanog operator vraća adresu podrazumevanog

segmenta za neki simbol. Npr sledeći kod smešta segmenta za neki simbol. Npr sledeći kod smešta pokazivač na promenljivu simbol u ES:BXpokazivač na promenljivu simbol u ES:BX• mov ax, seg simbolmov ax, seg simbol• mov es, axmov es, ax• mov bx, simbolmov bx, simbol

Ukoliko želimo da izračunamo adresu neke Ukoliko želimo da izračunamo adresu neke promenljive u odnosu na neki segment koji nije promenljive u odnosu na neki segment koji nije podrazumevani koristimo WRT operator. Npr.podrazumevani koristimo WRT operator. Npr.• mov ax, adresa_segmentamov ax, adresa_segmenta• mov es, axmov es, ax• mov bx, simbol wrt adresa_segmentamov bx, simbol wrt adresa_segmenta

Page 29: ARHITEKTURA RA ČUNARA

2929

Kritični izraziKritični izrazi Kritični izrazi su izrazi čija vrednost mora Kritični izrazi su izrazi čija vrednost mora

biti poznata u prvom prolazu asembliranja.biti poznata u prvom prolazu asembliranja. Argumenti pseudo instrukcija TIMES, RESArgumenti pseudo instrukcija TIMES, RES**

ii Е ЕQU su kritični izrazi.QU su kritični izrazi. Primer:Primer:

times (label-$)times (label-$) db 0db 0label:label: db db ‘‘teksttekst’’

times (label-$+1) db 0times (label-$+1) db 0label:label: db ‘tekst’db ‘tekst’

Page 30: ARHITEKTURA RA ČUNARA

3030

mov ax,symbol1symbol1 equ symbol2symbol2:

mov eax,[ebx+offset]offset equ 10

Page 31: ARHITEKTURA RA ČUNARA

3131

Lokalne oznakeLokalne oznake Lokalnim se smatraju oznake koje poLokalnim se smatraju oznake koje počinju činju

tačkom. Vezuju se za prvu prethodnu oznaku. tačkom. Vezuju se za prvu prethodnu oznaku. Npr.Npr.llabel1 abel1 ; neki kod; neki kod.lokalna ; neki kod.lokalna ; neki kodlabel2 ; neki kodlabel2 ; neki kod.lokalna ; neki kod.lokalna ; neki kod

Prilikom koriPrilikom korišćenja oznake .lokalna nema šćenja oznake .lokalna nema konflikta imena jer se prva interno vodi kao konflikta imena jer se prva interno vodi kao label1.lokalna, a druga kao label2.lokalna, a label1.lokalna, a druga kao label2.lokalna, a mogu se i tako referencirati. Npr. mogu se i tako referencirati. Npr. • jmp label1.lokalnajmp label1.lokalna

Page 32: ARHITEKTURA RA ČUNARA

3232

DirektiveDirektive BITS određuje da li će se kod izvršavati na 16-bitnom ili 32-BITS određuje da li će se kod izvršavati na 16-bitnom ili 32-

bitnom procesoru. Npr.bitnom procesoru. Npr.• BITS 16BITS 16

SECTION (ili SEGMENT) definiše sekcije. Npr. .text, .data SECTION (ili SEGMENT) definiše sekcije. Npr. .text, .data i .bss.i .bss.

EXTERN deklariše simbole iz drugih fajlova sa kojima EXTERN deklariše simbole iz drugih fajlova sa kojima eventualno vršimo povezivanje.eventualno vršimo povezivanje.

GLOBAL čini simbole vidljivim izvan fajla prilikom GLOBAL čini simbole vidljivim izvan fajla prilikom povezivanja.povezivanja.

CPU određuje skup instrukcija koje se koriste. Npr.CPU određuje skup instrukcija koje se koriste. Npr.• CPU 8086CPU 8086• CPU 186CPU 186• CPU PENTIUMCPU PENTIUM• CPU IA64CPU IA64

Page 33: ARHITEKTURA RA ČUNARA

3333

Izlazni formatiIzlazni formati

bin – čist mašinski kod.bin – čist mašinski kod. Podrazumeva se BITS 16Podrazumeva se BITS 16 Koristi se za pisanje kernela, bootloadera, Koristi se za pisanje kernela, bootloadera,

malih programa za DOS, drajvera...malih programa za DOS, drajvera... ORG direktiva određuje adresu na kojoj se ORG direktiva određuje adresu na kojoj se

očekuje da počne izvršavanje programa. očekuje da počne izvršavanje programa. Npr.Npr.• ORG 0x100ORG 0x100 ; o; očekivano kod .com programačekivano kod .com programa

Page 34: ARHITEKTURA RA ČUNARA

3434

Izlazni formatiIzlazni formati

obj – Microsoft-ov objektni formatobj – Microsoft-ov objektni format Izlazni kod se mora povezati pomoću Izlazni kod se mora povezati pomoću

linkera.linkera. Nema privilegovanih sekcija.Nema privilegovanih sekcija. Program uvek počinje od Program uvek počinje od

oznake ..startoznake ..start

Page 35: ARHITEKTURA RA ČUNARA

3535

PrekidiPrekidi

Prekidi se dele na:Prekidi se dele na:• HardverskeHardverske• SoftverskeSoftverske• IzuzetkeIzuzetke

BIOS obezbeđuje veći broj softverskih BIOS obezbeđuje veći broj softverskih prekida koji nam omogućavaju da prekida koji nam omogućavaju da radimo sa ulazom i izlazom.radimo sa ulazom i izlazom.