Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
RA�UNARSKA ELEKTRONIKA � VE�BE 1
Aleksandra Leki¢
Elektrotehni£ki fakultet, Univerzitet u Beogradu
2015/2016
ETF Beograd RE VE�BE 1 2015/2016 1 / 48
Uvod
Asembler
Pripada grupi niºih programskih jezika.
Sastoji se od grupe mnemonika (instrukcija) koje treba dasimboli£ki predstave ma²inski kod.
Svaka ma²inska instrukcija ima simboli£ku predstavu.Asembler se kao alat sastoji od
editora
kompajlera
linkera
Prilikom prevo�enja se uglavnom prevodi jedna asemblerskainstrukcija u jednu ma²insku re£.
ETF Beograd RE VE�BE 1 2015/2016 2 / 48
Uvod
Debugger
Program koji sluºi za testiranje i debagovanje drugih programa.
ETF Beograd RE VE�BE 1 2015/2016 3 / 48
x86
Pripada grupi CISC ra£unara (Complex Instruction Set Computer).Svaka instrukcija obavlja niz low - level operacija:
O£itavanje podataka iz memorije
Aritmeti£ke operacije
Upis u memoriju
inc DWORD PTR[EBX]
Von Neumann-ova arhitektura
CPU
(Central
Processing Unit)
MEMORY (1MB)
PROGRAM
DATA
DATA
16 bit
ETF Beograd RE VE�BE 1 2015/2016 4 / 48
x86 CPU
ProcesorKoristi segmente za kontrolu podataka i koda.
Noviji 8086-bazirani procesori imaju ve¢i set instrukcija i ve¢umemoriju, ali imaju istu segmentnu arhitekturu.
Noviji 8086-bazirani procesori su kompatibilni sa svojimprethodnicima.
ETF Beograd RE VE�BE 1 2015/2016 5 / 48
x86 CPU
Modovi rada
Process je instanca programa koji se izvr²ava.
Operativni sistem za svaki proces rezervi²e memoriju, CPU i drugehardverske resurse.
ETF Beograd RE VE�BE 1 2015/2016 6 / 48
x86 CPU
Multitasking � Scheduler
# P1
P1S1
P1S2
...
P1Sj
P1Sh
# P2
P2S1
P2S2
...
P2Sj
P2Sh
# Pn
PnS1
PnS2
...
PnSj
PnSh
...
ti P1Sj ↔ CPU, MEMORY
ti+1 P2Sk ↔ CPU, MEMORY
ti+2 P3Sl ↔ CPU, MEMORY
ETF Beograd RE VE�BE 1 2015/2016 7 / 48
x86 CPU
Modovi rada procesora
Real mode - jedan proces se pokre¢e. Adresa u realnom modu uvekodgovara realnoj adresi u memoriji.
Protected mode - vi²e od jednog procesa moºe biti aktivno.Operativni sistem ²titi memoriju procesa kako joj drugi proces nebi pristupio. Realna adresa u memoriji ne odgovara adresigenerisanoj u protected modu, ve¢ je procesor alocira i odre�ujedinami£ki.
# PROCESS 1
# PROCESS 1
# PROCESS 2
# PROCESS 3
REAL MODE
MEMORY
PROTECTED
MODE MEMORY
ETF Beograd RE VE�BE 1 2015/2016 8 / 48
x86 Segmentirana arhitektura
Segmentirana arhitektura
Svaka adresa se predstavlja kao segment i ofset.
Dizajnirana je da omogu¢i da 16-bitni procesor adresira ve¢imemorijski prostor od 64 kB.
Ova arhitektura je zna£ajno izmenjena kod procesora 80386 kojiomogu¢ava 32-bitni ofset kako bi se pristupilo memoriji do 4 GB.
Za²tita segmentaTokom multitasking-a vi²e programa moºe da radi istovremeno.
Podaci i kod mogu biti bilo gde u memoriji. perativni sistem moºe£ak i da premesti podatke na novu memorijsku lokaciju tokomizvr²avanja programa.
ETF Beograd RE VE�BE 1 2015/2016 9 / 48
x86 Segmentirana arhitektura
Za²tita segmenta
Procesor u realnom modu nema mehanizam detekcijenedozvoljenog pristupa memoriji.
Protected mode procesori u segmentnom registru ne sadrºe realnuadresu, ve¢ sadrºe selector koji pokazuje na strukturu koja se zovesegment descriptor.
ETF Beograd RE VE�BE 1 2015/2016 10 / 48
x86 Segmentirana arhitektura
Za²tita segmenta
Segmentni registar
SEGMENTNI REGISTAR SEGMENT DESRIPTOR
SEGMENT ADRESS
SEGMENT LENGTH
PERMISSIONS
ACCESS
SYSTEM LEVEL
STRUCTURE
ETF Beograd RE VE�BE 1 2015/2016 11 / 48
x86 Segmentirana arhitektura
Adresiranje segmenta
Adresa je predstavljena iz dva dela segment:offset.
segment je 16-bitni, a offset je 16-bitni u 16-bitnom modu, a32-bitni u 32-bitnom modu.
Zajedno formiraju 20-bitnu �zi£ku adresu za pristup 1 MB umemoriji.
ETF Beograd RE VE�BE 1 2015/2016 12 / 48
x86 Segmentirana arhitektura
Segmentna aritmetika
Procesor
�iftuje segment za £etiri mesta ulevo i dobija se 20-bitna adresa.
Sabira 20-bitnu adresu sa offset-om.
Dobijena adresa je �zi£ka (realna) adresa u memoriji.
Svaka adresa moºe da se zada na 4096 na£ina segment:o�set.
ETF Beograd RE VE�BE 1 2015/2016 13 / 48
x86 Registri
Registri
16-bitni procesori 32-bitni procesori
ETF Beograd RE VE�BE 1 2015/2016 14 / 48
x86 Registri
Segmentni registri
Registar i segment NamenaCS (Code Segment) Sadrºi procesorske instrukcije i neposredne
operande.DS (Data Segment) Sadrºi podatke alocirane programom.SS (Stack Segment) Programski stek za upotrebu uz instrukcije
PUSH, POP, CALL i RET.ES (Extra Segment) Koristi se u instrukcijama za stringove.FS, GS Ekstra segmenti za 80386/486.
ETF Beograd RE VE�BE 1 2015/2016 15 / 48
x86 Registri
Registri op²te namene � General Purpose Registers
AX, DX, CX, BX, BP, DI i SI su 16-bitni registri.
8086-bazirani procesori ne mogu da izvr²e operacije sa dvememorijske lokacije. Zato se podatak mora prvo prebaciti u nekiregistar op²te namene, a zatim na drugu memorijsku lokaciju.
Pristup vi²ih osam bita FX (F = A, B, C, D) registra je FH, a niºihFL.
Gornjih 16-bita EFX registra ne moºe da se pristupi direktno, ve¢:Primer: SHR EAX, 16
ETF Beograd RE VE�BE 1 2015/2016 16 / 48
x86 Registri
Registri specijalne namene
SP - Stack Pointer
Pokazuje na trenutnu lokaciju na steku. Raste ka niºim adresama.
Dodavanje na stek PUSH smanjuje adresu SP za 2, a skidanje sasteka POP pove¢ava adresu SP za dva. Kod 80386/486 je ±4.Instrukcije CALL i INT £uvaju adresu povratka na steku i redukujuSP.
PUSH EAX ESP = ESP - sizeof(EAX), MEMORY[ESP] = EAX
POP EAX EAX = MEMORY[ESP], ESP = ESP + sizeof(EAX)
IP - Instruction Pointer
Sadrºi adresu slede¢e instrukcije koja se izvr²ava.
ETF Beograd RE VE�BE 1 2015/2016 17 / 48
x86 Registri
FLAG registar
ETF Beograd RE VE�BE 1 2015/2016 18 / 48
Assembling - Kompajliranje
Kreiranje .EXE programa
Kompajliranje izvornog koda u objektni fajl.
Povezivanje objektnog fajla sa ostalim modulima i bibliotekama uizvr²ni program.
Ubacivanje programa u memoriju.
Pokretanje programa.
ETF Beograd RE VE�BE 1 2015/2016 19 / 48
Assembling - Kompajliranje
Kreiranje .EXE programa
ML.EXE prvo prevodi izvorni kod uobjektni fajl.
LINK.EXE povezuje fajlove ibiblioteke u izvr²ni program, vr²irealokaciju: zamenu referencikonkretnim vrednostima.
# FILE1.ASM
VAR1 (defined)
# FILE1.ASM
VAR1 (defined)
# FILE2.ASM
VAR1 (extern)
(declared)
MOV EAX, VAR1
# FILEn.ASM
VAR1 (extern)
(declared)
MOV ECX, VAR1...
ML.EXE
# FILE1.OBJ
VAR1
# FILE2.OBJ
VAR1 (pointer)
MOV EAX,
placeholder
# FILEn.OBJ
VAR1 (pointer)
MOV ECX,
placeholder...
LINK.EXE
# PROJECT.EXE
ETF Beograd RE VE�BE 1 2015/2016 20 / 48
Assembling - Kompajliranje
Kreiranje .EXE programa
Loading
Kreira se Program Segment Pre�x (PSP).
Alocira se memorija programa.
U£itava se program.
Ra£unaju se ta£ne apsolutne adrese prema realokacionoj tabeli.
Postavljaju se vrednosti segmentnih registara SS, CS, DS i ES.
Program se pokre¢e po£ev²i od prve instrukcije.
ETF Beograd RE VE�BE 1 2015/2016 21 / 48
Assembling - Kompajliranje Logi£ki segmenti
Logi£ki segmenti
To su delovi programa sekcije koji grupi²u podatke ili naredbe(kod).
Oni se grupi²u u �zi£kim delovima memorije.
Direktive za grupisanje segmenata su: .MODEL, .CODE, .CONST,.DATA, .DATA?, .FARDATA, .FARDATA?, .STACK, .STARTUP i .EXIT.
ETF Beograd RE VE�BE 1 2015/2016 22 / 48
Assembling - Kompajliranje Logi£ki segmenti
Izgled programa
.386 ozna£ava da se koristi 80386 setinstukcija.
.MODEL ozna£ava memorijski modelprograma. Za Windows operativni sistemje to samo FLAT.
STDCALL ozna£ava konvencijuprosle�ivanja parametara. Moºe biti C iliPASCAL konvencija.
ETF Beograd RE VE�BE 1 2015/2016 23 / 48
Assembling - Kompajliranje Logi£ki segmenti
Izgled programa
C konvencija - prosle�uju se parametri funkcije s desna na levo ibalansira se pokaziva£ na stek.
PASCAL konvencija - parametri funkcije se prosle�uju sa leva nadesno, a sama funkcija treba da balansira pokaziva£ na stek.
STDCALL je hibrid C i PASCAL konvencije. Windows 32 koristiisklju£ivo STDCALL.
Direktive .DATA, .DATA?, .CONST, .CODE predstavljaju sekcije.
.DATA sadrºi inicijalizovane podatke programa.
.DATA? sadrºi neinicijalizovane (deklarisane) podatke programa.
.CONST sadrºi konstante programa.
.CODE je sekcija za kod, postoji samo jedna.
Ne moraju da se koriste sve tri sekcije .DATA, .DATA?, .CONST.
ETF Beograd RE VE�BE 1 2015/2016 24 / 48
Operandi
Operandi
Nalaze se u nizu odmah nakon instrukcije.
Instrukcije RET, CLD, STD nemaju operande.
Mogu biti registarski, neposredni, direktni memorijski i indirektnimemorijski.
ETF Beograd RE VE�BE 1 2015/2016 25 / 48
Operandi Registarski operandi
Registarski operandi
Koriste se 8- i 16-bitni registri, a kod 80386/486 i 32-bitni.
Podaci se £uvaju u registrima.
Primermov bx, 10 konstanta 10 se upisuje u bx
add ax, bx ax = ax + bx
jmp di jump na adresu u di
ETF Beograd RE VE�BE 1 2015/2016 26 / 48
Operandi Neposredni operandi
Neposredni operandi
Predstavljaju konstante ili konstantne izraze.
Primer: mov cx, 20
add var, 1Fh
OFFSET/SEG operator
OFFSET/SEG vra¢a ofset vrednost/vrednost segmenta adrese.
Primer: mov bx, OFFSET var
ETF Beograd RE VE�BE 1 2015/2016 27 / 48
Operandi Direktni memorijski operandi
Direktni memorijski operandi
Ozna£ava podatak na memorijskoj lokaciji. Podatak moºe da semenja, ali adresa ne.
Za direktno memorijsko adresiranje se koristi DS registar.
Primer.DATA? neinicijalizovani podatakvar BYTE ? rezervi²e 1 B neinicijalizovan.CODE
...
mov var, al kopira se AL u memory[var]
ETF Beograd RE VE�BE 1 2015/2016 28 / 48
Operandi Direktni memorijski operandi
Direktni memorijski operandi
Uz direktno memorijsko adresiranje mogu da se koriste operatori +,-, [], . i :.
Primermov ax, array[2]
mov ax, array+2
ETF Beograd RE VE�BE 1 2015/2016 29 / 48
Operandi Indirektni memorijski operandi
Indirektni memorijski operandi
Omogu¢avaju dinami£an pristup memoriji.
Na memorijskoj lokaciji se nalazi adresa u memoriji na kojoj senalazi podatak.
Mogu biti 16-bitni i 32-bitni.
Primerimov ax, WORD PTR[bx] prebacuje u AX 16 b sa adrese DS:BXmov ax, [bx+si] prebacuje u AX podatak sa adrese BX + SI
mov ax, table[si] table sadrºi baznu adresu niza, a SI pomeraj
ETF Beograd RE VE�BE 1 2015/2016 30 / 48
Operandi Indirektni memorijski operandi
Indirektni memorijski operandi
Veli£ina operanda moºe da se zada na tri na£ina:Odre�ena deklaracionom veli£inom operanda.mov table[bx], 0 2 B na osnovu veli£ine tabele
Odre�ena PTR operatorom.mov BYTE PTR table, 0 1 B dato sa BYTE
Implicitno odre�ena veli£inom drugog operanda.mov ax, [bx] 2 B na osnovu AX
ETF Beograd RE VE�BE 1 2015/2016 31 / 48
Operandi Indirektni memorijski operandi
Varijante sa 16 b registrima:mov ax, table[bx][di]
mov ax, table[di][bx]
mov ax, table[bx+di]
mov ax, [table+bx+di]
mov ax, [bx][di] + table
mov ax, [bx+di]
mov ax, [bx+si]
mov ax, [bp+di]
mov ax, [bp+si]
Ne moºe!mov ax, [bx+bp] dva bazna registra
mov ax, [di+si] dva indeksna registra
ETF Beograd RE VE�BE 1 2015/2016 32 / 48
Operandi Indirektni memorijski operandi
Varijante sa 16 b registrima:
ETF Beograd RE VE�BE 1 2015/2016 33 / 48
Operandi Indirektni memorijski operandi
Skaliranje indeksa
Za nizove veli£ine 1 B je faktor skaliranja 1, 2 za re£i, a 4 zaDOUBLE WORD.
Operator za skaliranje je *.
Primerimov eax, darray[edx*4] prebacuju se 4 Bmov ax, wtbl[ecx+2][edx*2] prebacuje se 2 B niza podataka od 2 B
ETF Beograd RE VE�BE 1 2015/2016 34 / 48
Deklarisanje integer varijabli
Direktive
ETF Beograd RE VE�BE 1 2015/2016 35 / 48
Deklarisanje integer varijabli
Operator SIZEOF daje broj elemenata u bajtovima.
Operator TYPE daje veli£inu jednog elementa u bajtovima.
PrimerUSER_ARRAY BYTE 100 DUP(0)
TYPE(USER_ARRAY) = 1
SIZEOF(USER_ARRAY) = 100
SBYTE, SWORD i SDWORD ozna£avaju ozna£ene podatke.
ETF Beograd RE VE�BE 1 2015/2016 36 / 48
Deklarisanje integer varijabli
Tip podataka
Direktiva TYPEDEF se koristi za de�nisanje tipa podataka.
Primerichar TYPEDEF SBYTE
long TYPEDEF DWORD
float TYPEDEF REAL4
double TYPEDEF REAL8
ETF Beograd RE VE�BE 1 2015/2016 37 / 48
Deklarisanje integer varijabli
Inicijalizacija podatakainteger BYTE 16
Operator PTRForsira tretiranje operanda speci�ciranog tipa.
num DWORD 0
mov ax, WORD PTR num[0]
ETF Beograd RE VE�BE 1 2015/2016 38 / 48
Instrukcije Kopiranje podataka
MOV
Kopira podatak sa jedne lokacije na drugu.
Primerimov ax, 7 upisuje 7 u registar AXmov mem, ax upisuje se podatak iz registra AX na memorijsku lokacijumem
ETF Beograd RE VE�BE 1 2015/2016 39 / 48
Instrukcije Kopiranje podataka
Zamena vrednosti
XCHG instrukcija zamenjuje vrednosti na lokacijama operanada.
Primerxchg ax, bx zamenjuje vrednosti u registrima AX i BX
ETF Beograd RE VE�BE 1 2015/2016 40 / 48
Instrukcije Kopiranje podataka
Produºavanje podatka
Prevodi integer u podatak ve¢e veli£ine zadrºavaju¢i znak.
VarijanteCBW - convert byte to word
CWD - convert word to doubleword
CWDE - convert word to doubleword extended
CDQ - convert doubleword to quadword
ETF Beograd RE VE�BE 1 2015/2016 41 / 48
Instrukcije Instrukcije sabiranje/oduzimanje
Sabiranje i oduzimanje
Istrukcije su ADD, INC (inkrementiranje), SUB i DEC(dekrementiranje).
Mogu da rade na 8, 16 i 32 bita.
Ako postoje dva operanda, samo jedan moºe biti adresa umemoriji.
Operandi moraju da budu iste veli£ine. U suprotnom moºe da sekoristi PRT operator.
Operatori INC i DEC tretiraju podatke kao neozna£ene brojeve i neosveºavaju carry i borrow bite.
Primermov al, 26
inc al
ETF Beograd RE VE�BE 1 2015/2016 42 / 48
Instrukcije Instrukcije sabiranje/oduzimanje
Sabiranje i oduzimanje u vi²e registara
Mogu da se sabiraju i oduzimaju podaci ve¢i od veli£ine registrainstrukcijama ADC (add with carry) i SBB (subtract with borrow).
Ove instrukcije osveºavaju carry flag.
Za least signi�cant part podatka se koriste instrukcije ADD/SUB, aza most signi�cant part instrukcije ADC/SBB.
Primer
ETF Beograd RE VE�BE 1 2015/2016 43 / 48
Instrukcije Instrukcije mnoºenja i deljenja
Mnoºenje
Instrukcija MUL mnoºi neozna£ene brojeve, a IMUL ozna£ene.
Mnoºenjem dva 8-bitna broja se dobija 16-bitni rezultat i upisuje uregistar AX.
Mnoºenjem dva 16-bitna broja se dobija 32-bitni rezultat i upisujeu registar DX:AX.
Operacije mnoºenja su date u formatu OPERATION
source1,source2, immediate, pri £emu se ukoliko postojisource2, rezultat mnoºenja source2 * immediate upisuje usource1. Ukoliko ne, rezultat mnoºenja je source1 = source1 *
immediate.
ETF Beograd RE VE�BE 1 2015/2016 44 / 48
Instrukcije Instrukcije mnoºenja i deljenja
Deljenje
DIV deli neozna£ene brojeve, a IDIV deli ozna£ene brojeve.
ETF Beograd RE VE�BE 1 2015/2016 45 / 48
Instrukcije Instrukcije na nivou bita
Logi£ke instrukcije
To su instrukcije AND, OR, XOR i NOT.
Primer
ETF Beograd RE VE�BE 1 2015/2016 46 / 48
Instrukcije Instrukcije na nivou bita
�iftovanje i rotiranje bita
ETF Beograd RE VE�BE 1 2015/2016 47 / 48
KRAJ!
ETF Beograd RE VE�BE 1 2015/2016 48 / 48