Introducere in Microprocesoare_Part18

Embed Size (px)

Citation preview

  • 7/23/2019 Introducere in Microprocesoare_Part18

    1/6

    iiloo.

    -

    fflooo

    CY

    :

    0

    *-

    y--7'

    i

    -"

    Cy

    :

    I

    *_6,

    In

    adunalea

    urmltoarelor

    cuvinte

    de

    3

    trvtes

    34AF8A

    BzAF93

    E7sFJD

    se utilizeazd'

    inst.rcliLrnea

    ADD

    pcntru

    adunar.ea

    g{-;93

    si

    instruc_

    lirrnea

    ADC

    penlr"

    a"ne.il"

    ari:i1,,

    34+Bz

    l-

    '-cl'-

    I +

    b"ifiy*etorul

    program

    realizeazd.

    adunarea

    a

    doui

    cuvinte

    de

    doi

    START:

    LDA

    C1\{PSB1;

    I

    1

    I

    ol

    ol

    oi 1

    i

    r

    I

    r

    loi

    opcoDE

    Cicluri

    :

    1

    Stiri

    : 4

    Adresare:

    cu

    registru

    pereche

    Fanioane

    : Z,S,P,CY,AC.

    lJ

    retnplw:

    L{I $,ADRESA;

    SE PRESCRIE

    REGISTRUL

    PERECHE

    H.

    ADC

    l{

    ;

    SE

    ADUNA

    LOCATTA

    DE

    aOnnSa_eDRESA-

    i-A

    ACUMULATOR

    PLUS

    CY.

    {9

    dCI

    data

    (Add.

    imrned.iate

    w.ith carry)

    (A)

    -

    @)

    +

    (ba,it

    z)

    +

    Cy

    confinutul

    baitutrni

    al

    doilea al

    instrucliunii

    si

    valoarea

    fanionului

    de

    transport

    se adunl

    ia

    confinutul

    ac'm'latorului;

    iezultatul

    se

    obline

    in

    acumulator

    I r

    I

    r

    I

    ol

    oi

    I

    I

    r

    j

    rlol

    opcoDE

    I

    I

    I

    i

    I

    i

    I

    IDArA

    Cicluri

    ;

    2

    St5.ri

    :

    '7

    Adresarc:

    imediatd"

    Fanioane

    :

    Z,S,P,CY,AC.

    4ql

    191111118;

    OFERANDUL

    ESTtr

    ExpRh'rAT

    rr{

    BTNAR.

    ACI

    43

    ;

    OPERANDUL

    IN

    ZECIMAL.

    .ACI

    43H

    ;

    OPERANDUL

    IN

    FIEX.

    ACI

    ,M,

    ;

    OPtrRAND

    ESTE

    LITERA

    M

    II{

    CoD

    ASCII.

    Prima instructiune

    din

    aceste

    exemple,

    claci

    conlinutul

    acumula_

    torului

    este

    1000

    foto,

    iar

    ,"riy

    i

    i;;;;"",

    Cy:t

    ,

    ,Litii"ira,

    Acumulator

    :

    1000i0i0

    |

    CarrY:

    t

    Data

    :

    iolltlii

    J

    Sign

    :0

    cY

    :

    _-l==i

    3:'o

    :0

    Acumutator:

    otoololo

    l^r"

    1"1#=

    ?

    Dac5.

    Carry a fost

    zero,

    CY

    :

    0

    se

    realizeazd":

    "1)^""

    1D

    MOV

    B,A

    LDA

    CMPSB2;

    ADD

    B

    STA

    REZ

    LDA

    C},{SB1

    N4OV

    B,A

    LDA

    CMSBz

    ADC

    B

    sTA

    F.F'Z]-L

    ;

    qP

    lrygARCA

    cEL

    MAi

    PUrrN

    lPlqlllrcArrv

    BAri.

    li^i,nruurul

    CUVINT

    CI{PSB1.

    9P

    IBANSFERA

    CMPSB1

    IN

    REGISTRUL

    B.

    sP

    INCAIiCA

    CIIPSBZ

    AL

    CU_VINTULUI

    AL DOILEA.

    4P_q{AREA

    BArrrr-on

    ilrpsnr

    sr

    CPMSB2.

    :P lLocHE

    AZA

    LEZULTATUL.

    SE-INCARCA

    CEL

    T{AI

    SEMNiPiCEITT'

    F4rr_Ar-

    PRTMUT-Ui

    cuvl-Nil

    ^"'"^

    9q

    ITAIiSFERA

    chrsBl

    N

    ^'

    REGISTRUL

    B.

    qP rygARCA

    CMSBZ

    AL

    CUVINTULLTI

    AL

    DOILEA.

    9E* 4DUNA

    TI{rND

    CONT

    Dtr

    TRA-}JSPORTUL

    ENTTNION.

    *

    SE

    STOCI{EAZA

    RE:zuii'iUr.

    18

    ADC

    M

    (Add,

    m,emor3t

    ait/2.

    carry)

    (A)*(A)

    +

    (

    (H

    )

    (L)

    )+

    (cY

    )

    confinutul

    iocatiei

    de

    memorie,

    a

    cirei

    adres*

    estc

    specificat5.

    in

    egistrul

    pcrcche

    ll,

    se

    aduni

    .,i

    *"tir"t;if;;rt"il"

    irtrrp"r,

    i,,l,ji"il

    con inutrrt

    acumutator"rui

    ;

    rer"it;tur

    ;;;ftt;J'i;

    "ro-

    t

    0

    0

    1

    0

    204

    Acumulator

    :

    1000 I

    010

    /

    Carrv

    :

    Data

    :

    l0;ll11l

    I

    q,;--'-

    cY

    o

    *1

    Z'&;

    :

    I

    Paritr':

    Acumulator

    -

    Ct00i001

    \A.rx

    .atry

    :

    205

  • 7/23/2019 Introducere in Microprocesoare_Part18

    2/6

    (i.t

    20

    Algoritmul

    de

    verific-ar,ea

    corectitudinii

    adundrii

    numerelor

    cu

    semn

    complement

    fali

    de

    doi)

    este

    expus

    i"

    iig"i"

    i.t6:';."'"^"'

    SUB

    r

    (Swbstract

    reg,ister)

    (A)*(A)-(r)

    conlinutul

    registrului

    z

    este

    scizut

    din confinutul

    acumuratorului;

    rezultatul

    se

    obtine

    in

    acumulato..

    co",ti""t"i';;d;;;ir'rro

    .*

    modificd.

    -

    Pentru

    ultima

    instrucliune

    SUB

    A (se presupune cL

    in acumulator

    t'ste

    valoarea

    3EH)

    se obline:

    3EH

    :0011

    1110

    +(-3EH)

    :

    1100

    0001 complement

    fati

    de

    1

    1 complement

    fali

    deL

    CY

    :

    1+0000

    0000

    v

    -

    Pentru

    scl"derea

    35-12

    cu

    instructiunea

    S se obtine:

    Cicluri

    :

    1

    Stiri

    :

    4

    Adresare:

    la

    registru

    Fanioane

    :

    Z,S,

    p",

    C

    y,AC

    Exemplw:

    SUB

    B;

    SE

    SCADE

    DIN

    CONT.

    -

    CONTINUTUL

    LUI

    B.

    SUB

    A;

    SE

    SCADE

    DIN

    ACUM.

    ACUMULATORULUI.

    ACUMULATORULUI

    VALOAREA

    CONTINUTULUI

    35-

    :

    1Z

    23

    :

    1

  • 7/23/2019 Introducere in Microprocesoare_Part18

    3/6

    Exemplu:

    LXI

    H,4OOOH

    SUB

    M

    27

    SUI

    data

    SE

    IMCERCE

    REGISTRUI-

    PERECHtr

    CU

    ADRESA

    4OOOH.

    SE

    SCADE

    DIN

    ACU]\{ULATOR

    CO],{TINUTUI-

    LOCATIEI

    DE

    ADRESA

    4OOOH.

    'l

    t

    I

    ol ol

    1

    |

    1

    I

    sl

    slsl

    opcoDE

    Cicluri

    :

    I

    St5"ri

    :

    4

    Adresare:

    la registru

    Fanioane:

    Z,S,P,CY,AC

    Exern'jtl,u:

    SBB

    B; SE

    SCADE

    DIN

    ACUI\{ULATOR

    CONTI\IUTUL

    ;

    REGISTRULUI

    B SI

    VALOAREA

    FANIONULUI

    CY.

    Pentru

    aceasti

    instrucliune,

    considerind

    c5.

    CY:

    1, conlinutul

    lui

    B

    este

    2,

    iar

    cel

    al

    acumulatorului 4,

    se

    obline

    (se

    noteazl

    compiementul

    fali

    de

    doi

    cu 2'):

    Acumulator

    4H

    :0000

    0100

    Reg.

    B

    in

    2'

    (-2I{)

    :

    1111 i110

    CY:

    1

    in

    2'

    (-1H)

    :

    tr1ll 1111

    .a-

    I +_

    0000 0001

    :

    lH/ I

    -

    \_

    24 SBB M

    (.Subtract

    (1)

    *

    (A)

    -

    ((H)(r))

    -

    (cY)

    Con{inutul

    localiei

    de

    memorie, a

    c5"rei

    adresl

    registrul

    pereche

    -Fl

    si

    valoarea fanionului

    CY

    conlinutul

    acumulatorului; rezultatul

    se

    obtine

    in

    I

    rl ol

    ol

    il

    r

    |

    1

    I

    r

    lol

    opcoDE

    (

    Subtract

    ,intintdtote

    )

    (A)

    *

    (A)

    -

    (ba,it

    ?.)

    conlinutui

    baitului

    al doilea

    al instrucliunii

    se

    scade

    din

    continut'I

    acurnulatorului;

    rezultatur

    se

    obfine'

    io

    n..i*"i*io..'"

    -""'t'

    I

    r

    I

    r

    I

    o

    l

    1l--l-ll-1lo

    OPCODE

    DATA

    Cicluri

    : 1

    Stiri

    :

    7

    Adresare: imediatl.

    Fanioaie:

    Z,S,p,Cy,AC

    Exempl,u:

    START:

    SUI

    lH;

    SE

    SCADE

    DIN

    ACU}fULATOR

    1H.

    SUI

    ,T,;

    SE

    SCADE

    DIN

    ACUIIULATOR

    ASCII

    AL

    LITEREI

    T.

    Prima

    din

    aceste

    instruc{iuni

    sul

    lH

    rearizeazL

    urmStoarea

    (se

    considerd.

    cb.

    acumulatorul

    confine

    ""i""i"r'

    OHl;-""*"

    I

    C"tty

    :

    I

    I

    Sign

    :0

    (

    Zero

    -0

    I

    Parity

    :

    o

    \Auxcarry

    :

    l-

    ,,nenxary

    uith

    borrow

    )

    NUMARUL

    CODUL

    opera ie

    0

    0

    0

    0

    1

    este indicat5.

    in

    sint

    scizute din

    acumulator.

    lonfinutul acumulatorului

    0000

    1001

    :

    EH

    Dataincomplementfatd

    de

    Z

    lttt f iii: _lI{

    1

    Carry

    :

    I

    Sisn

    i

    l-ero

    :

    I

    Parit5':

    lAux

    calry

    :

    Cicluri

    :

    St5.ri

    :

    Adresare:

    Fanioane:

    Exempl,u:

    LXI }I,4783H

    SBB

    1\,{

    2

    cu registru

    pereche

    Z,S,P,CY,AC

    $i

    L5

    instrucfiunea

    SUI

    SBts

    r

    (A)

    *

    @)

    --

    (r)

    -

    CY:

    1

    +-

    0000

    1000:

    8I1

    \-/

    data

    complementeazl"

    Cy.

    (Swbtract

    register

    w.itl,t

    (_,ott.ow

    )

    (cv)

    SE INCARCA REG.

    PERECHE

    I{

    CU ADRESA

    4783}{.

    SE

    SCADE DIN

    ACUMUI-ATOR COI{TINUTUL

    LOCATIEI

    DE ADRESA

    4783H

    SI VAI-OAREA

    LUI

    CY.

    25 SEI data (Subtract immediote uith

    borrow

    )

    (A)

    *

    (A)

    -

    (bai,t

    z)

    -

    (cY)

    Conlinutul baitului al doilea

    ai

    instrucliurdi

    ;i

    vatroarea

    fanionului

    CY

    se scad

    din conlinutul

    acumulatorului;

    rezultatul

    se obline

    in

    acumulator.

    Confin-utul

    registrului

    r

    gi

    valoarea

    fanionului

    acumuiator

    ;

    rezuitatul

    se'

    obline

    in

    acumulatoi..

    Iui

    z

    nu

    se

    modifici

    CY

    sint

    scS"zute

    dire

    Con inutul

    registru-

    208

    209

  • 7/23/2019 Introducere in Microprocesoare_Part18

    4/6

    **:,l4lt

    l?p;,.pup,#,,s,Br

    data

    :int

    respectiv

    identice

    cu

    ::'"*:i'.1:l;,:i,

    l :,

    :

    u

    +'

    ni,"fi

    i

    ; L?'

    oXi

    f

    iir

    I

    ;*il:i

    ::::::[Hl

    ",1,\,

    f"l;

    s

    u

    e'

    ilt'r

    i''a

    i#^

    a]l

    ;i

    iir

    T

    ;*il:il

    J.t

    llf;

    : :

    X

    cuvintelor

    m,rliinr,,

    l:1u?

    imprumut

    cy

    sint-util#;#ir

    scederea

    H#tit$:f;T,3J;.,Stjiiriii:itilie1l:LiiH,if

    ,HilT,i.'hTI;1

    ffi',l'f

    Jitu;:'3::n"".li:ii:*l*:Filg:_i:lg,'*"',:1i:f

    i.:T#x;

    *rrTf

    :l,i:#.:TTr,,"{,'ri'##[I'i,llu""lffi

    't":,";)#"H?Ji.il

    ambelc

    cu

    lungimeu

    A"

    io

    ni1i.

    START:

    LDA

    C},IPSG

    ;

    SE

    INCARCA

    CEL

    },{AI

    PUTIN

    $_o,

    u,^,._

    ;

    ii-

    t_?t#ti^JnAzl...

    s.

    DA

    clrpsr

    i

    ;n

    irvdiibe cpr

    MAr

    purrN

    sLrB

    B

    ,$ruf, .,^&":"lf^tllt+;

    IMPRUMU

    I.

    srA

    REzUL

    r

    tP_:fo_Q"iezl

    cEL

    nrAr

    purrN

    : s

    ^Bn_4_\rlFr

    cATrv

    eerr

    etDrr.irir

    wrrr

    DA

    cMSG

    ;

    srrxdlnce

    bbi'liar

    sEMNrFrcATrv

    CY:1e01011000

    ul

    x carry

    -

    I

    BAIT

    AL

    LUI

    G

    MOV

    B,A

    :

    SE

    -DEPLASN;Z;

    CMSG

    IN

    B.

    LDA

    CIIST

    .

    qp

    tnirap.^ /-Dr rr

    E_INCARCA

    cEL

    uar

    silrxIF"ICATIv

    BAIT

    AL

    LUI

    T.

    sBB

    B

    ;

    lcjpgnb

    clr

    fbxsrDERAREA

    STA

    REZUL+T;

    ;

    ;

    INR

    r

    (r)

  • 7/23/2019 Introducere in Microprocesoare_Part18

    5/6

    lololnW

    OPCODE

    Cicluri

    : l

    StXri

    : 5

    Adresare:

    la

    registru

    Fanioane:

    Z,S,p",AC

    Exentplu:

    DCR

    A;

    SE

    scADp

    qg,NfrNurul-

    AqqylfrAToRur_Ur

    cu

    1.

    CR

    C;

    SE

    SCADE

    CONfiNUiir"

    iiECTSTNULUI

    C

    CU

    1.

    Z9

    DCR

    M

    (Decrement

    mewot,y)

    Exewplw:

    START:

    INX

    H

    AICI

    :

    INX SP

    ;

    SE

    CRESTE

    CU Ol

    REG.

    PERECHE

    H.

    ;

    SE

    CRESTE

    CU

    O

    STACK POINTER.

    UNITATE

    CONTINUTUL

    UNITATtr REGISTRUL

    (Decrement

    reg'ister

    pair

    )

    Conlinutul

    registrului

    pereche

    rp

    este

    raicsorat

    cu

    o

    unitate. Nu

    este

    afectat

    nici un

    fanion.

    I

    o

    t

    o

    I

    n

    j

    p

    i

    r

    I

    o

    I

    r

    I

    r

    I

    OPCODE

    Cicluri : I

    St6ri

    :

    5

    Adresare:

    Ia

    registru

    Fanioane:

    -

    Exemplu:

    START:

    DCX SP;

    CONTINUTUL

    REGISTRULUI

    ]\.IICSOREAZA

    CU

    I.

    ACOLO: DCX

    D

    ;

    CONTINUTUL

    REGISTRULUI

    SE

    MICSOR.EAZA CU

    1.

    loloit,rlorrjolll

    OPCODE

    Cicluri

    :

    3

    Stiri

    :

    10

    Adresarc:

    cu

    registru

    pereche

    Fanioane:

    Z,S,plAC

    ,Exernplu:

    SE_I-}I_CARCA

    ADRESA

    48A3H

    PERECHE

    H.

    qgryuNuruL

    LocArrEr

    DE

    SE

    MICSOREAZA

    CU

    UIqU.

    *

    30

    nNX rp

    (

    Increment

    register

    pair

    )

    (rh)(rt)

    +-

    (rh)(rt)

    |

    l

    C,ontinutul

    registrulrri

    pcreche

    rp

    este

    mdrit

    cu

    o

    unitate.

    Nu

    este

    tectat

    nici

    un

    fanron.

    OPCODE

    Cicluri

    :

    1

    Stiri

    : .5

    Adrcsare:

    la

    registru

    ranloane:

    _

    31

    DCX

    rp

    (rh)(rl)

  • 7/23/2019 Introducere in Microprocesoare_Part18

    6/6

    SE

    PRESTRIT

    C0NT0R

    =1

    5E

    PORNESTE

    O

    ALIi PoMi,A,

    SE

    AOAUGA

    UNU

    LA

    STOCHEAZA

    DATA

    SE

    CITESTE

    OATA

    DE

    LA

    CITITORUL

    OE

    CAiTELE

    DATEI

    CI-IITE

    \ESTE< 999?

    SUERUIINA

    ]NlIRZIERI

    SCURII

    SE

    OECREIlENTEAZ

    I

    O

    NTORUT

    t0NT0R

    =0?

    RETURN

    SUgRUTINA

    ]

    NT IR

    TIERE LUN6i

    lrlTlRZiERt

    0,786 sec

    ISUBR,

    INTIRZ IERT

    HEDIE

    )

    OE(RiMEN-TEAZA

    IONTORUL

    fCNJi?Q:O?

    RETURN

    .o)

    Fis.

    5.2B.

    Tipuri

    b)

    '

    de bucle

    in program:

    a

    _,bucii

    (tjp)

    pind

    cind;

    b

    _

    bucib

    (tip)

    in

    timp

    ce

    realizeaze

    nici

    o

    operatie,

    pe cind

    la

    bucra

    -

    ptn,d

    ctnd

    -

    se rearizeazi

    procesarea

    sa

    o

    singurS.

    datl.

    rnstructiunile

    INR r, INR

    M,

    DcR r,

    DCR

    M

    pot

    fi

    utilizate

    foarte

    simplu

    in

    incrementarea

    buclei

    (de

    tip)

    ptnd

    c6nd.ci

    erement

    fizic

    pentru

    contor

    se

    poate

    arege

    oricare

    registru

    intern

    sau

    o

    localie

    de

    memorie.

    Testul

    condifiei

    de

    ie;ire

    din

    bucrd"

    este

    indeplinit

    cind

    contorul

    are

    valoarea

    zero,

    adic5. fanionul

    Z

    :

    1,; contorul

    u""

    o

    ."p".itate

    modulo

    ze

    :256.

    Pentru

    un

    numi"r

    de

    iteratii

    mai

    mic

    decit

    256

    se prescrie

    inilial

    in

    contor

    (cu

    instrucliunile

    MVI

    r,

    data,

    MVI

    M,

    data)

    numirur

    'de

    iteralii

    dorit

    (Ia

    decrementare),

    sau

    complementul

    fa d"

    de'256

    :

    28

    al

    nums.rului

    de iteralii

    dorit,

    la incrementare.

    Instrucliunile

    INX

    rp;i

    DCX

    rp

    pot

    fi

    de

    asemenea

    forosite

    in

    bucr'

    9:^

    ,tn

    pinS-

    cind

    pentru

    rearizarci

    iontorurui

    de

    capacitate maximi.

    zt6:65.536.

    Aceste_

    doui"

    instrucliuni

    au

    fost

    concepute

    in

    scopul

    incrementS"rii

    sarl

    decrementi-rii

    adreselor

    inscrise

    intr-un

    registru

    pereche

    (cu

    LXI

    rp,

    data

    16)

    fdrn

    afectarea

    fanioaneror

    de condifi.

    rn

    aceastS.

    intenfie

    este

    normar

    ca

    fanioanele

    de condilii

    de

    la

    ultima

    ope_

    ralie

    s5"

    se

    p5-streze

    in

    timp

    ce

    se

    prepari.

    o

    noud.

    adresi

    prin

    incrementare

    sau

    decrementare.

    Rezurti

    cd-

    pentru

    testarea

    condiliei

    ie ie;ire

    din

    bucrd",

    la

    utilizarea

    instrucfiunilor

    INX

    rp,

    DCX

    rp,

    nu

    pot fi

    forosite

    fanioanele,

    deci

    trebuie

    sL

    se

    introducd"

    si

    alte

    instrucfiuni

    care

    sL permitd.

    testarea

    terminirii

    contoriz5rii.

    Se

    va

    exemplifica

    in

    continuare

    utirizarea

    instructiunilor

    de

    decre_

    mentare

    in

    bucli

    de

    tip

    pin6

    cind.

    '274

    Fig.

    5.29.

    Organigrame

    pentru

    subrutine

    de

    intirziere:

    a

    -

    subru-

    tind,

    de intirziere

    cu un contor

    realizat pe

    un registru

    de

    8 bi i;

    b

    -

    subrutina

    pentru

    intirzieri

    lungi cu

    bucle

    suprapuse

    (irnbricate)

    Organigrama

    pentru

    o

    subrutinS.

    de

    intirzier-e este

    prezentatS.

    in

    figura

    5.29, a,

    iar prograrnul corespunzitor in

    limbaj

    de asamblare

    este:

    SUBRUTII{A

    DE

    INTIRZIERE

    SCURT'A.

    VALOAREA

    PARAMETRULUI

    N PE^"TRU D(IRATA

    II{TIRZIERII

    SE

    AFLA

    IN

    ACUMULATOR

    (CARE

    AI?E

    FUI{CTIA DE

    cot{ToR)

    INTZS: DCR

    A

    SE DECREMENTEAZA

    CONTORUL.

    CONSUI{A 4

    STARI.

    DACA (A)

    +

    o

    (Z

    :0)

    SALT LA

    ETICHETA INTZS.

    CONSUMA 7/10 STARI

    (POSIBTL

    LA

    pP 8085).

    REINTOARCERE

    IN

    PROGRAII

    JNZ

    INTZS

    RET

    ;

    PRINCIPAL.

    CONSUX{A

    10

    STARI.

    Cu numS.rul

    de

    stiri

    specificate pentru fiecare

    instrucliune

    la fiecare.

    trecere prin

    bucl5.

    se

    consumd- 4

    +

    10:

    14

    stiri.

    Cind

    acumulatorul

    ajunge

    Ia zero, instrucliunea

    JNZ

    nu mai

    executl-

    saltul

    la INTZS,

    deci

    consumi

    numai 7 st5.ri.

    Ultima parcurgere a

    programului

    consumS.

    4

    +

    1

    f

    10

    st5"ri. Valoarea

    intirzierii

    A7"

    introdusS.

    prin

    subrutinS"

    considerind pentru o perioadS"

    (state)

    de

    tact 0,5

    us

    este:

    Ar,:

    t(l/

    -

    1)

    i4

    +

    z1)0,s:

    (rV

    -

    I)

    7ss

    f

    10,5

    ps.

    Cea

    mai

    lungd

    intirziere se

    obfine pentru

    N

    :

    0,

    cind

    dupi prima

    execulie

    a

    instructiunii

    DCR A,

    in

    acumulator va fi

    valoarea 255

    si

    are

    rraloarea

    (256

    -

    1)

    7

    +

    10,5

    :

    1795

    ps; ly'

    se prescrie

    in programul

    principal,

    determinat in

    prealabil

    din relalia

    anterioari

    pentru

    AT"

    lmpus.

    215