tanulságok szerelő

Jó napot, kedves barátaim!

Tehát, mi továbbra is a nyelv tanulmányozására. Adja szövegét újra a programot:

  • .286
    CSEG szegmens
    vállalnak cs: CSEG, ds: CSEG, es: CSEG, ss: CSEG






    org 100h
    kezdődik:
    ; Az összes fent leírt amíg elhagytuk.

    mov ah, 9; tölt be a nyilvántartási szám 9 ah (adja funkció).
    mov dx, offset helloworld azt jelzi, hogy mi lesz visszavonja a kifejezést.
    int 21h; Output a kifejezést.

    int 20h; Kilépés a DOS.

    helloworld db 'Hello, world $!'; Adjuk meg a helloworld változó kérhető byte byte az a kifejezés,
    ; "Helló, világ!". Az egyszeres idézőjelbe, miután a „!” tesz
    "; $" Jel.

    ; A program befejezése.
    CSEG végek
    end kezdődik

    Bunch mov ah, 9 és int 21h lényegében egy csapat, ha összehasonlítjuk a magas szintű nyelvi kurzus.
    Azonban assembly nyelven először megadott parancs az úgynevezett funkció, és az utolsó - a megszakítás. Megszakítás végrehajtja a parancsot az adott funkciót. Nincsenek megszakítások és funkciók, például az azonos int 20h. Talán, amíg ez kissé nehéz megérteni, de ez a forma programozásra van szükség, hogy emlékezzen.

    Ugyanebben például állunk szemben más kulcsfontosságú fogalmak a szerelvény, mint például a nyilvántartások és hexadecimális. Kezdjük az elején.

    Úgy történt, hogy a modern számítógépek minimális memória egység a 8 bites byte, az érték, ami kényelmes, hogy írjon a két számjegy. Annak jelzésére, hexadecimális számot fogunk használni a „h” betű, amelyet mögé ilyen számok. Ez a megjelölés gyakori, bár egyes platformok, mint például a kedvenc ZX Spectrum, a saját összeszerelő használt jelölés a nyomtatvány # 05B3. Nulla elülső jelöljük „mester”, mivel a szám # 05B3 = # 5B3, és arra szolgál, az olvashatóság, és az úgynevezett „igazítás” (általában egy vonalban egy vagy két byte: # 05B3).

    Meg kell tanulni, hogy lefordítani számokat egy számot rendszerből a másikba. Erre a célra nagyon jól szabványos számológép „Windows” a mérnöki üzemmódban. Azonban, ha nincs kéznél számológép, konverziós számokat binárisan és hexadecimális számrendszer, meglehetősen egyszerű decimális. Ehhez írja a számot kibővített formában, és számítsuk ki értékét. Az alábbiakban algoritmusok átalakítani számokat egyik rendszerből a másikba (vagy mehet közvetlenül o. 2. „regisztrálja”).

    Translation számokat bináris decimális. Vigye magával minden bináris szám, pl 10,112. Majd írunk kiterjedt formában proizvedom számítások:

    10,112 = 1 × 2 + 1 × 2 0 0 1 × 2 + 1 + 1 × 2 × 2 = 1 2 + 0 × 1 + 1 × 1/2 + 1 × 1/4 = 2,7510.

    Translation számokat hexadecimális decimális. Most bármilyen hexadecimális szám, például 19F16. Majd írunk kitágult alakban (nem feledve, hogy F hexadecimális számjegy megegyezik a decimális szám 15) és proizvedom számítások:

    19F16 = 1 × 16 9 2 + 16 × 1 + F × 0 16 × 1 = 256 + 9 + 16 × 15 × 1 = 41.510.







    Fordítása számok bináris hexadecimális. Tizenhat számjegy hexadecimális szám a belépés, azaz minden számjegy 16 lehetséges bejegyzés ezt. Oldjuk meg az exponenciális egyenlet:

    16 = 2 i. Mivel 16 = 2 i = 4, majd 4 bit.

    Minden számjegy hexadecimális szám mindig tartalmaz 4 bit információt.

    Átcsoportosítási bináris számot hexadecimális kell osztania azt a csoport négy számjegy jobbról kezdve, és ha az utóbbi elhagyta a csoportot kevesebb, mint négy számjegy, kiegészíti azt, hogy a bal oldali nullák. Átalakítani frakcionált bináris számot hexadecimális kell törni tetradból balról jobbra, és ha kiderül, hogy kevesebb, mint négy számjegy, annak kiegészítésére nullákkal a jogot az utolsó csoport.

    Ezután konvertálja minden csoport hexadecimális számjegyeket a lefordított bináris megfelelő notebook és hexadecimális asztalra.

    Fordítás bármilyen egész bináris számot, például A2 = 1010012 hexadecimális:

    fordítás algoritmus decimális egész bináris rendszerben. Let Atsd - decimális szám. Írja meg összegeként az alap 2 fok bináris együtthatók. A negatív felvétel a szubsztrát nem fordul elő kibővített formában (2):

    Az első lépésben Atsd szakadék száma alapján a bináris rendszer, azaz 2. A hányados egyenlő lesz

    maradékként - egyenlő A0.

    A második lépésben egész szám hányadosa újra osztani 2, a maradék a szétválás most egyenlő a1.

    Ha továbbra is ezt a folyamatot a szétválás után az n-edik lépésben megkapjuk a szekvenciát maradékok:

    Ez könnyű észrevenni, hogy azok sorrendjét egybeesik az inverz sorozata egész számok bináris számot írt a tekercselt formában:

    Így elegendő rögzíteni a maradványokat a fordított sorrendben, hogy megkapjuk a kívánt bináris szám.

    Translation algoritmus integer decimális bináris az alábbiak lesznek:

    1. Sequentially végre Division kiindulási decimális szám és fogadott teljes privát rendszer az alapon (2), amíg, amíg a hányados, osztó minimális, azaz kevesebb, mint 2.

    2. Record a kapott maradékot fordított sorrendben.


    Fordítás decimális számokat bináris és hexadecimális bonyolultabb és el lehet végezni a különböző módokon. Vegyük az egyik fordítás algoritmus példáját fordítás decimális számokat bináris. Meg kell jegyezni, hogy a fordítási algoritmusok egész számok és a megfelelő frakciók változik.

    Vannak általános célú regiszterek, szegmens regiszterek, program számláló és regiszterek zászlókat. Itt találkozunk először egy általános célú ax és dx regisztereket. És mindegyikük két részből áll - a régebbi (ah) és a fiatalabb (al) (az ax), amit már írtunk:

  • H magas vezető
    L alacsony Jr.
    Minden regiszter neve hordoz-e értelme.
  • A akkumulátortelep
    B bázis bázis
    C counter counter
    D adatok adatok
    BP bázis pointer Base pointer
    SI forrás index forráskód
    DI cél index vevő index
    SP stack pointer stack pointer
    CS kód szegmens szegmens parancsok
    DS adatszegmens adatszegmens
    SS verem szegmens verem szegmens
    ES extra szegmens overlay
    IP utasítás mutató számláló parancsok
    Ebben a programban használtuk a régebbi része a fejsze nyilvántartás (akkumulátoros) és dx regiszter (írt adatok).

    Minden regiszter két byte - Senior (előbb) és fiatalabb. Például a szám 3DEFh lehet fedésbe hozni ax két módon. Az első - közvetlen:

  • mov ax, 3DEFh
    és külön-külön a magas és alacsony byte:
  • mov ah, 3DH
    mov al, EFH
    Remélem, ez teljesen világos.

    Mi lefordítani a programot, segítségével létrehozott egy új Far test.asm fájlt (Shift + F4), és tegye őket a könyvtárban MASM.EXE program ML.EXE, LINK.EXE (vagy előíró megfelelő rendszert utat nekik. Ahhoz, hogy link.exe én nem dolgoznak ki, akkor a mappában marad, a program). Ügyeljen arra, hogy válassza ki a kódolás 866 (F8 billentyű) fájlba, illetve lásd halandzsa a képernyőn.

    Végezze: ML test.asm / AT

    A mappát a program akkor még két fájlt - test.obj és test.com. Az utolsó, és szükségünk van rá.
    Fuss, és látni a képernyőn az „Helló, világ!”.




    Kapcsolódó cikkek