Programarea in asamblare a 80X86, TMS 320F240 si PIC 16F87x

Programarea in asamblare a 80X86, TMS 320F240 si PIC 16F87x

Timp de citit: 5 minute

Autor: Prof. Univ. Dan Rotar – Facultatea de Inginerie – Universitatea din Bacau
Editura: Alma Mater
An aparitie: 2011

Ce sunt microprocesoarele?

Microprocesoarele reprezinta unitati centrale integrate intr-un singur circuit integrat pe scara foarte larga (VLSI – Very Large Scale Integration), care au capatat o larga dezvoltare o data cu dezvoltarea tehnologiei de integrare si cu raspandirea utilizarii sistemelor cu microprocesor in cele mai diverse domenii de activitate.

Pe de alta parte, tendinta de miniaturizare continua a sistemelor numerice a dus la aparitia si dezvoltarea calculatoarelor integrate, utilizate in cele mai diverse domenii ale activitatii umane.

Ce este procesarea digitala a semnalelor?

Procesarea digitala a semnalelor (DSP – Digital Signal Processing) se distinge de alte domenii ale stiintei calculatoarelor prin faptul ca exista un singur tip de date utilizate si anume semnalele. In marea majoritate a cazurilor aceste semnale provin de la senzori care preiau marimi din lumea reala: vibratii seismice, imagini, sunete etc.

DSP (DSP – Digital Signal Processing) reprezinta matematica, algoritmii si tehnicile utilizate pentru prelucrarea acestor semnale dupa ce acestea au fost transformate in prealabil in format digital. Acesta prelucrare se face in diferite scopuri, obiectivele urmarite avand un spectru larg de aplicabilitate: analiza imaginilor, recunoasterea formelor, recunoasterea si generarea vorbirii, compresia datelor pentru stocare sau transmitere etc. Daca vom atasa un convertor analog-digital unui calculator in scopul preluarii unei anumite cantitati de date din lumea reala, tehnica DSP ne va ajuta sa interpretam aceste date.

Inceputurile Digital Signal Processing

Inceputurile DSP se localizeaza la inceputurile anilor 1960 si 1970 cand calculatoarele numerice au inceput sa fie folosite in diferite ramuri ale stiintei si tehnicii. In aceasta perioada insa calculatoarele erau foarte scumpe si din acest motiv aplicatiile DSP erau limitate doar la cateva domenii de mare interes. Incercari de pionerat s-au facut in domeniile cheie ca: tehnologia radar care presupune cresterea securitatii nationale, exploatarea petrolului care aduce venituri insemnate, explorarea spatiului cosmic unde utilizarea acestei tehnologii este indispensabila si analiza imaginilor in domeniul medical care permite salvarea de vieti omenesti.
Revolutia calculatoarelor personale din anii 1980 si 1990 a dus la dezvoltarea spectaculoasa a tehnicilor DSP intr-un numar impresionant de domenii. Daca la inceput aceasta tehnica era utilizata aproape exclusiv in aplicatii militare sau guvernamentale, scaderea pretului de cost a tehnicii de calcul o data cu dezvoltarea spectaculoasa a tehnologiei digitale a dus la utilizarea tehnologiei DSP in multe domenii comerciale cum sunt: telefonia mobila, CD playere, posta electronica vocala etc.

Dezvoltarea tehnologiei DSP a dus la aparitia procesoarelor de semnal (DSP – Digital Signal Processor) care reprezinta calculatoare integrate specializate pentru acest domeniu. Observam faptul ca acronimul DSP este folosit atat pentru tehnica de prelucrare digitala a semnalelor cat si pentru dispozitivul utilizat pentru aceasta.

In final trebuie remarcat ca nu exista o granita clara intre tehnologia DSP si alte domenii ale stiintei.

Dintre domeniile care se intrepatrund cu tehnologia DSP se pot aminti:
  • teoria comunicatiei;
  • analiza numerica;
  • statistica si probabilitatile;
  • procesarea analogica a semnalelor;
  • teoria deciziei;
  • electronica digitala;
  • electronica analogica.

Indiferent de structura sistemului de calcul utilizat, modul de programare al unitatii centrale se face in acelasi fel existand similitudini evidente dar si diferente importante intre diferitele tipuri de unitati centrale.

O unitate centrala are un limbaj propriu, care difera de la o unitate centrala la alta, instructiunile unitatii centrale fiind reprezentate de iruri de numere binare. Producatorul unitatii centrale stabileste tipurile de instructiuni, codificarea, structura si modul de utilizare a acestora. Un program scris in binar cu ajutorul acestor instructiuni se numeste program masina iar codul in care este scris se numeste cod obiect (sau cod binar) direct executabil. Primele programe au fost scrise in acest fel dar evident, scrierea unor astfel de programe este dificila iar riscul de eroare este ridicat.

Pentru simplificarea scrierii programelor in cod obiect direct executabil, producatorii unitatilor centrale asociaza codului binar corespunzator unei instructiuni, un nume care sa fie semnificativ si care sa sugereze actiunea realizata de instructiune. Acest nume poarta denumirea de mnemonica. Programarea cu mnemonici este mai usor de realizat dar este necesar un program de traducere din mnemonici in cod binar. Un astfel de program prevazut cu o serie de facilitati care sa usureze munca programatorului se numeste asamblor iar programele scrise cu ajutorul mnemonicelor, pentru asamblor, se numesc programe in limbaj de asamblare.

Astazi programarea unitatilor centrale se face in limbaj de asamblare. Deoarece acest program se adreseaza direct structurii fizice a unui sistem de calcul, se spune ca limbajul de asamblare este un limbaj de programare de nivel scazut (low level) spre deosebire de limbajele de nivel inalt (C, PASCAL, Java etc) care sunt limbaje de programare de nivel inalt.

Programele scrise in limbaj de asamblare nu pot fi rulate decat pe unitatea centrala pentru care au fost scrise si din acest motiv se spune ca programele scrise in limbaj de asamblare nu sunt portabile.

Avantajul utilizarii programelor in limbaj de asamblare este reprezentat de faptul ca ele permit accesul programatorului la structurile intime ale sistemului de calcul (ceea ce nu se intampla la limbajele de nivel inalt) si permit scrierea unor programe de dimensiuni mici ce se executa in timp scurt iar uneori astfel de cerinte sunt impuse.

Din acest motiv si limbajele de programare de nivel inalt permit mecanisme de inserare a unor secvente de program scrise in limbaj de asamblare.

Structura cartii

CAP I – Programarea in limbaj de asamblare

  • Caracterizarea limbajului de asamblare
  • Etapele elaborarii unui program in cod masina
  • Formatul fisierelor hex (.hex, .hxl, .hxh)

CAP II – Programarea microprocesorului Intel 8086

  • Structura microprocesorului 8086
  • Instructiunile microprocesorului 8086
  • Extinderea structurii unitatii centrale la familia 80×86
  • Unitatea centrala 80×86 din punct de vedere al programatorului
  • Registrele de uz general ale unitatii centrale 8086
  • Registrele de segment 8086
  • Registrele de uz special
  • Registrele 80286
  • Registrele procesoarelor 80386/80486
  • Organizarea memoriei fizice la 80×86
  • Segmentele la 80×86
  • Adrese normalizate la 80×86
  • Registrele de segment la procesoarele 80×86
  • Modurile de adresare la procesoarele 80×86
  • Modul de adresare a registrelor la procesorul 8086
  • Modurile de adresare ale memoriei la procesorul 8086
  • Modul de adresare numai prin deplasament
  • Modul de adresare indirecta prin registre
  • Modurile de adresare indexate
  • Modul de adresare indexat bazat
  • Adresare indexata bazata plus deplasament
  • Un mod simplu de a retine modurile de adresare a memoriei la procesorul 8086
  • Cateva comentarii finale asupra modurilor de adresare la procesorul 8086
  • Modurile de adresare a registrelor la 80386
  • Modurile de adresare a memoriei la 80386
  • Modul de adresare indirecta prin registre
  • Modurile de adresare indexat, indexat/bazat si bazat/indexat/deplasament la procesorul 80386
  • Modul de adresare scalat indexat la procesorul 80386
  • Cateva consideratii finale asupra modurilor de adresare a memoriei la 80386
  • Instructiunea MOV la procesorul 8086
  • Comentarii finale asupra instructiunilor MOV
  • Cateva instructiuni suplimentare
  • Structura unui program in limbaj de asamblare
  • Directivele de segmentare
  • Directivele pentru definirea datelor
  • Concluzii privind limbajul de asamblare
  • Scrierea aplicatiilor Windows in limbaj de asamblare
  • Includerea limbajului de asamblare in programele Visual Basic

CAP III – Programarea microprocesorului TMS 320F240

  • Setul de instructiuni a procesoarelor Texas Instruments C5X/C2XX
  • Turbo-Asamblorul (TASM)
  • Exemple de programe in limbaj de asamblare, pentru microprocesorul TMS 320F240

CAP IV – Programarea microprocesoarelor de tip PIC12, PIC16 si PIC18

  • Memoria program
  • Memoria de date
  • Registrele SFR
  • Bancuri de Memorie
  • Contorul de Program
  • Stiva
  • Registrul STATUS (ADRESA: 03h, 83h)
  • Registrul OPTION (ADRESA: 81h)
  • Registrul INTCON (ADRESA: 0Bh, 8Bh)
  • PCL si PCLATH
  • Memoria de date EEPROM
  • Registrul EECON1 (ADRESA: 88h)
  • Citirea memoriei EEPROM
  • Scrierea in memoria de date EEPROM
  • Verificarea scrierii
  • Harta memoriei RAM
  • Moduri de adresare
  • Porturile microcontrolerului
  • Setul de instructiuni a unitatilor centrale de tip RISC PIC12, PIC16 si PIC18
  • Exemple de programme in limbaj de asamblare
  • Initializarea unei zone de memorie RAM
  • Salvarea si restaurarea registrilor (echivalentul instructiunilor PUSH si POP)
  • Testarea continutului unui registru
  • Conversie binar-ASCII
  • Afisarea unui sir pe un display LCD

Adauga un comentariu

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *