Assembly Prpgramozás

  • View
    45

  • Download
    1

Embed Size (px)

DESCRIPTION

Hungarian assembly textbook

Text of Assembly Prpgramozás

  • Assembly Programozs

    Rodek Lajos Dis Gbor

  • Tartalomjegyzk

    brk jegyzke Tblzatok jegyzke Elosz

    Ajnlott irodalom 1. Az Assembly nyelv jelentosge 12. A PC-k hardvernek felptse 4

    3. Szmrendszerek, gpi adatbrzols 7

    4. A 8086-os processzor jellemzoi 134.1. Memriakezels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.2. Regiszterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144.3. Adattpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.4. Memriahivatkozsok, cmzsi mdok . . . . . . . . . . . . . . . . . . . . . 18

    4.4.1. Kzvetlen cmzs . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.4.2. Bziscmzs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.4.3. Indexcmzs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.4.4. Bzis+relatv cmzs . . . . . . . . . . . . . . . . . . . . . . . . . 184.4.5. Index+relatv cmzs . . . . . . . . . . . . . . . . . . . . . . . . . 184.4.6. Bzis+index cmzs . . . . . . . . . . . . . . . . . . . . . . . . . . 184.4.7. Bzis+index+relatv cmzs . . . . . . . . . . . . . . . . . . . . . 18

    4.5. Veremkezels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.6. I/O, megszakts-rendszer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    5. Az Assembly nyelv szerkezete, szintaxisa 24

    6. A 8086-os processzor utastskszlete 296.1. Prefixek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    6.1.1. Szegmensfellbrl prefixek . . . . . . . . . . . . . . . . . . . . . 296.1.2. Buszlezr prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . 306.1.3. Sztringutastst ismtlo prefixek . . . . . . . . . . . . . . . . . . . 30

    6.2. Utastsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

  • TARTALOMJEGYZK

    6.2.1. Adatmozgat utastsok . . . . . . . . . . . . . . . . . . . . . . . . 306.2.2. Egsz szmos aritmetika . . . . . . . . . . . . . . . . . . . . . . . 316.2.3. Bitenknti logikai utastsok . . . . . . . . . . . . . . . . . . . . . 316.2.4. Bitlpteto utastsok . . . . . . . . . . . . . . . . . . . . . . . . . . 326.2.5. Sztringkezelo utastsok . . . . . . . . . . . . . . . . . . . . . . . 326.2.6. BCD aritmetika . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.2.7. Vezrlstad utastsok . . . . . . . . . . . . . . . . . . . . . . . 326.2.8. Rendszervezrlo utastsok . . . . . . . . . . . . . . . . . . . . . . 336.2.9. Koprocesszor-vezrlo utastsok . . . . . . . . . . . . . . . . . . . 336.2.10. Specilis utastsok . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    7. Assembly programok ksztse 35

    8. Vezrlsi szerkezetek megvalstsa 378.1. Szekvencilis vezrlsi szerkezet . . . . . . . . . . . . . . . . . . . . . . . . 378.2. Szmllsos ismtlses vezrls . . . . . . . . . . . . . . . . . . . . . . . . 408.3. Szelekcis vezrls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438.4. Eljrsvezrls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    9. A Turbo Debugger hasznlata 52

    10. Szmols elojeles szmokkal 5610.1. Matematikai kifejezsek kirtkelse . . . . . . . . . . . . . . . . . . . . . . 5610.2. BCD aritmetika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6010.3. Bitforgat utastsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6210.4. Bitmanipull utastsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    11. Az Assembly s a magas szintu nyelvek 6711.1. Paramterek tadsa regisztereken keresztl . . . . . . . . . . . . . . . . . . 6711.2. Paramterek tadsa globlisan . . . . . . . . . . . . . . . . . . . . . . . . . 6911.3. Paramterek tadsa a vermen keresztl . . . . . . . . . . . . . . . . . . . . 7011.4. Loklis vltozk megvalstsa . . . . . . . . . . . . . . . . . . . . . . . . . 73

    12. Muveletek sztringekkel 75

    13. Az .EXE s a .COM programok, a PSP 8113.1. A DOS memriakezelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8113.2. ltalban egy programrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8213.3. Ahogy a DOS indtja a programokat . . . . . . . . . . . . . . . . . . . . . . 8413.4. .COM llomnyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8513.5. Relokci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8613.6. .EXE llomnyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    14. Szoftver-megszaktsok 9014.1. Szvegkirats, billentyuzet-kezels . . . . . . . . . . . . . . . . . . . . . . 9114.2. Szveges kpernyo kezelse . . . . . . . . . . . . . . . . . . . . . . . . . . 9214.3. Munka llomnyokkal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9614.4. Grafikus funkcik hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . 99

  • TARTALOMJEGYZK

    15. Hardver-megszaktsok, rezidens program 10215.1. Szoftver-megszakts tirnytsa . . . . . . . . . . . . . . . . . . . . . . . . 10315.2. Az idozto (timer) programozsa . . . . . . . . . . . . . . . . . . . . . . . . 10715.3. Rezidens program ksztse . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

    16. Kivtelek 114

    A. tvlts klnfle szmrendszerek kztt 116B. Karakter kdtblzatok 120

    Trgymutat 125

    Irodalomjegyzk 130

  • brk jegyzke

    2.1. A PC-k felptse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    3.1. A NOT muvelet igazsgtblja . . . . . . . . . . . . . . . . . . . . . . . . . 83.2. Az AND muvelet igazsgtblja . . . . . . . . . . . . . . . . . . . . . . . . 83.3. Az OR muvelet igazsgtblja . . . . . . . . . . . . . . . . . . . . . . . . . 83.4. A XOR muvelet igazsgtblja . . . . . . . . . . . . . . . . . . . . . . . . . 94.1. Az AX regiszter szerkezete . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.2. A Flags regiszter szerkezete . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    9.1. A Turbo Debugger kpernyoje . . . . . . . . . . . . . . . . . . . . . . . . . 54

  • Tblzatok jegyzke

    8.1. Elojeles aritmetikai feltteles ugrsok . . . . . . . . . . . . . . . . . . . . . 458.2. Elojeltelen aritmetikai feltteles ugrsok . . . . . . . . . . . . . . . . . . . . 458.3. Specilis feltteles ugrsok . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    14.1. Gyakran hasznlt szoftver-megszaktsok . . . . . . . . . . . . . . . . . . . 9114.2. llomny- s lemezkezelo DOS-szolgltatsok . . . . . . . . . . . . . . . . 9814.3. Standard I/O eszkzk handle rtke . . . . . . . . . . . . . . . . . . . . . . 9814.4. Sznkdok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

    16.1. A 8086-os processzoron ltezo kivtelek . . . . . . . . . . . . . . . . . . . . 115

    A.1. tvlts a 2-es, 8-as, 10-es s 16-os szmrendszerek kztt . . . . . . . . . . 116B.1. ASCII s EBCDIC vezrlokdok . . . . . . . . . . . . . . . . . . . . . . . . 120B.2. ASCII s EBCDIC karakterkdok . . . . . . . . . . . . . . . . . . . . . . . 121

  • Elosz

    Valami . . .

  • Ajnlott irodalomA kvetkezo lista tartalmazza azon muvek adatait, amelyek elolvassa elosegt(het)i a jegy-

    zet knnyebb megrtst:

    1. Petho dm: Assembly alapismeretek 1. ktet, Szmalk, Budapest, 19922. Peter Norton John Socha: Az IBM PC Assembly nyelvu programozsa, Novotrade, Bu-

    dapest, 1991

    3. Peter Norton: Az IBM PC programozsa, Muszaki Knyvkiad, Budapest, 1992

    4. Lszl Jzsef: A VGA-krtya programozsa Pascal s Assembly nyelven, ComputerBo-oks, Budapest, 1994

    5. Abonyi Zsolt: PC hardver kziknyv

    6. Dr. Kovcs Magda: 32 bites mikroprocesszorok 80386/80486 I. s II. ktet, LSI, Budapest

    Az (1), (2) s (3) knyvek a kezdoknek, az Assemblyvel most ismerkedoknek valk.A (4) s (5) knyvek a hardverrel foglalkoznak, az Assemblyt ezekbol nem fogjuk megta-

    nulni.Vgl a (6) egy referenciaknyv, gy ezt foleg az Assemblyben mr jrtas, de mlyebb

    ismeretekre vgyknak ajnljuk.

  • 1. fejezet

    Az Assembly nyelv tulajdonsgai,jelentosge

    A szmtgpes problmamegolds sorn a kituztt clt megvalst algoritmust mindig va-lamilyen programozsi nyelven (programming language) rjuk, kdoljuk le. A nyelvet sokszoraz adott feladat alapjn vlasztjuk meg, mg mskor aszerint dntnk egy adott nyelv mellett,hogy az hozznk, az emberi gondolkodshoz mennyire ll kzel. Ez utbbi tulajdonsg alapjncsoportosthatk a szmtgpes programozsi nyelvek: megklnbztetnk alacsony szintu(low-level) s magas szintu programozsi nyelveket (high-level programming language). Azelobbire j pldk az Assembly s rszben a C, az utbbira pedig a Pascal ill. a BASIC nyelvek.Ha a nyelvek szolgltatsait tekintjk, akkor szembetlo, hogy ahogy egyre fentebb haladunkaz alacsony szintu nyelvektol a magas szintuek fel, gy egyre nagyobb szabadsggal, egyreltalnosabb megoldsokkal tallkozunk.

    Az Assembly teht egy alacsony szintu programozsi nyelv, mghozz nagyon alacsonyszintu, ebbol kvetkezoen pedig sokkal kzelebb ll a hardverhez, mint brmely ms nyelv.Fobb jellemzoi:

    nagyon egyszeru, elemi muveletek

    tpustalansg

    rgztett utastskszlet

    vilgos, egyszeru szintaxis

    kevs vezrlsi szerkezet

    nagyon kevs adattpus; ha tbb is van, akkor ltalban egymsbl szrmaztathatk vala-hogyan

    De mirt is van szksg az Assemblyre, ha egyszer ott van a tbbi nyelv, amikben jvalknyelmesebben programozhatunk? Erre egyik indok, hogy a magas szintu nyelvek eljrsai,fggvnyei sokszor ltalnosra lettek megrva, gy teljesen feleslegesen foglalkoznak olyan dol-gokkal, amikre esetleg soha sem lesz szksgnk. Erre j pldk lehetnek a Borland Pascal/Cgrafikus eljrsai, valamint ki-/bemeneti (I/O) szolgltatsai. Krt rajzolhatunk a Circle elj-rssal is, de ennl gyorsabb megoldst kapunk, ha vesszk a fradsgot, s mi magunk runk

  • 2egy olyan krrajzolt, ami semmi mst nem csinl, csak ami a feladata: helyesen kirajzolja akrt