Hexadecimálny kód. Abstrakt: Program na prevod desiatkového čísla na binárne a hexadecimálne číselné sústavy Program na prevod desiatkového čísla do binárneho assembleru

1. Základné číselné sústavy. Deklarácie údajov v assembleri

Cieľ práce: oboznámenie študentov s číselnými sústavami - dvojkový, osmičkový, šestnástkový; reprezentácia údajov v pamäti počítača, príkazy na pridelenie pamäte.

Teoretická časť

Najmenšia jednotka informácie, ktorá môže byť uložená v počítači, je bit (angl. trocha - bi nie digi t ), t.j. 0 alebo 1. Bit je atóm informácie, nemožno ho rozdeliť. Bity sú zoskupené do skupín po 8 do jedného bajtu. Informácie manipulované počítačom sú reťazce binárnych čísel. Z 8 bitov možno vytvoriť 256 kombinácií. Tieto kombinácie sa používajú na kódovanie veľkých a malých písmen, číslic a špeciálnych znakov.

Na meranie informácií v počítači sa používajú tieto veličiny:

1 kilobajt = 1 kB = 2 10 bajtov = 1 024 bajtov;

1 megabajt = 1 MB = 2 20 bajtov = 1 024 kB;

1 gigabajt = 1 GB = 2 30 bajtov = 1 024 MB.

Číselné sústavy

Číselný systém je súbor pravidiel a čísel na reprezentáciu čísel. Pre akúkoľvek pozičnú číselnú sústavu je počet reprezentovaných číslic rovný základu číselnej sústavy, napríklad pre dvojkovú sústavu je základom číslo 2, preto na reprezentáciu čísel sú dve číslice 0 a 1 potrebné, pre hexadecimálnu číselnú sústavu je to 0, 1, 2, ..., 9 , A, B, C, D, E, F, kde písmená zodpovedajú hodnotám 10, 11, 12, 13, 14, respektíve 15.

Na rozlíšenie číselných systémov sa na koniec čísla umiestni písmeno: B pre binárne, Q pre osmičkové, D pre desiatkové a H pre šestnástkové. Pre desiatkové číslo sa D nevyžaduje.

Ak je číslo zapísané v b-árovej číselnej sústave v tvare

Nr(b) = C n C n-1 C n-2 … C 2 C 1 C 0, D 1 D 2 D 3 …,

potom v desiatkovej číselnej sústave môže byť jeho hodnota vyjadrená ako súčet číslic vynásobený základom číselnej sústavy mocninou rovnajúcou sa číslu pozície číslice v čísle (číslovanie začína od 0 sprava doľava):

Nr(10) = Cn*bn+Cn-1*bn-1 +…+C2*b2+C1*b1+C0*b0+D1*b-1+D2* b –2 +D 3 *b –3 +...

Napríklad:

Nech sú dané dve binárne čísla 11b, 1100011b. Preveďme tieto čísla do desiatkovej číselnej sústavy:

11b = 1 x 2 1 + 1 x 2 0 = 3;

11100011b = 1*2 7 +1*2 6 +1*2 5 +0*2 4 +0*2 3 +0*2 2 +1*2 1 +1*2 0 = 227.

Pozrime sa na príklady prevodu osmičkového čísla do desiatkovej číselnej sústavy:

11q = 1*8 1 + 1*8 0 = 9;

210q = 2 * 8 2 + 1 * 8 1 + 0 * 8 0 = 136.

Príklad prevodu hexadecimálnych čísel na desiatkové:

11h = 1*161+1*160=17;

CA0h= C*16 2 +A*16 1 +0*16 0 = 3232

Ak chcete previesť čísla z desiatková sústava v dvojkovej alebo hexadecimálnej sústave sa používa celočíselné delenie. Číslo sa delí základom číselnej sústavy, kým nezískame nedeliteľný zvyšok. Kvocient získaný delením sa opäť rozdelí a proces sa skončí, keď sa aj kvocient stane nedeliteľným. Zvyšky získané pri delení sa zapisujú v opačnom poradí. Diagram ukazuje prevod čísla 25 do binárnej číselnej sústavy, v dôsledku čoho získame číslo 11001b, ako aj prevod čísla 418 do hexadecimálnej číselnej sústavy, v dôsledku čoho získame číslo 1A2h, vzhľadom na to, že číslo desať je A.

Na prevod čísel zo šestnástkovej sústavy do dvojkovej sústavy a naopak sa používa nasledujúca skutočnosť: každá šestnástková číslica zodpovedá štvorbitovému binárnemu číslu a naopak, ako je uvedené v tabuľke. Preto je pri prevode zo šestnástkovej sústavy do dvojkovej sústavy potrebné zapísať jej binárny kód pre každú šestnástkovú číslicu a pri spätnom prevode sa dvojkové číslo rozdelí sprava doľava na skupiny po štyroch čísliciach a hexadecimálna korešpondencia je napísaná pre nich.

Tabuľka zhody medzi hexadecimálnymi číslicami a binárnymi číslami.

Preveďme napríklad číslo 1FDh na binárne vyjadrenie:

1FDh = 0001-1111-1101b = 111111101b

Preveďme binárne číslo 1110100101b na hexadecimálne zobrazenie: 0011-1010-0101b = 3A5.

Reprezentácia celých čísel v pamäti počítača

Binárny číselný systém sa používa na reprezentáciu informácií v počítači. Na ukladanie celých čísel sa používa prísne pevný počet bitov: 8, 16, 32, 64. Na n binárnych pozíciách môžete zapísať celé číslo so znamienkom v rozsahu od -2 n-1 do 2 n-1 -1. Pozície sú očíslované od 0 do n-1 sprava doľava. Napríklad číslo 67 na ôsmich binárnych pozíciách bude reprezentované ako 01000011b. Čísla bez znamienka môžu byť reprezentované v rozsahu 0 až 2 n -1.

Celé číslo môže byť uložené vo forme dvojkového doplnku alebo dvojkového doplnku. Na vyjadrenie znamienka čísla sa používa bit nazývaný znamienkový bit. Je na pozícii n-1 a je najvýznamnejším bitom čísla. Pre kladné čísla je tento bit nula, pre záporné čísla je to jedna.

Priamy kód používa sa na ukladanie kladných alebo nepodpísaných čísel.

Dodatočný kód slúži na ukladanie záporných čísel. Ak chcete získať reprezentáciu čísla v dodatočný kód Najprv sa nájde priamy kód modulu čísla, potom jeho inverzný kód. Obrátený kód sa získa invertovaním každej číslice binárne zobrazeniečísla: 0 sa prevedie na 1 a 1 na 0. V poslednom kroku na reverzný kód 1 sa pridáva.

Napríklad na vyjadrenie čísla -65 máme:

01000001b priamy číselný kód +65

návratový kód 10111110b

10111111b doplnkový číselný kód -65

Dvojkový doplnkový kód sa používa na nahradenie operácie odčítania celých čísel operáciou sčítania s číslom reprezentovaným v dvojkovom doplnkovom kóde. V tomto prípade procesor nemusí vykonávať operáciu odčítania celých čísel.

Typy údajov

BYTE. Tento typ údajov zaberá 1 bajt (8 bitov). Pomocou tohto typu môžete zašifrovať celé číslo so znamienkom v rozsahu od -128 do +127 alebo celé číslo bez znamienka v rozsahu od 0 do 255, akýkoľvek znak ASCII, ktorý je tiež zakódovaný ako celé číslo. Definičná smernica – D.B.(Definovať bajt).

SLOVO. Tento typ údajov zaberá 2 bajty (16 bitov). Do premennej tohto typu Môžete umiestniť celé číslo v rozsahu -32768 až +32767 alebo 0 až 65535, dva znaky ASCII alebo relatívnu adresu pamäte typu blízko. V tomto prípade sa zápis do pamäte vykonáva nasledovne: nízka časť čísla je umiestnená na nízkej adrese a vysoká časť je umiestnená na vysokej adrese. To platí aj pre iné typy údajov. Napríklad, ak sa hexadecimálne celé číslo 1234h nachádza na adrese 1000h, potom časť 34h nižšieho rádu bude umiestnená na adrese 1000h a 12h bude umiestnená na adrese 1001h. Definičná smernica – DW(definovať slovo).

DWORD– 4 bajty (2 slová) môžu obsahovať 32-bitové celé číslo so znamienkom alebo bez znamienka, číslo s pohyblivou rádovou čiarkou, 32-bitovú adresu pamäte alebo 4 znaky ASCII. Pri ukladaní adresy sa adresa segmentu nachádza v horných dvoch bajtoch a posun je v dolných dvoch bajtoch pamäte. Definičná smernica – DD(Definujte dvojité slovo).

QWORD– 8 bajtov. Môže to byť celé číslo so znamienkom alebo bez znamienka, číslo alebo číslo s pohyblivou rádovou čiarkou s dvojitou presnosťou. Definičná smernica – DQ(Define Quad).

TEN-BYTES– 10 bajtov. Používa sa na ukladanie údajov do hlavnej pamäte alebo koprocesora. Môže to byť zbalené číslo BCD, rozšírené celé číslo alebo rozšírené číslo s pohyblivou rádovou čiarkou. Smernica o definíciách - D.T.(Definujte desať bajtov).

Všeobecná syntax na definovanie údajov je:

< názov> < typu> < zoznamhodnoty>

< názov> < typu> < číslo>dup (výraz),

Kde názov- identifikátor, typu– jedna z vyššie uvedených smerníc na pridelenie pamäte, zoznam hodnôt– zoznam, ktorý môže obsahovať znakové alebo číselné konštanty. Môže obsahovať aj symbol ? , ak je hodnota nedefinovaná, alebo adresa - názov premennej alebo štítok, reťazec znakov ASCII uzavretý v úvodzovkách alebo apostrofoch. smernice dup určuje opakovanie hodnôt definovaných zadaným výrazom <число> raz. Výraz môže byť konštanta, konštanty kombinované znamienkami aritmetické operácie, zoznam hodnôt alebo symbol ? , ak hodnota nie je definovaná.

Napríklad,

var_a db 2 dup (0, 3 dup (1)) ; ekvivalent k var_a db 0,1,1,1,0,1,1,1 var_b db 1, 2, 3, ?, ? adr_a dw var_a adr_b3 dd var_b+3

Poďme určiť veľkosť pamäte alokovanej pre každú z nasledujúcich premenných:

m1 db 4, 5, 1, 6; 4*1=4 bajty m2 db “xzyqw” ; 5*1=5 bajtov m3 dw 12 dup(?) ; 12*2=24 bajtov m4 dd 345h , 234h ; 2*4=8 bajtov

m1 db 4, 5, 1, 6; 4*1=4 bajty m2 db “xzyqw” ; 5*1=5 bajtov m3 dw 12 dup(?) ; 12*2=24 bajtov m4 dd 345h, 234h ; 2*4=8 bajtov

Celkový počet bajtov pridelených týmito smernicami je 41 bajtov. Premenná m1 sa nachádza na relatívnej adrese 00h, m2 – 04h, m3 – 09h a m4 – 021h.

Jednotlivé úlohy:

1. Prevod desiatkových čísel na binárne, hexadecimálne a osmičkové číselné sústavy:

1)42;31;113 5 )46;35;119 9 ) 49;30;103 13 )29;37;97
2 )45;81;89 6)66;25;110 10 )19;53;101 14 )21;87;98
3 )12;38;118 7 )17;63; 96 11)34;50;107 1 5) 28;45;130
4 )11;43;67 8 )13;69;88 1 2 )14;70;99 16)15;72;100

2. Preveďte šestnástkové čísla na binárne:

1)A45;12;56B 5)7C;72EB;31DB 9)34A;6AB;9AD 13)2B9;6F1;81B
2)1EF3;5AB;46F 6)3EB;4D8;A61 10)5AB;79F;AB8 14)7CD;2A1;B53
3)A56;5E9;CDE 7) 6A3; 9D0; 8BE 11)9A;4DE;EF7 15)10B;87F;CD9
4) 3B8; DE1; BAE 8)BC;7F9;78A 12)AB;8E4;C17 16)38E;9C7;B89

3. Preveďte binárne čísla na osmičkové a hexadecimálne číselné sústavy:

1) 00101011; 00100110;
01110011
5 ) 11110010; 01101010;
11111100;
9 ) 10000101; 11100010;
11001011
13 ) 00011101; 11111001;
00111101
2 ) 01100001; 01101110;
11110011
6) 00110110; 00111011;
10001100
10 ) 00011101; 01010110;
10110010
14 ) 00011100; 01001100;
01101110
3) 11100100; 01011100; 11000001 7 ) 11010010; 01001100; 11000111 11) 11100010; 10100001; 10001110 1 5 ) 10101001; 11010101; 111001100
4 ) 00001111; 10100101; 10010001 8 ) 11100000 11111000; 01000011 1 2 ) 10100101; 01101100; 11100001 16) 11100111; 01100101; 10110010;

4. V doplnkovom kóde uveďte tieto čísla:

1)-42;-31;-96 5)-46;-35;-94 9) -49;-30;-103 13)-29;-37;-97
2)-52;-41;-93 6)-66;-25;-85 10)-19;-53 ; -101 14)-21;-87;-98
3)-12;-38;-93 7)-17;-63;-99 11)-34;-50;-94 15)-28;-45;-95
4)-11;-43;-67 8)-13;-69;-88 12)-14;-70;-99 16)-15;-72;-89

5. Uvádzajú sa nasledujúce definície premenných:

1) a db 45,16,76,-6
bdb "abcd"
cdw 15 dup(0),3,3
d dd 345 h
2) pridať 2,24
b db "aaa", -8.23h,11101b
c db 6 dup(0), 45, 6
d dw -7,4Dh.8 dup(0)
3) a db “Salut”,10,13
b db -16,-20,13h,2 dup(0)
c dw 62,34,-15
d dd 456C9h,4567
4) dd 92,45h,90,-54,-67
b db 10 dup(‘$’),10.13
c db "amdto",10,13,'$'
d dw 5 dup(?),7,-80h
5) a db „lucrarea_1“,10,13
b db 2 dup(0)
c dw 38,-15,78,41,12
d dd 678EFh, 3489,456
6) a db 12,24 "sss"
b db "ab", -8,23 h
c dd 6 dup(0),45
d dw -7,5 dup(0)
7) a db 35,53
b db 10 dup(‘ ’),10,13 „$“
c dw 5 dup(0)
d dd 555 h
8) a db 34,6,3,-8,-2
b db „Ahoj“, „$“
c dw 6 dup(0),‘$‘,10,13
d dw -68,46h,7 dup(0)
9) a db 45,16
b db 5 dup(?),10,13 „$“
c dw 55 dup(0)
d dd 34567h
10) a db 76,87,92,45h
b db 20 dup(‘$’),10.13
c db „qwert“
d dw 10 dup(0)
11) pridať 78,34,67
b db „Výsledok“, „$“
c db 16 dup(0),‘$‘,10,13
12) a db 73,74,75,77,78,-67
b db 15 dup(‘?’),10,13
cdd 777 h
13) a db 24,76,-56
b db „abc“,11101b
c dd 45,4 dup(?)
d dw 4 dup(0),8,3
14) a db “testul_nr_2”,13,10
b db -18,-22,18h,2 dup(0)
c dw 81,-16,44,18
d dd 568ABh
15) pridať 87,45h,-9
b db 10 dup(?)
c db “test_1$”
d dw 4 dup(0),2,7
16) a db "Matematica",10,13
b db 10,20h,2 dup(0)
c dw 60,30,-10,-20,-50
d dd 56789 Bh

a) určiť, koľko bajtov je pridelených týmito smernicami;
b) určiť adresy, kde sa každá z premenných nachádza.

Hexadecimálna číselná sústava(tiež známy ako hexadecimálny kód) je pozičný číselný systém so základom celého čísla 16. V literatúre sa niekedy používa aj výraz hex (vyslovuje sa hex, skratka anglického hexadecimálneho). Číslice tohto číselného systému sa zvyčajne používajú v arabských čísliciach 0-9, ako aj prvé znaky latinskej abecedy A-F. Písmená zodpovedajú nasledujúcim desatinným hodnotám:

  • * A-10;
  • *B-11;
  • *C-12;
  • * D -13;
  • * E - 14;
  • * F - 15.

Desať arabských číslic spolu so šiestimi latinskými písmenami teda tvorí šestnásť číslic systému.

Mimochodom, na našej webovej stránke môžete pomocou Online kalkulačky kódov previesť akýkoľvek text na desiatkový, hexadecimálny, binárny kód.

Aplikácia. Hexadecimálny kódširoko používaný v nízkoúrovňovom programovaní, ako aj v rôznych počítačových referenčných dokumentoch. Obľúbenosť systému je odôvodnená architektonickými riešeniami moderné počítače: Majú bajt (pozostávajúci z ôsmich bitov) ako minimálnu jednotku informácie – a hodnota bajtu sa pohodlne zapisuje pomocou dvoch hexadecimálnych číslic. Hodnota bajtu sa môže pohybovať od #00 do #FF (0 až 255 v desiatkovom zápise) - inými slovami, pomocou hexadecimálny kód, môžete zapísať akýkoľvek stav bajtu, pričom v nahrávke nie sú použité žiadne „extra“ číslice.

Zakódované Unicode Na zaznamenanie čísla znaku sa používajú štyri hexadecimálne číslice. Zápis farieb RGB (červená, zelená, modrá) tiež často používa hexadecimálny kód (napríklad #FF0000 je zápis jasne červenej farby).

Metóda zápisu hexadecimálneho kódu.

Matematický spôsob písania. V matematickom zápise sa základ sústavy zapisuje v desatinnej forme ako dolný index napravo od čísla. Desatinný zápis čísla 3032 možno zapísať ako 3032 10, v šestnástkovej sústave bude mať toto číslo zápis BD8 16.

V syntaxi programovacích jazykov. Syntax rôznych programovacích jazykov nastavuje rozdielne formát na písanie čísla hexadecimálny kód:

* Syntax niektorých druhov assembleri používa latinské písmeno „h“, ktoré je umiestnené napravo od čísla, napríklad: 20Dh. Ak číslo začína latinským písmenom, potom sa pred neho umiestni nula, napríklad: 0A0Bh. Toto sa robí s cieľom rozlíšiť hodnoty pomocou konštánt od konštánt. hexadecimálny kód;

* V iných variantoch assembleru, ako aj v Pascale (a jeho variantoch, ako je Delphi) a niektorých základných dialektoch sa používa predpona „$“: $A15;

* V značkovacom jazyku HTML, ako aj v kaskádovaní CSS súbory, na označenie farby vo formáte RGB s hexadecimálnym zápisom sa používa predpona „#“: #00DC00.

Ako previesť hexadecimálny kód do iného systému?

Konvertovať z hexadecimálneho na desiatkové. Ak chcete vykonať operáciu prevodu zo šestnástkovej sústavy do desiatkovej sústavy, musíte pôvodné číslo znázorniť ako súčet súčinov číslic v číslicách šestnástkového čísla a mocniny základu.

Binárne SS

hex SS

Napríklad musíte preložiť hexadecimálne číslo A14: má tri číslice. Pomocou pravidla to zapíšeme ako súčet mocnin so základom 16:

A14 16 = 10,16 2 + 1,16 1 + 4,16 0 = 10,256 + 1,16 + 4,1 = 2560 + 16 + 4 = 2580 10

Prevod čísel z binárnych do hexadecimálnych a naopak.

Na preklad sa používa notebooková tabuľka. Ak chcete previesť číslo z binárneho na desiatkové číslo, musíte ho rozdeliť na samostatné tetrády sprava doľava a potom pomocou tabuľky nahradiť každú tetrádu zodpovedajúcou hexadecimálnou číslicou. Navyše, ak počet číslic nie je násobkom štyroch, potom je potrebné pridať zodpovedajúci počet núl napravo od čísla, aby sa celkový počet binárnych číslic stal násobkom štyroch.

Tabuľka zošitov na preklad.

Ak chcete previesť zo šestnástkovej sústavy na binárnu, musíte vykonať opačnú operáciu: nahradiť každú číslicu tetrádou z tabuľky.

Binárne SS

Osmičková SS

Príklad prevod zo šestnástkovej sústavy na dvojkovú: A5E 16 = 1010 0101 1110 = 101001011110 2

Príklad prevod z binárneho na hexadecimálny: 111100111 2 = 0001 1110 0111 = 1E7 16

V tomto príklade nebol počet číslic v pôvodnom binárnom čísle štyri (9), takže boli pridané úvodné nuly pre celkový počet číslic 12.

Automatický preklad. Rýchly prevod zo systému hexadecimálnych čísel na jeden z troch populárnych systémov (binárny, osmičkový a desiatkový), ako aj spätný prevod, je možné vykonať pomocou štandardnej kalkulačky, ktorá je súčasťou operačného systému Windows. Otvorte kalkulačku, z ponuky vyberte Zobraziť -> Programátor. IN tento režim môžete nastaviť číselný systém používaný v tento moment(pozri menu vľavo: Hex, Dec, Oct, Bin). V tomto prípade zmena aktuálneho číselného systému automaticky vytvorí preklad.

1. Úvod

2. Všeobecné informácie o assembleri

3. Softvérová časť

· Popis programu

· Etapy vývoja montážnych programov ___

· Program na prevod desiatkových čísel na binárne a hexadecimálne číselné sústavy

4. Referencie


Úvod

Nástroje zabezpečujúce fungovanie výpočtovej techniky sú rozdelené na 2 časti: hardvér a softvér.

Hardvér obsahuje nasledujúce zariadenia:

· centrálny procesor;

· RAM;

· periférne zariadenia;

Všetky vyššie uvedené zariadenia sú postavené na integrovaných obvodoch (IC).

Integrovaný obvod je mikroelektronický výrobok, ktorý vykonáva určité konverzné funkcie, má vysokú hustotu elektricky prepojených prvkov a komponentov a predstavuje jeden celok z hľadiska požiadaviek na preberanie a testovanie prevádzky.

Príkladom integrovaného obvodu sú obvody digitálnych zariadení: registre, sčítačky, polovičné sčítačky, počítadlá, kodéry, dekodéry atď.

Softvérová časť obsahuje: súbor programov a pravidiel so všetkou súvisiacou dokumentáciou, ktorá vám umožňuje používať počítač na riešenie rôznych problémov.

Program je úplná postupnosť strojových príkazov alebo operátorov programovacieho jazyka, ktoré definujú postupnosť akcií na vyriešenie určitého problému.

Úloha v našej práci je: prevod trojciferného desiatkového čísla na binárne a hexadecimálne číselné sústavy. Táto úloha je implementovaná pomocou jazyka symbolických adries. Tento nízkoúrovňový jazyk používa symbolické (mnemotechnické) zápisy pre strojové inštrukcie a adresy. Výhodou tohto jazyka je: po prvé, programy v ňom napísané vyžadujú podstatne menej pamäte; po druhé, znalosť tohto jazyka a výsledného strojového kódu dáva predstavu o architektúre stroja, čo je nepravdepodobné, že bude poskytnutá pri práci vo vysokoúrovňovom programovacom jazyku.


Všeobecné informácie o jazyku symbolických inštrukcií

Symbolický jazyk symbolických symbolov môže do značnej miery eliminovať nevýhody programovania strojového jazyka.

Jeho hlavnou výhodou je, že v jazyku symbolických inštancií sú všetky prvky programu prezentované v symbolickej forme. Konverzia symbolických názvov príkazov na ich binárne kódy je zodpovednosťou špeciálny program– assembler, ktorý oslobodzuje programátora od prácne náročnej práce a odstraňuje nevyhnutné chyby.

Symbolické názvy zadávané pri programovaní v jazyku symbolických inštancií zvyčajne odrážajú sémantiku programu a skratky príkazov odrážajú ich hlavnú funkciu. Napríklad: PARAM – parameter, TABLE – tabuľka, MASK – maska, ADD – sčítanie, SUB – odčítanie atď. atď. Takéto mená si programátor ľahko zapamätá.

Na programovanie v jazyku symbolických inštrukcií je potrebné mať komplexnejšie nástroje ako na programovanie v strojovom jazyku: potrebujete počítačové systémy založené na mikropočítači alebo PC so súpravou periférne zariadenia(alfanumerická klávesnica, znakový displej, plávajúci pohon a tlačové zariadenie), ako aj rezidentné alebo krížové programovacie systémy pre požadované typy mikroprocesorov. Assembler umožňuje efektívne písať a ladiť oveľa zložitejšie programy ako strojový jazyk (do 1 - 4 KB).

Jazyky symbolických inštrukcií sú strojovo orientované, t. j. závislé od strojového jazyka a štruktúry príslušného mikroprocesora, pretože v nich má každá inštrukcia mikroprocesora priradený špecifický symbolický názov.

Assemblerské jazyky poskytujú výrazné zvýšenie produktivity programátora v porovnaní so strojovými jazykmi a zároveň zachovávajú schopnosť využívať všetky softvérovo dostupné hardvérové ​​prostriedky mikroprocesora. To umožňuje skúseným programátorom písať programy, ktoré bežia za kratší čas a zaberajú menej pamäte ako programy napísané vo vysokoúrovňovom jazyku.

V tomto ohľade sú takmer všetky programy na ovládanie vstupných/výstupných zariadení (ovládačov) napísané v jazyku symbolických inštrukcií, a to aj napriek prítomnosti pomerne veľkého množstva jazykov na vysokej úrovni.

Pomocou assembleru môže programátor nastaviť nasledujúce parametre:

mnemotechnické pomôcky (symbolický názov) každého príkazu strojového jazyka mikroprocesora;

štandardný formát pre riadky programu napísaného v jazyku symbolických inštancií;

formát na špecifikovanie rôznych metód adresovania a možností príkazov;

formát na špecifikovanie znakových a celočíselných konštánt v rôzne systémy kalkul;

pseudopríkazy, ktoré riadia proces zostavovania (prekladania) programu.

V jazyku symbolických inštancií je program napísaný riadok po riadku, to znamená, že pre každý príkaz je priradený jeden riadok.

Pre mikropočítače postavené na základe najbežnejších typov mikroprocesorov môže existovať niekoľko variantov assembleru, ale zvyčajne je v praxi široko používaný jeden – ide o takzvaný štandardný assembler. V nasledujúcom texte sa budeme zaoberať štandardnými jazykmi symbolov.

Každý riadok programu napísaného v assembleri obsahuje štyri polia:

KOMENTÁR K OPERANDU ŠTÍTKU

Pole LABEL je nepovinné, označuje adresu pamäťovej bunky, v ktorej sa nachádza prvý bajt označeného príkazu. Štítky sa používajú ako prechodové adresy pre príkazy riadiaceho prenosu a vďaka ich prítomnosti nemôže programátor operovať s absolútnymi adresami, ale používať symbolické adresy, čo je oveľa pohodlnejšie. Označenie môže mať jeden až šesť znakov, pričom prvý z nich musí byť písmeno. Mnoho assemblerov povoľuje menovky ľubovoľnej dĺžky, no rozpoznáva sa iba prvých šesť znakov. Štítok nesmie obsahovať medzery ani interpunkčné znamienka. V niektorých assembleroch musí za posledným znakom označenia nasledovať dvojbodka.

V poli označenia musí byť každý štítok definovaný iba raz, ale odkazy naň možno použiť toľkokrát, koľkokrát je potrebné. V opačnom prípade assembler vydá diagnostickú správu o viacnásobne definovanom štítku.

Pole CODE obsahuje symbolický názov príkazu alebo pseudopríkazu, ktorý sa má vykonať. Mnemotechnická pomôcka pre väčšinu príkazov je skratka viet v angličtine, ktorá charakterizuje ich hlavnú funkciu.

Napríklad:

MOV (MOVE) - preniesť, vpred

ADD (ADDITION) - pridanie

SUB (SUBSTRACT) - odčítanie

LDA (NAKLADANIE PRIAMY

AKUMULÁTOR) - priame zaťaženie

INR (INSCREMENT

REGISTER) - prírastok registra

REGISTER) registrovať dekrement

Mnemotechniky príkazov sú kľúčové slová assembleru a ak nie sú zahrnuté v množine platných mnemotechnických pomôcok, assembler ohlási neplatný príkaz.

Pole OPERAND je zvyčajne definované v závislosti od poľa kódu inštrukcie. Môže obsahovať jeden alebo viac operandov oddelených čiarkami, alebo nemusí obsahovať žiadne operandy pre tie inštrukcie, ktoré pracujú s internými pracovnými registrami.

Operand je výraz obsahujúci mnemotechnickú notáciu, konštanty a operátory.

Najjednoduchšie operandy obsahujú jednu mnemotechnickú pomôcku alebo jednu konštantu.

Identifikátory vnútorných pracovných registrov, návestia a aktuálna hodnota programového počítadla môžu byť použité ako mnemotechnická pomôcka.

Konštanty môžu byť reprezentované v rôznych číselných sústavách.

Softvérová časť

Popis programy

V tejto práci sa pozrieme na jeden zo spôsobov prevodu čísla z desiatkovej sústavy do dvojkovej a šestnástkovej sústavy pomocou jazyka Assembly. Pred vytvorením programu podrobne zvážime, aké kroky je potrebné na to urobiť, to znamená, že napíšeme algoritmus na riešenie nášho problému. Aby mohol počítač spracovať údaje, musí tieto údaje zadať, čiže prvým krokom pri riešení nášho problému bude zadanie čísla. Druhým krokom v práci bude zobrazenie správy o zadanom čísle. Potom prevedieme desiatkové číslo do dvojkovej sústavy a na obrazovke zobrazíme naše číslo v binárnom ekvivalente. Ďalším krokom je prevod čísla na hexadecimálny ekvivalent a posledným krokom je slučka, ktorá vám umožní pokračovať v zadávaní nového desatinného čísla. Teraz si spojme všetky body:

1. Zadanie čísla z klávesnice.

2. Zobrazte správu o zadanom čísle.

3. Prevod čísla na jeho binárny ekvivalent.

4. Zobrazte binárne číslo.

5. Prevod čísla na šestnástkové.

6. Zobrazte hexadecimálne číslo.

7. Cyklus (budeme pokračovať?) ak ÁNO, tak bod 1, inak bod 8

8. Ukončite program.

Toto je algoritmus programu v prirodzenom jazyku.

fázy vývoja programov assembleru

1. Vyjadrenie problému. Obsahuje zmysluplný popis problému a vývoj algoritmu.

2. Vývoj programového textu.

3. Zadávanie textu do počítača. Text programu v mnemotechnických kódoch sa zadáva do počítača pomocou ľubovoľného textového editora. Tým sa vytvorí aj textový súbor s príponou *.ASM.

4. Kompilácia alebo zostava. Prebieha konverzia textový súbor s príponou *.ASM do objektového súboru obsahujúceho program v strojovom kóde s príponou *.OBJ. V tejto fáze je možné vytvoriť aj zoznam programov. Súbor s príponou *.LST, ktorý obsahuje základné informácie o programe, ako aj Cross-Reference File s príponou *.CRF. V tejto fáze sa skontrolujú chyby v texte programu. Zostavenie sa vykonáva pomocou prekladateľského programu TASM.EXE (ASM.EXE - v assembleri, MASM.EXE - v makro assembleri). TASM [options] *.ASM [,] - príkaz na vykonanie prekladu. Ak je v príkaze zadaná jedna čiarka, vygeneruje sa súbor výpisu. TASM má dve možnosti: /ZI a /N. Nazývajú sa: TASM.

5. Rozloženie. V tejto fáze sa vytvorí premiestniteľný program, ktorý je možné načítať do ľubovoľnej oblasti pamäte. Uložené v súbore s príponou *.EXE alebo *.COM. Na to použite TLINK.exe (pre makra assembler LINK.EXE). Možnosti sú /T a /X.

6. Vykonávanie a ladenie (DEBUG).

7. Zadanie strojového kódu programu do ROM (môže chýbať) Teraz sa pozrieme na blokovú schému nášho programu, teda na zoradené akcie.


; PROGRAM NA PREVÁDZKU desiatkového čísla na; BINÁRNE A HEXADECIMÁLNE SYSTÉMY; KUMULÁCIE

;Údajový segment

;Konverzná tabuľka„číslica – ASCII-kód

tabl_ascii db "0123456789abcdef"

;____________________________________________________________________

;Konverzná tabuľka"ASCII-kód - číslo

db 0,1,2,3,4,5,6,7,8,9

db 0ah, 0bh, 0ch, 0dh, 0eh, 0fh

;____________________________________________________________________

;Rezervácia a inicializácia premenných v pamäti

x_ascii db 20h dup(?)

t1 db 0dh,0ah,"Zadajte číslo a stlačte Enter"

db 0dh, 0ah, "$"

t2 db 0dh,0ah,"Zadali ste číslo",0dh,0ah "$"

t3 db 0dh, 0ah, "V binárnom formáte to vyzerá takto"

t4 db 0dh, 0ah, "Takto v šestnástkovej sústave"

db 0dh, 0ah, "$"

buf db 16 dup(?),"$"

t5 db 0dh,0ah, "Budeme pokračovať v procese? (Á/N)?"

;____________________________________________________________________

; Segment kódu

;Hlavný postup

d: lea dx, t1

;Postup pri zadávaní desatinného čísla

;Postup pre zobrazenie desatinného čísla

r1: mov dl,

; Prevod čísla (desatinného) na binárne

v1: mul si

;Postup zobrazenia binárneho čísla

; Postup prevodu čísla (dvojkového) na hexadecimálne

; a zobrazte ho na obrazovke

Poznámky :

Nižšie sú uvedené príkazy používané v programe:

sub– binárne odčítanie. Odčíta obsah druhého operandu od prvého operandu

Mnemotechnické pomôcky:sub< operand 1>,< operand 2>

hovor– volanie procedúry. Prenesie riadenie na procedúru, ktorej adresa je určená operandom; po dokončení procedúry pokračuje vykonávanie príkazom nasledujúcim po príkaze call

Mnemotechnické pomôcky: zavolať< názov procedúry>

ret– návrat k postupu

shr– pohybujte sa logicky doprava

xor– výhradné OR

Mnemotechnické pomôcky:xor<операнд 1>,<операнд 2>

lea– stiahnite si EA

Mnemotechnické pomôcky:lea reg,<операнд>

TAM– zahrnúť do zásobníka

Mnemotechnické pomôcky: TAM< operand>

pop– získať zo zásobníka

Mnemotechnické pomôcky: pop<операнд>

mov– dopredu

Mnemotechnické pomôcky:mov< prijímač>,<источник>

Inc- zvýšenie o 1

Mnemotechnické pomôcky:inc<операнд>

dec- zníženie o 1

Mnemotechnické pomôcky: dec< operand>

stosb– preposiela spojenia do registra al alebo ax, na ktorý ukazuje register di

slučka– príkaz na organizáciu slučky s počítadlom, aj krátke prechody (127b) príkaz zníži hodnotu počítadla cx bez zmeny akýchkoľvek príznakov, ak je spojenie cx > 0, vykoná sa prechod na dané označenie, inak sa slučka končí.

Mnemotechnické pomôcky: slučka< štítok>

.KÓD– otvorí segment kódu

. ÚDAJE-- otvorí dátový segment

.STOH N– definuje zásobník segmentov (a); Direktívy uzatvárania segmentov sa v tomto prípade nepoužívajú; N – zobrazuje veľkosť zásobníka (a) v bajtoch

Poznámka : Pri použití takýchto direktív sa register ds inicializuje takto: mov ax,@data

mov ds,ax

predpokladať sa v tomto prípade nepoužíva

Bibliografia

1. "Som jazykom symbolov pre IBM PC a programovanie" absolventská škola 1992.

2. Rádio a komunikácia „Osobný počítač IBM a operačný systém MS-DOS“ 1991.

3. Ilyushechkin V.N., Kostin A.E., Khokhlov M.M. „Systémový softvér“, M., „Vysoká škola“, 1987

4. Norton P., Souhe D. “Assembly language for the IBM PC”, M., Publishing House “Computer”, 1993

Ahoj! Je tam tento riadok:

Var BD 2,2,3,3,4,4; 223344 desiatkové 6-miestne číslo v rozbalenom formáte s zvýšená presnosť(formát ASCII)

Ako môžem previesť toto číslo 223344 na hexadecimálne číslo? Našiel som tento kód, ktorý prevádza z jednociferných a dvojciferných desiatkových čísel na šestnásťmiestne:

; Var. 17. Zadná časť 1. Napíšte podprogram na konverziu nejakého poľa desatinných miest; ASCII bajtov. do poľa BCD bajtov. Použite tento podprogram na spracovanie dvoch polí; Použite zásobník na odovzdanie parametrov. Menný program ; Popis konštánt Popis premenných Údajový segment x1 db 2h db 1h db 3h db 1h db 4h db 1h ; čísla vo formáte ASCII y1 db 3 dup (?) ; pole vo formáte BCD x2 db 8h ;98 db 9h db 5h ;95 db 9h db 7h ;87 db 8h db 2h ;92 db 9h ; pole rozkl. ASCII bajty Y2 db 4 dup (?) ; pole rozkl. BCD bajty Dátové konce Zásobník SEGMENT DW 16 dup(?) StkTOp LABEL slovo Zásobník končí Kód SEGMENT PREDPOKLADAŤ CS: Kód, DS: Údaje, ES: Údaje, SS: Zásobník ; Tu sú popísané podprogramy abc proc push bp mov bp, sp. prichytiť na vrch zásobníka mov cx, ; čítanie parametrov zo zásobníka (počet čísel) mov di, ; adresa premennej Y1 mov si, ; adresa premennej X1 M1: mov al, +1 ; načítať prvé číslo vo formáte ASCII shl ax, 1 ; posunutie o 4 číslice doprava shl ax, 1 shl ax ,1 shl ax, 1 alebo al, ;obnovte číslo, ktoré ste si zapamätali mov , al ; napíšte číslo vo formáte BCD inc si ; prejsť na iné číslo inc si inc di ; upraviť BCD adresy - čísla dec cx ; znížiť počet čísel jnz M1 ; ak sa nevyčerpali, prejdite na M1 pop BP ret 6 abc endp ; Hlavný program Štart: mov AX, Data mov DS, AX mov ES, AX mov Ax, Stack mov SS, AX mov SP, offset StkTop ; načítať parametre do zásobníka podľa podmienok úlohy mov ax, offset x1 ; načítať adresu prvého poľa push axe mov ax, offset Y1 ; načítať adresu výsledku push axe mov ax, 3 ; počet čísel push ax call abc ; volanie podprogramu mov ax, posun x2 ; načítať adresu druhého poľa push axe mov ax, offset Y2 ; načítať adresu výsledku push axe mov ax, 4 ; počet čísel push ax call abc ; volanie kódu podprogramu končí koniec štart