05_-_programiranje_mikroprocesora (1)

Embed Size (px)

Citation preview

  • 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