Asebmblersko programiranje i procesor i8086

Содержание

Слайд 2

Kratak opis karakteristika procesora

Dizajn trajao od 1976. do 1978. godine, kada je

Kratak opis karakteristika procesora Dizajn trajao od 1976. do 1978. godine, kada
lansiran
16 bitova
frekvencija od 5 do 10 MHz
29000 tranzistora
Širina memorijske magistrale 20 bitova

Слайд 3

Arhitektura procesora i8086

BIU - bus interface unit EU - execution unit Arhitektura procesora podeljena

Arhitektura procesora i8086 BIU - bus interface unit EU - execution unit
je na dva dela. Uloga BIU dela jeste da ubrza rad sistema procesom pajplajninga (dok jedinica izvršavanja izvršava instrukciju, BIU donosi sledeću instrukciju.

Слайд 4

Arhitektura procesora i8086 - registri opšte namene

AX - accumulator register (AH

Arhitektura procesora i8086 - registri opšte namene AX - accumulator register (AH
/ AL).
BX - base address register (BH / BL).
CX - count register (CH / CL).
DX - data register (DH / DL).

Слайд 5

Arhitektura procesora i8086 - ofset registri

SI - source index register.

Arhitektura procesora i8086 - ofset registri SI - source index register. DI
DI - destination index register.
BP - base pointer.
SP - stack pointer.

Слайд 6

Arhitektura procesora i8086 - segmentni registri

CS - pokazuje na segment koji

Arhitektura procesora i8086 - segmentni registri CS - pokazuje na segment koji
sadrži kod programa (code segment)
DS - pokazuje na segment gde su promenljive definisane (data segment)
ES - segment opšte namene, za proizvoljno korišćenje, (extra segment)
SS - pokazuje na stek segment (stack segment)

Слайд 7

Arhitektura i8086

Instruction System Byte Queue (Prefetch Queue) jeste bafer za nadolazeće

Arhitektura i8086 Instruction System Byte Queue (Prefetch Queue) jeste bafer za nadolazeće
instrukcije koje BIU donosi. Ona je veličine 6 bajtova (ne 6 instrukcija, instrukcije mogu biti različiti veličine)
Procesor čeka da se isprazne 2 bajta iz ovog reda pre nego što donese nove (procesor je 16-obitni)
Red se invalidira ukoliko dođe do skoka

Слайд 8

Segmenti u memoriji i njihovi registri

Segmenti u memoriji i njihovi registri

Слайд 9

Segmenti u memoriji i njihovi registri

Efektivna edresa se dobija po formuli EA

Segmenti u memoriji i njihovi registri Efektivna edresa se dobija po formuli
= Segmentni registar * 10h + ofset registar Za segment podataka (data segment), možemo koristiti registre BX, SI i DI. Za stek segment, možemo koristiti registre BP i SP. Napomena, BL i BH registri ne mogu se koristiti za formiranje fizičke adrese. IP registar je uvek updaren sa CS segmentom.

Слайд 10

Segmenti u memoriji i njihovi registri

Generalno, u asembleru možemo da pristupamo različitim

Segmenti u memoriji i njihovi registri Generalno, u asembleru možemo da pristupamo
lokacijama u memoriji. Realnu fizičku adresu kojoj pristupamo računa sam procesor, a mi dajemo ofset
[BX + SI + 5h] --> DS * 10h + BX + SI + 5h
[DI + 16h] --> DS * 10h + DI + 16h
....

Слайд 11

Segmenti u memoriji i njihovi registri

Registri koji se nalaze u istoj

Segmenti u memoriji i njihovi registri Registri koji se nalaze u istoj
koloni ne mogu se koristiti da bi se formirao ofset. Možemo birati registar iz svake kolone, a možemo i da poreskočimo kolonu.

Слайд 12

Varijable

Kompajler emu8086 podržava 2 tipa promenljivih, osmobitne i šesnaestobitne promenljive. ime DB

Varijable Kompajler emu8086 podržava 2 tipa promenljivih, osmobitne i šesnaestobitne promenljive. ime
vrednost ;za osmobitnu ime DW vrednost ;za šesnaestobitnu
DB - define byte
DW - define word

Слайд 13

Varijable

Promenljivoj se ne mora dati ime. U tom slučaju, ona će dobiti

Varijable Promenljivoj se ne mora dati ime. U tom slučaju, ona će
adresu, i to je jedini način na koji može da joj se pristupi. Vrednost promeljive može biti zapisana u proizvoljnom sistemu, ili može biti ? ukoliko nije inicijalizovana.

Слайд 14

Nizovi

Nizovi se mogu posmatrati kao ulančane varijable. Asembler emu8086 dozvoljava prilikom definicije

Nizovi Nizovi se mogu posmatrati kao ulančane varijable. Asembler emu8086 dozvoljava prilikom
varijabli da, pored brojeva, koristimo i slova (koja se treturaju kao njihove ASCII vrednosti)
a DB 48h, 65h, 6Ch, 6Ch, 6Fh, 00h b DB ‘Hello’, 0
Gore su definisana dva ista niza (asemblerautomatski pretrava string u navodnicima u skup bajtova)

Слайд 15

Nizovi

Elementima niza može se pristupati na standardan način, preko uglastih zagrada
a[5]
Pored toga,

Nizovi Elementima niza može se pristupati na standardan način, preko uglastih zagrada
moguće je koristiti i registre BX, SI, DI i BP da pristupimo elementima
MOV SI, 5 a[SI]

Слайд 16

Nizovi

Ukoliko je potrebno da napravimo kolekciju elemenata koji se ponavljaju, koristimo operator

Nizovi Ukoliko je potrebno da napravimo kolekciju elemenata koji se ponavljaju, koristimo
DUP
ime DB broj_ponavljanja DUP(šta_se_ponavlja) Primer c DB 5 DUP(1) daje isti rezultat kao c DB 1, 1, 1,1,1 Primer d DB 2 DUP(1,2) daje isti rezultat kao d DB 1,2,1,2

Слайд 17

Dobijanje adrese varijable

Kako bismo dobili adresu neke promenljive, koristimo instrukcije LEA (load

Dobijanje adrese varijable Kako bismo dobili adresu neke promenljive, koristimo instrukcije LEA
effective address) ili OFFSET.
Primer: LEA AX, varijabla

Слайд 18

Prekidi

Prekide možemo posmatrati kao određene procedure koje se izvršavaju u nekom trenutku.

Prekidi Prekide možemo posmatrati kao određene procedure koje se izvršavaju u nekom
Možemo govoriti o hardverskim i o softverskim prekidima.
Hardverski prekidi nastaju nada neki hardverski uređaj pošalje signal procesoru da obradi neki rezultat
Softverski prekidi definisani su u kodu, i njihova uloga je da pozovu specijalne procedure.

Слайд 19

Prekidi

Softverski prekidi se u emu8086 emulatoru pozivaju preko komande INT
INT vrednost ;vrednost

Prekidi Softverski prekidi se u emu8086 emulatoru pozivaju preko komande INT INT
je neki jednobajtni broj
Na ovaj način moguće je definisati, na prvi pogled, 256 prekida. Međutim, svaki prekid može imati podfunkcije. Ove podfunkcije biraju se podešavanjem registra AH.

Слайд 20

Instrukcija MOV

Kopira vrednosti iz drugog parametra u prvi

Instrukcija MOV Kopira vrednosti iz drugog parametra u prvi

Слайд 21

Instrukcija MOV

Ukoliko želimo da koristimo MOV instrukciju da upisujemo nešto u segmentne

Instrukcija MOV Ukoliko želimo da koristimo MOV instrukciju da upisujemo nešto u
registre, možemo, ali su pravila nešto drugačija.

Слайд 22

Aritmetičke i logičke funkcije

Većina aritmetičkih operacija, pored svog očiglednog posla, takođe postavljau

Aritmetičke i logičke funkcije Većina aritmetičkih operacija, pored svog očiglednog posla, takođe
određene vrednosti u procesorski status registar (flag registar)

Слайд 23

Aritmetičke i logičke funkcije

Carry Flag (CF) - postavljen na 1 kada postoji

Aritmetičke i logičke funkcije Carry Flag (CF) - postavljen na 1 kada
neoznačeno prekoračenje
Zero Flag (ZF) - postaljen na 1 kada je rezultat operacije 0
Sign Flag (SF) -postavlje na 1 kada je rezultat negativan
Overflow Flag (OF) - postavljen na 1 kada postoji označeno prekoračenje

Слайд 24

Aritmetičke i logičke funkcije

Parity Flag (PF) - postavljen na 1 kada postoji

Aritmetičke i logičke funkcije Parity Flag (PF) - postavljen na 1 kada
paran broj bitova jedinice u rezultatu (postamtraju se samo najnižih 8 bitova)
Auxiliary Flag (AF) - postavljen na 1 ukoliko postoji neoznačeno prekoračenje na najnižoj nibli
Interrupt enable Flag (IF) - postavljen na 1 ukoliko CPU reaguje na prekide od eksternih uređaja
Direction Flag (DF) - za procesuiranje lanaca podataka, 0 ili jedan definišu smer u kojem se procesuiranje izvršava

Слайд 25

Prva grupa funkcija

Prva grupa funkcija

Слайд 26

Druga grupa funkcija

Jedino operacije MUL i IMUL postavljaju flegove, i to CF

Druga grupa funkcija Jedino operacije MUL i IMUL postavljaju flegove, i to
i OF. Ovi flegovi su postavljeni na 1 ukoliko
je rezultat veći od veličine registra, odosno 0 u suprotnom slučaju. Sve operacije podrazumevaju da se
množenik nalazi u registru AX (AL ukoliko je brojilac jednobajtan)

Слайд 27

Treća grupa funkcija

ne utiče ni na koji fleg

Treća grupa funkcija ne utiče ni na koji fleg

Слайд 28

Kontrola toka

Flegovi imaju ulogu u kontroli toka. U zavisnosti od vrednosti flegova,

Kontrola toka Flegovi imaju ulogu u kontroli toka. U zavisnosti od vrednosti
funkcije za skakanje mogu da se izvrše ili ne. Osnovna instrukcija za skok je JMP instrukcija. Kada procesor naiđe na nju, on odmah prelazi na adresu na koju JMP pokazuje.

Слайд 29

Kontrola toka

Kontrola toka

Слайд 30

Procedure

Procedure su deo koda koji se može pozvati u okviru programa. Procedure

Procedure Procedure su deo koda koji se može pozvati u okviru programa.
čine da se program može lakše čitati i da je bolje struktuiran. Sintaksa za definisanje neke procedue je: ime PROC ;kod ;kod RET ime ENDP

Слайд 31

Procedure

Kako bi se procedura pozvala, koristi se ključna reč CALL.

Procedure Kako bi se procedura pozvala, koristi se ključna reč CALL.

Слайд 32

Stek

Uloga steka jeste u čuvanju privremenih podataka, kada treba da im se

Stek Uloga steka jeste u čuvanju privremenih podataka, kada treba da im
pristupa po principu LIFO. Implicntno, stek se koristi kada se pozivaju instrukcije CALL i INT, kako bi se na njega postavila adresa povratka.
Povratak na tu adresu izvršava se instrukcijama RET (u slučaju CALL instrukcije), ondnosno IRET (u slučaju softverskog prekida)

Слайд 33

Stek

Steku takođe možemo da pristupimo i manuelno, koristeći instrukcije PUSH i POP.

Stek Steku takođe možemo da pristupimo i manuelno, koristeći instrukcije PUSH i POP.
Имя файла: Asebmblersko-programiranje-i-procesor-i8086.pptx
Количество просмотров: 24
Количество скачиваний: 0