7/26/2019 05_-_programiranje_mikroprocesora (1)
1/36
ARHITEKTURA RAUNARAGlava 5Programiranje Intelovih mikroprocesora
7/26/2019 05_-_programiranje_mikroprocesora (1)
2/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
3/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
4/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
5/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
6/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
7/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
8/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
9/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
10/36
5.1. Netwide Assembler (NASM)
Definisanje promjenljivih
Realni brojevi dvostruka preciznost(double precision)
64 bita
Koristi se
DQ
R1 DQ 1.0 ; definie 1.0
R2 DQ -23.4 ; definie -23.4
F (52)E (11)S
3Fh
F0h
00h
00h
00h00h
00h
00h R1
C0h
37h
66h
66h
66h66h
66h
66h R2
1.0 = 1.000000000000000000000000...0000 * 20
011111111110 0000000000 ... 0000
7/26/2019 05_-_programiranje_mikroprocesora (1)
11/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
12/36
5.1. Netwide Assembler (NASM)
Definisanje promjenljivih
ASCII
6 36h
8 38h
0 30h
8 38h
20h
R 52h
O 4Fh
S 53hE 45h
C 43h
O 4Fh
R 52h
P 50h
O 4Fh
R 52h
K 4Bh
I 49h
M 4DhPORUKA
PORUKA DB MIKROPROCESOR 8086
7/26/2019 05_-_programiranje_mikroprocesora (1)
13/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
14/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
15/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
16/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
17/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
18/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
19/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
20/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
21/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
22/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
23/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
24/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
25/36
5.3. Netwide Assembler (NASM)
MAKROI
broj argumenata se mora navesti, ak i u sluaju kad je jednak 0,
argumenti se referenciraju preko rednog broja (%1, %2, ...),
argumente je mogue koristiti i za relativno adresiranje ([%1], [%2], ...),
ako je potrebno navesti labelu unutar makroa, ona se navodi na sljedei nain
%macro primjer 0
%%petlja:
.......
jmp %%petlja
%endmacro
7/26/2019 05_-_programiranje_mikroprocesora (1)
26/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
27/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
28/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
29/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
30/36
5.4. Procedure
Direktive GLOBAL i EXTERN
GLOBALdirektivom deklariu se labele ili promjenljive koje su dostupne i drugimprogramskim modulima
EXTERNdirektivom deklariu se labele ili promjenljive koje se koriste u datomprogramskom modulu, a pripadaju nekom drugom modulu u kojem su deklarisane kaoGLOBAL
Primjer: Napisati proceduru koja sabira cifre prirodnog broja n (n
7/26/2019 05_-_programiranje_mikroprocesora (1)
31/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
32/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
33/36
7/26/2019 05_-_programiranje_mikroprocesora (1)
34/36
SECTION .bss SECTION .text
7/26/2019 05_-_programiranje_mikroprocesora (1)
35/36
5.4. Procedure
Korienje steka
NIZ resw 100BROJAC resw 1ZBIR resw 1
SECTION .textglobal _startextern SUMA_NIZA
_start:
MOV EBX, NIZPUSH EBXMOV EBX, BROJACPUSH EBXMOV EBX, ZBIRPUSH EBXCALL SUMA_NIZA
...MOV EAX, 1
MOV EBX, 0INT 80h
SECTION .textglobal SUMA_NIZASUMA_NIZA:
PUSH EAX ; stavi na stek sadrzajePUSH ECX ; EAX,ECX,ESI,EDI,EBPPUSH ESIPUSH EDI
PUSH EBPMOV EBP,ESPMOV ESI,[EBP+32] ; pocetna adresa NIZA u ESIMOV EDI,[EBP+28] ; adresa BROJACA u EDIMOV ECX,[EDI] ; vrijednost BROJACA u ECXMOV EDI,[EBP+24] ; adresa ZBIRA u EDIMOV EAX,0
PETLJA:ADD AX,word [ESI]ADD ESI,2LOOP PETLJAMOV word [EDI],AX ; ostavi rezultat na lok. ZBIRPOP EBPPOP EDIPOP ESI
POP ECXPOP EAXRET 12 ; povratak u glavni modul
(preskae 12 lokacija na steku)
7/26/2019 05_-_programiranje_mikroprocesora (1)
36/36
Top Related