Obsah    Kapitoly: 12345678,  |  X.1X.2X.3X.4,  |  Y1 Y2 

3) Základní instrukce



Teď už jsem chtěl popisovat první program, ale ještě je tu pár věcí, které musíte vědět. A tou by mělo být pár základních instrukcí. Instrukce je něco jako příkaz v jakémkoli programovacím jazyce. Něco jako Writeln, Readln, PutPixel atd.

  • Instrukce INT (Interrupt)

    S touto instrukcí jste už byli seznámeni v části
    pojednávající o přerušeních.
    Syntaxe:
    INT < Číslo přerušení >
    Příklad - přerušení klávesnice (09H):
    INT 09H
    Touto instrukcí můžeme vyvolat vyvolá jakékoli přerušení (Hardwarové či Softwarové), které je identifikováno parametrem uvedeným za instrukcí.

  • Instrukce MOV (Move)

    Bez této instrukce se nikdy neobejdete. Znamená cosi jako přesuň.
    Syntaxe:
    MOV < Kam >, < Co >
    Příklady:
    MOV AX, 1 -> AX := 1
    MOV BL, BH -> BL := BH
    MOV MOJEPROM, AX -> MOJEPROM := AX
      MOV AX, WORD PTR SS:SP -> Ax := Co je na adrese DS:SI
    MOV AX, [SI] -> Ax := Co je na adrese DS:SI
      MOV [ES:DI+4], AX -> Na adresu ES:DI+4 ulož hodnotu AX
      MOV AX, [CS:1234H] -> Do AX ulož, co je na adrese CS:1234H  
    Jak již bylo řečeno dříve, nelze přímo měnit segmentové registry (CS, DS, ES, FS, GS, SS). To však neznamená, že to nejde. S kódem:

    Mov DS, 1234H ; byste asi moc nepořídili, protože takto to nelze

    ale pokud byste napsali:

    Mov AX, 1234H Mov DS, AX ; bude vše v pořádku.

    Další věcí, na kterou byste neměli zapomínat je, že oba dva parametry instrukce Mov musí mít stejnou bitovou velikost. Nemůžete narvat do 8bitového registru 16bitový, ale ani nemůžete k 16bitovému registru přiřadit 8bitový.

    Mov Ah, Bx ; S tímto se daleko nedostanete Mov Ax, Bl ; Toto taky nepůjde

  • Definice proměnných

    V každém programovacím jazyce musíte mít nějaké ty proměnné, stejně je tomu i v assembleru. Pro *.com programy platí, že se proměnné mohou definovat kdekoli v kódu programu, ale program by nikdy neměl dojít až k nim, neboť potom budou tyto proměnné přeloženy na instrukce, které mohou vykonávat bláznivé věci.

    Většinou se proměnné definují na úplném konci kódu, po přerušení, které ukončí program. Pro větší orientaci se podívejte do programu v kapitole První pohled na Assembler.

    K definici proměnných používáme zkratky DB (Declare Byte), DW (Declare Word), DD (Declare Double Word)
    Syntaxe:
    Jméno proměnné DB/DW/DD < Kolik >
    Příklady:
    PROM1 DB 5 - Dá do PROM1 velikosti byte 5
    PROM2 DW 10 - Dá do PROM1 velikosti word 10
      POLE DB 100 DUP (0) - Definuje pole o velikosti 100  
    TEXT DB 'aaa',10,13,'bbb' - 'aaa' < nový řádek > 'bbb'
    !! U definicí polí dodělat dovysvětlení těch věcí jako DB 5,6 DUP ($) apod. !!

    Předchozí kapitola Nahoru Následující kapitola