Heksadecimalni kod. Sažetak: Program za pretvaranje decimalnog broja u binarni i heksadecimalni brojevni sustav Program za pretvaranje decimalnog broja u binarni asembler

1. Osnovni brojevni sustavi. Deklaracije podataka u asembleru

Cilj rada: upoznavanje učenika s brojevnim sustavima - binarnim, oktalnim, heksadekadskim; prikaz podataka u memoriji računala, direktive o dodjeli memorije.

Teorijski dio

Najmanja jedinica informacija koja se može pohraniti u računalo je malo (eng. malo - dvo nary digi t ), tj. 0 ili 1. Bit je atom informacije, ne može se podijeliti. Bitovi su grupirani u skupine od 8 kako bi formirali bajt. Informacije kojima manipulira računalo su niz binarnih brojeva. Od 8 bitova može se formirati 256 kombinacija. Ove se kombinacije koriste za kodiranje velikih i malih slova, brojeva i posebnih znakova.

Za mjerenje informacija na računalu koriste se sljedeće veličine:

1 Kilobajt = 1 KB = 2 10 bajtova = 1024 bajta;

1 megabajt = 1 MB = 2 20 bajtova = 1024 KB;

1 Gigabajt = 1 GB = 230 bajtova = 1024 MB.

Sustavi brojeva

Brojevni sustav je skup pravila i brojeva za predstavljanje brojeva. Za bilo koji pozicijski brojevni sustav, broj znamenki koje treba predstaviti jednak je bazi brojevnog sustava, na primjer, za binarni sustav baza je broj 2, dakle, za predstavljanje brojeva, dvije znamenke 0 i 1 su potrebno, za heksadecimalni brojevni sustav to je 0, 1, 2, ..., 9 , A, B, C, D, E, F, gdje slova odgovaraju vrijednostima 10, 11, 12, 13, 14 odnosno 15.

Da bi se razlikovali brojevni sustavi, slovo se stavlja na kraj broja: B za binarni, Q za oktalni, D za decimalni i H za heksadecimalni. Za decimalni broj D nije potreban.

Ako je broj zapisan u b-arnom brojevnom sustavu u obliku

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

tada se u decimalnom brojevnom sustavu njegova vrijednost može prikazati kao zbroj znamenki pomnožen s bazom brojevnog sustava na potenciju koja je jednaka broju položaja znamenke u broju (numeriranje počinje od 0, s desna na lijevo):

Nr(10) = C n *b n +C n-1 *b n-1 +…+C 2 *b 2 +C 1 *b 1 +C 0 *b 0 +D 1 *b -1 +D 2 * b –2 +D 3 *b –3 +...

Na primjer:

Neka su dana dva binarna broja 11b, 1100011b. Pretvorimo ove brojeve u decimalni brojevni sustav:

11b =1*2 1 +1*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.

Pogledajmo primjere pretvaranja oktalnog broja u decimalni brojevni sustav:

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

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

Primjer pretvaranja heksadecimalnih brojeva u decimalne:

11h = 1*16 1 +1*16 0 =17;

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

Za pretvaranje brojeva iz decimalni sustav u binarnom ili heksadecimalnom obliku koristi se cjelobrojno dijeljenje. Broj se dijeli s bazom brojevnog sustava dok se ne dobije nedjeljivi ostatak. Kvocijent dobiven dijeljenjem ponovno se dijeli i proces završava kada i kvocijent postane nedjeljiv. Ostaci dobiveni dijeljenjem zapisuju se obrnutim redom. Na dijagramu je prikazana pretvorba broja 25 u binarni brojevni sustav, čime se dobiva broj 11001b, kao i pretvorba broja 418 u heksadecimalni brojevni sustav, čime se dobiva broj 1A2h, s obzirom da je broj deset A.

Za pretvaranje brojeva iz heksadecimalnog sustava u binarni sustav i obrnuto koristi se sljedeća činjenica: svaka heksadecimalna znamenka odgovara četverobitnom binarnom broju i obrnuto, kako je prikazano u tablici. Slijedom toga, kod pretvorbe iz heksadecimalnog sustava u binarni sustav potrebno je za svaku heksadecimalnu znamenku zapisati njen binarni kod, a pri pretvorbi natrag binarni broj se s desna na lijevo dijeli na skupine od četiri znamenke i heksadecimalnu korespondenciju. napisano je za njih.

Tablica korespondencije između heksadecimalnih znamenki i binarnih brojeva.

Na primjer, pretvorimo broj 1FDh u binarnu reprezentaciju:

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

Pretvorimo binarni broj 1110100101b u heksadecimalni prikaz: 0011-1010-0101b = 3A5.

Predstavljanje cijelih brojeva u memoriji računala

Binarni brojevni sustav koristi se za predstavljanje informacija na računalu. Za pohranjivanje cijelih brojeva koristi se strogo fiksan broj bitova: 8, 16, 32, 64. U n binarnih pozicija možete napisati cijeli broj s predznakom u rasponu od -2 n-1 do 2 n-1 -1. Pozicije su numerirane od 0 do n-1 s desna na lijevo. Na primjer, broj 67 u osam binarnih pozicija bio bi predstavljen kao 01000011b. Brojevi bez predznaka mogu se prikazati u rasponu od 0 do 2 n -1.

Cijeli broj može biti pohranjen u obliku komplementa dvojke ili komplementa dvojke. Za predstavljanje predznaka broja koristi se bit koji se naziva bit predznaka. Nalazi se na poziciji n-1 i najvažniji je bit broja. Za pozitivne brojeve ovaj bit je nula, za negativne brojeve je jedan.

Izravni kod koristi se za pohranjivanje pozitivnih ili nepredznačenih brojeva.

Dodatni kod koristi se za pohranjivanje negativnih brojeva. Da biste dobili reprezentaciju broja u dodatni kod Prvo se pronalazi izravni kod modula broja, a zatim njegov inverzni kod. Obrnuti kod dobiva se okretanjem svake znamenke binarni prikaz brojevi: 0 se pretvara u 1, a 1 u 0. U zadnjem koraku u obrnuti kod 1 je dodan.

Na primjer, za predstavljanje broja -65 imamo:

01000001b izravni brojčani kod +65

10111110b povratni kod

10111111b dodatni broj kod -65

Kod komplementa dvojke koristi se za zamjenu operacije oduzimanja cijelih brojeva operacijom zbrajanja s brojem predstavljenim u kodu komplementa dvojke. U tom slučaju procesor ne treba izvoditi operaciju oduzimanja cijelih brojeva.

Vrste podataka

BAJT. Ovaj tip podataka zauzima 1 bajt (8 bita). Pomoću ove vrste možete šifrirati cijeli broj s predznakom u rasponu od -128 do +127 ili cijeli broj bez predznaka u rasponu od 0 do 255, bilo koji ASCII znak koji je također kodiran kao cijeli broj. Direktiva o definiciji – D.B.(Definirajte bajt).

RIJEČ. Ovaj tip podataka zauzima 2 bajta (16 bita). Na varijablu ove vrste Možete postaviti cijeli broj u rasponu od -32768 do +32767 ili 0 do 65535, dva ASCII znaka ili relativnu memorijsku adresu tipa near. U tom se slučaju upisivanje u memoriju vrši na sljedeći način: niži dio broja nalazi se na nižoj adresi, a viši dio na visokoj adresi. To vrijedi i za druge vrste podataka. Na primjer, ako se heksadecimalni cijeli broj 1234h nalazi na adresi 1000h, tada će se niži dio 34h nalaziti na adresi 1000h, a 12h na adresi 1001h. Direktiva o definiciji – DW(Definiraj riječ).

DWORD– 4 bajta (2 riječi) mogu sadržavati 32-bitni cijeli broj s predznakom ili bez predznaka, broj s pomičnim zarezom, 32-bitnu memorijsku adresu ili 4 ASCII znaka. Prilikom pohranjivanja adrese, adresa segmenta nalazi se u dva visoka bajta, a pomak je u niža dva bajta memorije. Direktiva o definiciji – dd(Definirajte dvostruku riječ).

QWORD– 8 bajtova. Može biti cijeli broj s predznakom ili bez predznaka, broj ili broj s pomičnim zarezom dvostruke preciznosti. Direktiva o definiciji – DQ(Definirajte Quad).

TEN-BAJTOVI– 10 bajtova. Koristi se za pohranu podataka u glavnu memoriju ili koprocesor. Može biti upakirani BCD broj, prošireni cijeli broj ili prošireni broj s pomičnim zarezom. Direktiva o definiciji - D.T.(Definirajte deset bajtova).

Opća sintaksa za definiranje podataka je:

< Ime> < tip> < popisvrijednosti>

< Ime> < tip> < broj>dup (izraz),

Gdje Ime– identifikator, tip– jedna od gore raspravljenih direktiva o dodjeli memorije, popis vrijednosti– popis koji može sadržavati znakovne ili numeričke konstante. Također može sadržavati simbol ? , ako je vrijednost nedefinirana, ili adresa - naziv varijable ili oznaka, niz ASCII znakova unutar navodnika ili apostrofa. Direktiva dup specificira ponavljanje vrijednosti definiranih navedenim izrazom <число> jednom. Izraz može biti konstanta, konstante kombinirane predznacima aritmetičke operacije, popis vrijednosti ili simbol ? , ako je vrijednost nedefinirana.

Na primjer,

var_a db 2 dup (0, 3 dup (1)) ; ekvivalentno 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

Odredimo veličinu memorije dodijeljenu za svaku od sljedećih varijabli:

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

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

Ukupan broj bajtova dodijeljenih ovim direktivama je 41 bajt. Varijabla m1 nalazi se na relativnoj adresi 00h, m2 – 04h, m3 – 09h i m4 – 021h.

Individualni zadaci:

1. Pretvorite decimalne brojeve u binarni, heksadecimalni i oktalni brojevni sustav:

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. Pretvorite heksadecimalne brojeve u binarne:

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. Pretvorite binarne brojeve u oktalne i heksadecimalne brojevne sustave:

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. Predstavite sljedeće brojeve u komplementarnom kodu:

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. Date su sljedeće definicije varijabli:

1) a db 45,16,76,-6
bdb "abcd"
cdw 15 dup(0),3,3
d dd 345h
2) dodati 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 “Pozdrav”,10,13
b db -16,-20,13h,2 dup(0)
c dw 62.34,-15
d dd 456C9h,4567
4) a 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.23h
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 555h
8) db 34,6,3,-8,-2
b db "Zdravo",'$'
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) dodati 78,34,67
b db “Rezultat”, ‘$’
c db 16 dup(0),'$',10,13
12) a db 73,74,75,77,78,-67
b db 15 dup('?'),10,13
cdd 777h
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) dodati 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 56789Bh

a) odrediti koliko je bajtova dodijeljeno ovim direktivama;
b) odrediti adrese na kojima se nalazi svaka od varijabli.

Heksadekadski brojevni sustav(također poznat kao heksadecimalni kod) je položajni brojevni sustav s cjelobrojnom bazom 16. Izraz hex (izgovara se hex, skraćenica za engleski hexadecimal) također se ponekad koristi u literaturi. Znamenke ovog brojevnog sustava obično se koriste u arapskim brojevima 0-9, kao i prvim znakovima latinične abecede A-F. Slova odgovaraju sljedećim decimalnim vrijednostima:

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

Dakle, deset arapskih brojeva, zajedno sa šest latiničnih slova, čine šesnaest znamenki sustava.

Usput, na našoj web stranici možete pretvoriti bilo koji tekst u decimalni, heksadecimalni, binarni kod pomoću Online Code Calculator.

Primjena. Heksadecimalni kod naširoko se koristi u programiranju niske razine kao iu raznim računalnim referentnim dokumentima. Popularnost sustava opravdana je arhitektonskim rješenjima moderna računala: Imaju bajt (koji se sastoji od osam bitova) kao minimalnu informacijsku jedinicu - a vrijednost bajta je prikladno zapisana pomoću dvije heksadecimalne znamenke. Vrijednost bajta može biti u rasponu od #00 do #FF (0 do 255 u decimalnom zapisu) - drugim riječima, korištenjem heksadecimalni kod, možete napisati bilo koje stanje bajta, dok nema "dodatnih" znamenki koje se ne koriste u snimanju.

Kodirano Unicode Za zapis broja znakova koriste se četiri heksadecimalne znamenke. RGB oznaka boja (crvena, zelena, plava) također često koristi heksadecimalni kod (na primjer, #FF0000 je oznaka svijetle crvene boje).

Metoda za pisanje heksadecimalnog koda.

Matematički način pisanja. U matematičkom zapisu, baza sustava je zapisana u decimalnom obliku kao indeks desno od broja. Decimalni zapis broja 3032 može se napisati kao 3032 10, u heksadecimalnom sustavu taj broj će imati oznaku BD8 16.

U sintaksi programskih jezika. Sintaksa različitih programskih jezika različito postavlja format za korištenje broja heksadecimalni kod:

* Sintaksa nekih varijanti asemblerskog jezika koristi latinično slovo "h", koje se nalazi desno od broja, na primjer: 20Dh. Ako broj počinje latiničnim slovom, ispred njega se stavlja nula, na primjer: 0A0Bh. To je učinjeno kako bi se razlikovale vrijednosti koje koriste konstante od konstanti. heksadecimalni kod;

* U drugim varijantama asemblera, kao iu Pascalu (i njegovim varijantama, kao što je Delphi) i nekim osnovnim dijalektima, koristi se prefiks “$”: $A15;

* U HTML jeziku za označavanje, kao iu kaskadnom CSS datoteke, za označavanje boje u RGB formatu s heksadecimalnim zapisom koristi se prefiks “#”: #00DC00.

Kako pretvoriti heksadecimalni kod u drugi sustav?

Pretvori iz heksadecimalnog u decimalni. Da biste izvršili operaciju pretvorbe iz heksadecimalnog sustava u decimalni sustav, trebate predstaviti izvorni broj kao zbroj proizvoda znamenki u znamenkama heksadecimalnog broja i snage baze.

Binarni SS

hex SS

Na primjer, trebate prevesti heksadecimalni broj A14: ima tri znamenke. Koristeći pravilo, zapisujemo ga kao zbroj potencija s bazom 16:

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

Pretvaranje brojeva iz binarnih u heksadecimalne i obrnuto.

Za prijevod se koristi stol za bilježnice. Da biste pretvorili broj iz binarnog u decimalni, trebate ga podijeliti u zasebne tetrade s desna na lijevo, a zatim pomoću tablice zamijeniti svaku tetradu odgovarajućom heksadecimalnom znamenkom. Štoviše, ako broj znamenki nije višekratnik četiri, tada je potrebno dodati odgovarajući broj nula desno od broja tako da ukupni broj binarnih znamenki postane višekratnik četiri.

Tablica bilježnica za prevođenje.

Za pretvorbu iz heksadecimalnog u binarni, morate izvršiti obrnutu operaciju: zamijenite svaku znamenku tetradom iz tablice.

Binarni SS

Oktalni SS

Primjer pretvorba iz heksadecimalnog u binarni: A5E 16 = 1010 0101 1110 = 101001011110 2

Primjer pretvorba iz binarnog u heksadecimalni: 111100111 2 = 0001 1110 0111 = 1E7 16

U ovom primjeru, broj znamenki u izvornom binarnom broju nije bio četiri (9), pa su dodane vodeće nule za ukupan broj znamenki od 12.

Automatski prijevod. Brza konverzija iz heksadecimalnog brojevnog sustava u jedan od tri popularna sustava (binarni, oktalni i decimalni), kao i obrnuta konverzija, mogu se izvesti pomoću standardnog kalkulatora koji je uključen u Windows OS. Otvorite kalkulator, odaberite View -> Programmer iz izbornika. U ovaj način rada možete postaviti sustav brojeva koji se koristi u ovaj trenutak(pogledajte izbornik s lijeve strane: Hex, Dec, Oct, Bin). U ovom slučaju, promjena trenutnog brojevnog sustava automatski proizvodi prijevod.

1. Uvod

2. Opće informacije o asemblerskom jeziku

3. Softverski dio

· Opis programa

· Faze razvoja montažnih programa ___

· Program za pretvaranje decimalnih brojeva u binarne i heksadecimalne brojevne sustave

4. Literatura


Uvod

Alati koji osiguravaju funkcioniranje računalne tehnologije dijele se na 2 dijela: hardver i softver.

Hardver uključuje sljedeće uređaje:

· središnji procesor;

· RADNA MEMORIJA;

· periferne jedinice;

Svi gore navedeni uređaji izgrađeni su na integriranim krugovima (IC).

Integrirani sklop je mikroelektronički proizvod koji obavlja određene pretvorbene funkcije, ima visoku gustoću pakiranja međusobno električno povezanih elemenata i komponenti te predstavlja jedinstvenu cjelinu u smislu zahtjeva za prijem i ispitivanje rada.

Primjer IC-a su sklopovi digitalnih uređaja: registri, zbrajači, polu-zbrajači, brojači, koderi, dekoderi itd.

Softverski dio uključuje: skup programa i pravila sa svom pripadajućom dokumentacijom, koji vam omogućava korištenje računala za rješavanje raznih problema.

Program je kompletan niz strojnih naredbi ili operatora programskog jezika koji definiraju niz radnji za rješavanje određenog problema.

Zadatak u našem radu je: pretvaranje troznamenkastog decimalnog broja u binarni i heksadekadski brojevni sustav. Ovaj zadatak je implementiran korištenjem asemblerskog jezika. Ovaj jezik niske razine koristi simboličke (mnemoničke) notacije za strojne upute i adrese. Prednost ovog jezika je: prvo, što programi napisani u njemu zahtijevaju znatno manje memorije; drugo, poznavanje ovog jezika i rezultirajućeg strojnog koda daje ideju o arhitekturi stroja, što je malo vjerojatno da će se pružiti kada se radi u programskom jeziku visoke razine.


Opće informacije o asemblerskom jeziku

Simbolički asemblerski jezik može uvelike eliminirati nedostatke programiranja strojnog jezika.

Njegova glavna prednost je što su u asemblerskom jeziku svi programski elementi prikazani u simboličkom obliku. Pretvaranje simboličkih naziva naredbi u njihove binarne kodove odgovornost je poseban program– asembler koji oslobađa programera od napornog rada i eliminira neizbježne greške.

Simbolični nazivi uneseni prilikom programiranja u asemblerskom jeziku obično odražavaju semantiku programa, a kratica naredbi odražava njihovu glavnu funkciju. Na primjer: PARAM – parametar, TABLE – tablica, MASK – maska, ADD – zbrajanje, SUB – oduzimanje itd. itd. Takve nazive programer lako pamti.

Za programiranje u asemblerskom jeziku potrebno je imati složenije alate nego za programiranje u strojnom jeziku: potrebni su vam računalni sustavi temeljeni na mikroračunalu ili PC-u sa skupom periferni uređaji(alfanumerička tipkovnica, displej znakova, float pogon i uređaj za ispis), kao i rezidentni ili kros programski sustavi za potrebne tipove mikroprocesora. Asemblerski jezik vam omogućuje učinkovito pisanje i uklanjanje pogrešaka u mnogo složenijim programima od strojnog jezika (do 1 - 4 KB).

Asemblerski jezici su strojno orijentirani, tj. ovisni o strojnom jeziku i strukturi odgovarajućeg mikroprocesora, budući da se u njima svakoj instrukciji mikroprocesora dodjeljuje određeno simboličko ime.

Asemblerski jezici pružaju značajno povećanje produktivnosti programera u usporedbi sa strojnim jezicima i istovremeno zadržavaju mogućnost korištenja svih softverski dostupnih hardverskih resursa mikroprocesora. To omogućuje vještim programerima da napišu programe koji se izvode u kraćem vremenu i zauzimaju manje memorije od programa napisanih na jeziku visoke razine.

S tim u vezi, gotovo svi programi za upravljanje ulazno/izlaznim uređajima (pokretačima) napisani su na asemblerskom jeziku, unatoč prisutnosti prilično velikog raspona jezika visoke razine.

Koristeći asemblerski jezik, programer može postaviti sljedeće parametre:

mnemotehnika (simboličko ime) svake naredbe strojnog jezika mikroprocesora;

standardni format za retke programa napisan u asemblerskom jeziku;

format za određivanje različitih metoda adresiranja i opcija naredbi;

format za određivanje znakovnih i cjelobrojnih konstanti raznih sustava račun;

pseudonaredbe koje upravljaju procesom asemblera (prevođenja) programa.

U asemblerskom jeziku program se piše redak po redak, to jest, svakoj naredbi je dodijeljen jedan redak.

Za mikroračunala izgrađena na temelju najčešćih tipova mikroprocesora može postojati nekoliko varijanti asemblerskog jezika, ali obično se jedna široko koristi u praksi - to je takozvani standardni asemblerski jezik. U nastavku ćemo razmotriti standardne asemblerske jezike.

Svaka linija programa napisanog u asemblerskom jeziku sadrži četiri polja:

KOD OZNAKE OPERAND KOMENTAR

Polje LABEL nije obavezno; ono označava adresu memorijske ćelije u kojoj se nalazi prvi bajt označene naredbe. Oznake se koriste kao prijelazne adrese za naredbe prijenosa kontrole, a zahvaljujući njihovoj prisutnosti, programer ne može raditi s apsolutnim adresama, već koristiti simboličke adrese, što je mnogo zgodnije. Oznaka može imati jedan do šest znakova, od kojih prvi mora biti slovo. Mnogi asembleri dopuštaju oznake bilo koje duljine, ali se prepoznaju samo prvih šest znakova. Oznaka ne smije sadržavati razmake ili interpunkcijske znakove. U nekim asemblerima iza posljednjeg znaka oznake mora biti dvotočka.

U polju oznake, svaka oznaka mora biti definirana samo jednom, ali reference na nju mogu se koristiti onoliko puta koliko je potrebno. Inače će asembler izdati dijagnostičku poruku o višestruko definiranoj oznaci.

Polje CODE sadrži simbolički naziv naredbe ili pseudo-naredbe koju treba izvršiti. Mnemotehnika za većinu naredbi je kratica rečenica na engleskom jeziku koja karakterizira njihovu glavnu funkciju.

Na primjer:

MOV (MOVE) - prijenos, naprijed

ADD (ADDITION) - zbrajanje

SUBSTRACT (ODUZIMANJE) - oduzimanje

LDA (UČITAJ IZRAVNO

ACCUMULATOR) – izravno učitavanje

INR (POKRETANJE baterije

REGISTER) - prirast registra

REGISTER) dekrement registra

Mnemotehničke naredbe su ključne riječi asemblera i ako nisu uključene u skup važećih mnemonika, asembler prijavljuje nevažeću naredbu.

Polje OPERAND obično se definira ovisno o polju koda instrukcije. Može sadržavati jedan ili više operanda, odvojenih zarezima, ili ne može sadržavati operande za one instrukcije koje rade na internim radnim registrima.

Operand je izraz koji sadrži mnemoničku notaciju, konstante i operatore.

Najjednostavniji operandi sadrže jednu mnemotehniku ​​ili jednu konstantu.

Identifikatori internih radnih registara, oznaka i trenutne vrijednosti programskog brojača mogu se koristiti kao mnemotehnika.

Konstante se mogu prikazati u različitim brojevnim sustavima.

Softverski dio

Opis programa

U ovom radu ćemo pogledati jedan od načina pretvaranja broja iz decimalnog sustava u binarni i heksadecimalni pomoću asemblerskog jezika. Prije izrade programa, detaljno ćemo razmotriti koje korake treba poduzeti za to, odnosno, drugim riječima, napisat ćemo algoritam za rješavanje našeg problema. Da bi računalo obradilo podatke potrebno je unijeti te podatke, što znači da će prvi korak u rješavanju našeg problema biti unos broja. Drugi korak u radu bit će prikaz poruke o unesenom broju. Nakon toga pretvaramo decimalni broj u binarni sustav i prikazujemo naš broj u binarnom ekvivalentu na ekranu. Sljedeći korak je pretvaranje broja u heksadecimalni ekvivalent, a posljednji korak je petlja koja vam omogućuje nastavak unosa novog decimalnog broja. Sada spojimo sve točke zajedno:

1. Unos broja s tipkovnice.

2. Prikaz poruke o unesenom broju.

3. Pretvaranje broja u njegov binarni ekvivalent.

4. Prikaz binarnog broja.

5. Pretvaranje broja u heksadecimalni.

6. Prikažite heksadecimalni broj.

7. Ciklus (hoćemo li nastaviti?) ako DA onda točka 1, inače točka 8

8. Izađite iz programa.

Ovo je algoritam programa na prirodnom jeziku.

faze razvoja asemblerskih programa

1. Izjava problema. Uključuje smislen opis problema i razvoj algoritma.

2. Izrada programskog teksta.

3. Unos teksta u računalo. Tekst programa u mnemotehničkim kodovima unosi se u računalo pomoću bilo kojeg uređivača teksta. Ovo također stvara tekstualnu datoteku s ekstenzijom *.ASM.

4. Kompilacija ili asembler. Pretvorba u tijeku tekstualna datoteka s ekstenzijom *.ASM u objektnu datoteku koja sadrži program u strojnom kodu s ekstenzijom *.OBJ. Također u ovoj fazi može se izraditi popis programa. Datoteka s ekstenzijom *.LST, koja sadrži osnovne informacije o programu, kao i Cross-Reference File s ekstenzijom *.CRF. U ovoj se fazi provjerava grešaka u tekstu programa. Montaža se provodi pomoću programa prevoditelja TASM.EXE (ASM.EXE - u asembleru, MASM.EXE - u makro asembleru). TASM [opcije] *.ASM [,] - naredba za izvođenje prijevoda. Ako je u naredbi naveden jedan zarez, tada se generira datoteka popisa. TASM ima dvije opcije: /ZI i /N. Zovu se: TASM.

5. Izgled. U ovoj fazi stvara se program koji se može premjestiti i koji se može učitati u bilo koje područje memorije. Spremljeno u datoteku s ekstenzijom *.EXE ili *.COM. Da biste to učinili, koristite TLINK.exe (za makro asembler LINK.EXE). Opcije su /T i /X.

6. Izvršenje i otklanjanje pogrešaka (DEBUG).

7. Unos strojnog koda programa u ROM (može nedostajati) Sada ćemo pogledati blok dijagram našeg programa, odnosno naručene akcije.


; PROGRAM ZA PRETVARANJE DECIMALA U; BINARNI I HEKSADECIMALNI SUSTAVI; KUMULACIJE

;Segment podataka

;Tablica pretvorbe“znamenka – ASCII-kodirati

tabl_ascii db "0123456789abcdef"

;____________________________________________________________________

;Tablica pretvorbe“ASCII-kodni broj

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

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

;____________________________________________________________________

;Rezervacija i inicijalizacija varijabli u memoriji

x_ascii db 20h dup(?)

t1 db 0dh,0ah,"Unesite broj i pritisnite Enter"

db 0dh, 0ah, "$"

t2 db 0dh,0ah,"Unijeli ste broj",0dh,0ah "$"

t3 db 0dh, 0ah, "U binarnom obliku izgleda ovako"

t4 db 0dh, 0ah, "Ovako u heksadecimalnom obliku"

db 0dh, 0ah, "$"

buf db 16 dup(?),"$"

t5 db 0dh,0ah, "Hoćemo li nastaviti proces? (Da/Ne)?"

;____________________________________________________________________

; Segment koda

;Glavni postupak

d: lea dx, t1

;Postupak unosa decimalnog broja

;Postupak za prikaz decimalnog broja

r1: mov dl,

; Pretvaranje broja (decimala) u binarni

v1: mul si

;Postupak za prikaz binarnog broja

; Postupak pretvaranja broja (binarni) u heksadecimalni

; i prikazati ga na ekranu

Bilješke :

Ispod su naredbe koje se koriste u programu:

pod– binarno oduzimanje. Oduzima sadržaj drugog operanda od prvog operanda

Mnemotehnika:pod< operand 1>,< operand 2>

poziv– poziv procedure. Prenosi kontrolu na proceduru čija je adresa određena operandom; nakon što je procedura dovršena, izvođenje se nastavlja naredbom koja slijedi nakon naredbe poziva

Mnemotehnika: poziv< naziv postupka>

ret– povratak na proceduru

shr– pomaknite se logično udesno

xor– isključivi ILI

Mnemotehnika:xor<операнд 1>,<операнд 2>

lea– preuzimanje EA

Mnemotehnika:lea reg,<операнд>

gurnuti– uključiti u stog

Mnemotehnika: gurati< operand>

pop– dohvaćanje iz hrpe

Mnemotehnika: pop<операнд>

mov- naprijed

Mnemotehnika:mov< prijamnik>,<источник>

inc– povećati za 1

Mnemotehnika:inc<операнд>

dec– smanjiti za 1

Mnemotehnika: dec< operand>

stosb– prosljeđuje veze na registar al ili ax na koji pokazuje di registar

petlja– naredba za organiziranje petlje s brojačem, također kratki prijelazi (127b) naredba smanjuje vrijednost brojača cx, bez promjene zastavica, ako je veza cx > 0, tada se provodi prijelaz na zadanu oznaku, inače se petlja završava.

Mnemotehnika: petlja< označiti>

.KODIRATI– otvara segment koda

. PODACI-- otvara segment podataka

.STOG N– definira segment stack(a); Upute za zatvaranje segmenata se u ovom slučaju ne koriste; N – prikazuje veličinu stog(a) u bajtovima

Bilješka : Kada se koriste takve direktive, ds registar se inicijalizira na sljedeći način: mov sjekira,@podaci

mov ds,ax

pretpostaviti se ne koristi u ovom slučaju

Bibliografija

1. "Ja sam asemblerski jezik za IBM PC i programiranje" postdiplomske studije 1992.

2. “IBM osobno računalo i MS-DOS operativni sustav” Radio i komunikacije 1991.

3. Ilyushechkin V.N., Kostin A.E., Khokhlov M.M. “Sustavski softver”, M., “Viša škola”, 1987

4. Norton P., Souhe D. “Assembly language for the IBM PC”, M., Izdavačka kuća “Computer”, 1993.

Zdravo! Postoji ova linija:

Var BD 2,2,3,3,4,4; 223344 decimalni 6-znamenkasti broj u nepakiranom formatu s povećana točnost(ASCII format)

Kako mogu pretvoriti ovaj broj 223344 u heksadecimalni broj? Pronašao sam ovaj kod koji pretvara jednoznamenkaste i dvoznamenkaste decimalne brojeve u šesnaestoznamenkasti:

; Var. 17. Stražnji 1. Napišite potprogram za pretvaranje nekog niza decimala; ASCII bajtovi. na niz BCD bajtova. Koristite ovaj potprogram za obradu dva niza; Koristite stog za prosljeđivanje parametara. Naziv programa ; Opis konstanti Opis varijabli Segment podataka x1 db 2h db 1h db 3h db 1h db 4h db 1h ; brojevi u ASCII formatu y1 db 3 dup (?) ; niz u BCD formatu x2 db 8h ;98 db 9h db 5h ;95 db 9h db 7h ;87 db 8h db 2h ;92 db 9h ; niz dek. ASCII bajtovi Y2 db 4 dup (?) ; niz dek. BCD bajtovi Završeci podataka SEGMENT stoga DW 16 dup(?) StkTOp LABEL riječ Završetak stoga Kod SEGMENT PRETPOSTAVI CS: Kod, DS: Podaci, ES: Podaci, SS: Stog ; Ovdje su opisani potprogrami abc proc push bp mov bp, sp. pričvrstiti na vrh snopa mov cx, ; čitanje parametara sa steka (broj brojeva) mov di, ; adresa varijable Y1 mov si, ; adresa varijable X1 M1: mov al, +1 ; učitati prvi broj u ASCII formatu shl ax, 1 ; pomak za 4 znamenke udesno shl ax, 1 shl ax ,1 shl ax, 1 ili al, ;vratite broj koji ste zapamtili mov , al ; napišite broj u BCD formatu inc si ; premjestiti na drugi broj inc si inc di ; modificirati BCD adresu - brojeve dec cx; smanjiti broj brojeva jnz M1 ; ako nisu ponestali, idite na M1 pop BP ret 6 abc endp ; Glavni program Start: mov AX, Podaci mov DS, AX mov ES, AX mov Ax, Stack mov SS, AX mov SP, pomak StkTop ; učitati parametre na stog prema uvjetima zadatka mov ax, offset x1 ; učitati adresu prvog niza push ax mov ax, offset Y1 ; učitati adresu rezultata push ax mov ax, 3 ; broj brojeva push ax call abc ; poziv potprograma mov ax, offset x2 ; učitati adresu drugog niza push ax mov ax, offset Y2 ; učitati adresu rezultata push ax mov ax, 4 ; broj brojeva push ax call abc ; pozivanje koda potprograma ends end start