This is an old revision of the document!
====== Laborator 01 ====== Pentru reprezentarea informațiilor (instrucțiuni și date), calculatoarele folosesc sistemul binar (baza 2). În cazul scrierii programelor în limbaj de asamblare este preferat sistemul hexazecimal (baza 16), pentru că scutește programatorul de scrierea șirurilor lungi de 1 și 0, iar conversia din binar se poate face mult mai ușor decât în cazul sistemului zecimal (baza 10). <note tip> Pentru reprezentarea numerelor în binar vom folosi prefixul **0b**, iar pentru cele în hexazecimal vom folosi **0x**. </note> Să presupunem următoarea instrucțiune în limbajul C: <code c> char a = 113; </code> Această instrucțiune are ca efect stocarea în memorie a unui octet cu valoarea 113, care va fi reprezentat în forma binară: **0b01110001**. Aceeași valoare poate fi scrisă în hexazecimal ca **0x71**. ==== Sistemele binar și hexazecimal ==== Înainte de a începe lucrul cu limbajul de asamblare, este necesar să ne familiarizăm cu sistemele binar și hexazecimal și cu modalitățile de conversie între ele. În **sistemul binar** (baza 2), valorile sunt reprezentate ca un șir de 0 și 1. Fiecare cifră din șir reprezintă un bit, iar un grup de 8 biți formează un octet. În **sistemul hexazecimal** (baza 16), valorile sunt reprezentate sub forma unui șir de caractere din intervalul '0'-'9' sau 'a'-'f'. Un octet este format din două astfel de caractere, deci fiecare caracter corespunde unui grup de 4 biți. === Conversia din zecimal în binar/hexazecimal === * Se împarte succesiv numărul la numărul bazei (2 sau 16) și se rețin resturile * Când câtul împărțirii devine 0, se scriu resturile în ordine inversă. * În cazul bazei 16, atunci când restul este mai mare decât 9 se folosesc literele a-f (10=a, 15=f) == Exemplu: conversia numărului 113 în hexazecimal == * Pas 1: 113/16 = 7, rest **1** * Pas 2: 7 / 16 = 0, rest **7**