Sper ca v-ati instalat un Linux si ati pregatit emulatorul de procesor pe care il voi folosi in aceasta discutie.
Daca data trecuta am discutat despre acel "elefant" care este arhitectura calculatorului si care ca in legenda indiana in care il pipaie orbii - il putem intelege la mai multe nivele azi am sa ma concentrez asupra procesorului, felului in care acesta a fost construit si intelegerii felului in care a fost construit.
Atentie: Acest curs este atipic. Nu veti gasi aceste explicatii in manualele microprocesoarelor ! Urmariti si incercati sa intelegeti !
Luati o foaie de hartie ca sa faceti un desen. Vom desena intai registrii procesorului...
Astept sa aduceti foaia.
Puneti foaia pe orizontal si desenati pe latura dreapta un dreptunghi paralel cu latura si lat de vreo doua degete,la 3-4-5 mm distanta.
Notati portiunea aceeeacu Stack, Stiva,
voi reveni ceva mai tarziu asupra ei. Voi stiti deja ca apelurile functiilor recursive dintr-un program pot sa umple stiva, deci exista o stiva pe undeva.
De fapt sunt trei motive pt care procesoarele folosesc o stiva... voi reveni asupra lor.
Exercitiu: Va amintiti de la cursul de programare care sunt macar doua motive ca procesoarele sa foloseasca o stiva ?
Acum sa mergem pe latura de sus a foii si
sa desenam acolo un alt dreptunghi cam de doua degete latime, la 3-4-5 mm deistanta de margine. Aceea este memoria. Un procesor are nevoie de memorie,
-fie pentru a stoca datele,
-fie pentru a citi programul.
De fapt ce este un calculator ?O masina care executa programe pe care le stie deja, deci le stocheaza intr-o memorie.
Update tehnic: Datorita vitezei SSD-urilor actuale au aparut sisteme industriale care ruleaza programele direct de pe SSD in loc de memorie, tratand SSD-ul ca o memorie mare si ceva mai lenta. Este insa rentabil si ieftin pentru anumite genuri de aplicatii si hardware. Cei din automotive stiu cum e treaba ...
La mijlocul dreptunghiului vertical desenati niste linii verticale care separa din el niste benzi inguste, 3-4-5 mm fiecare. Vreo 7 - 10 ajung.
Aceste portiuni ale memoriei sunt locatiile de memorie. Termenul trebuie inteles cu atentie la detalii deoarece nu e sinonim cu spatiul unei instructiuni, uneori o instructiune ocupa mai multe locatii, de obicei cand are si parametri.
Ok. Programul sta in memorie si se executa, va asteptati, instructiune cu instructiune. Dar cineva trebui sa tina socoteala la care instructiune am ajuns,
cum un kilometraj de masina tine numarul kilometrilor parcursi.
Cu o mica diferenta, kilometrajul indica un numar relativ, dar pe borna kilometrica e numarul absolut al kilometrului.
Sa zicem ca as avea un fel de GPS care sa imi arate tot timpul la ce kilometru efectv (kilometrul 117 de ex) am ajuns, masurat pe marginea soselei, si toate masinile care trec pe acolo (toate programele care executa acea instructiune o gasesc la aceeasi adresa) gasesc acelasi numar al kilometrului.
Este clar ca un program trebuie sa stie la ce instructiune a ajuns cu executia.
Daca e la sfarsit se va intampal ceva. Daca tinde sa depaseasca memoria existenta se va intampla altceva etc.
Deci programul cand ruleza pe procesor stie la ce instructiune a ajuns, iar procesorul tine, pret de o clipa (pardon de o instructiune) minte acea adresa.
Cumva exista un contor de instructiuni, care avanseaza pe masura ce se executa programul. Acest este numit PC - program counter, contorul de program.
Desenati in stanga jos , in coltul din stanga jos un dreptunghi ca o cutie de chibrituri vazuta de pe muchie si scrieti pe el: PC
Apoi desenati un punct, bulina, in interiorul lui si faceti o sageata care merge intai orizontal (pina sub locatiile de memorie)apoi in sus pt a indica o locatie de memorie. PC point-eaza catre locatia de memorie care este la rand. Din ea va citi instructiunea curenta.
Imagine: B.P.
Deasupra registrului PC desenati un alt registru IR. Sa ne imaginam ca instructiunea de executat este citita din memorie si incarcata in acest IR. Faceti o sageata inversa de la o locatie de memorie la registrul IR si scrieti pe ea incarcare. Sau in engleza Fetch. E procesul prin care noua instructiune este adusa din memorie in procesor.
:( Procesul de Fetch este transparent si registrul IR - Instruction register - nu este accesibil programatorilor, considerati-l o explicatie teoretica.
Dar totusi programatorii lucreaza cu numere cu care fac calcule in registrii procesorului, e clar, procesorul proceseaza numerele.
Sa desenam deasupra lui IR un alt registru... sau mai bine in partea din coltul stanga sus al foiii, imediat sub memorie. Numiti-l AF. Impartiti-l in doua cu o bara verticala, scrieti AF deasupra lui, iar partea din dreapta impartiti-o in patratele (sa zicem 8 dar 4 sunt de ajuns pt primele explicatii).
I se spune registrul Acumulator. (Lui A!) Iar partea cu F are numele venit de la fanioane - banuiti voi microbistii ca este un arbitru undeva care ridica fanionul la niste faulturi (de exemplu la scaderea care scade prea mult din prea putin, cand "distanta fata de marginea terenului" trece prin zero samd.)
Cum folosim acel acumulator si de unde ii vine numele ?
Presupun ca aveti pe birou un calculator de birou, de acela cu cele 5 operatii. Sau unul software:
Faceti cu el urmatoarele calcule 3 + 2 * 2 = ! Cat v-a iesit ? Ce ati observat ?
Este corect ?
Punct de control: V-a iesit 7 sau 10 ?
Sa incercam altfel: 3 + 2 = * 2 =
Acum v-a iesit 10 ?
Remarcati cum se face calculul expresiei (3+2)*2 , ceea ce am facut pt a obtine zece ?
La fiecare pas se face o operatie, iar sirul calculelor de pina atunci, (a)cumulate va apare ca ultimul rezultat partial.
Exact asa se foloseste registrul acumulator la procesoarele cu acumulator.
Se fac insa operatiile asa cum au fost scrise in limbajul de asamblare, notatiile difera de la un limbaj de asamblare la altul dar veti gasi o descriere cam asa:
incarca A cu 3
Aduna 2
Inmulteste cu 2
De exemplu la un procesor (in stilul lui Z80) s-ar fi scris asa:
LD A,3
ADD 2
MUL 2
Vom scrie si noi astfel de coduri la partea practica.
Sa mai adaugam trei registri:
Sub desenul lui AF adaugati inca trei registri.
BC
DE
HL.
Trei dreptunghiuri separate, fiecare impartit in doua parti, parti care se comporta ca niste registri mai mic, avand un numar redus la jumatate de biti.
Imagine de A.L. (puteati impart F in 8 patrate succesive...
banuiesc ca nu v-au incaput.)
Sa explicam ce e cu ele.
Procesoarele au avut de a face cu nevoia de a mari numarul de biti pe care lucreaza dar si de a pastra compatibilitatea.
O solutia a fost de a grupa registriii cate doi pentrua forma un registru mai mare (cazul nostru de aici) .
Alta solutie a fost de a extinde niste registri pur si simplu transformand, sa zicem, registru AX in EAX (exemplul este generic) dar ati prins ideea.
Se lungesc registrii inspre stanga adaugand biti.
Ce difera poate fi notatia. Daca registrul vechi se numea (glumesc putin) MN cel nou se va numi EMN. (Asa ceva nu exista dar ati prins ideea!)
Sau se poate sa notam cu litere diferite toate jumatatile lor.
Care sunt bitii superiori (High) si care sunt cei inferiori ai unui numar care sta intr-un astfel de registru ?
Pai uitati-va la nume: Registrul HL - H vine de la High, L vine de la Low.
La acest gen de procesoare partea H este cea cu primii biti (la 8085 doar 8 biti) iar cea cu low cu ultimii (la 8085 cu 8 biti).
Exercitiu:Scrieti numarul 256 in binar ?
V-a iesit 00000001 00000000 ?
Daca incar acest numar in HL, cat va ajunge in H si cat va ajunge in L.
Si la urma urmei la ce (naiba) foloseste acest HL ?
Pai, A este mai scurt decat HL, deci pentru numerele lungi, am putea folosi la
calcule HL in loc de A.
HL este un fel de versiune pe mai multi biti a lui A. Dar in acelasi timp H si L sunt registri simpli, utilizabili ca operanzi suplimentari in alte calcule, sau , vom vedea pentru accesul la memorie...
Desenati o sageata indicand spre o portiune de memorie, plecand de la HL.
Operatiile aritmetice sunt comutative ?
Stim cu totii ca scaderea si impartirea nu sunt.
Veti vedea ca unele procesoare au o instructiune speciala EX DE,HL care schimba ce este in perechea DE cu ce este in perechea HL.
Daca nu o au nu e nici o problema, putem schimba si pe bucati, sau cu ajutorul stivei, de ex le pun pe amandoua perechile in stiva si le scot in ordine inversa.
Recapitulare: Am aflat de A- acumulator, F - flag-uri.fanioane , PC - program counter , IR - instruction register, HL - (high and low,) un fel de acumulator pe numar dublu de biti. DE - dublura lui HL.
Cateva corecturi la desenele voastre:
Memoria trebuia "dungata" pe verticala
----------------------------------------------------------------------------------------
| | | | | | | |
----------------------------------------------------------------------------------------
/\
|
Sageata care vine de la PC ajunge aici.
Registrul AF ar arata asa, are doua parti, partea A si partea F.
--------------------------------------
| A | | | | | | |
--------------------------------------
A F
Memoria desenati-o orizontal, si in acest caz dungile sunt verticale, o impart in locatii, iar PC indica o locatie, nu pe toate, locatia urmatoarei instructiuni... ma rog, mai inainte a indicat-o pe precedenta pe care tocmai a citit-o.
AF e doar un singur registru ca si BC.
Partea a doua , F-ul impartiti-l in patratele, vor fi fanioanele.Revenim din pauza:
Sper ca ati primit corecturile.
Sa explicam ce este cu DE. De este perechea lui HL un fel de HL alternativ.
BC-ul ? Ei bine, programele in limbaje de nivel superior folosesc si bucle, cum este bucla FOR. Limbajul de asamblare permite, cel putin unele limbaje permit, ceva asemanator. Exista, in unele limbaje un fel de FOR primitiv, care numara de lka un numar pina la zero si care foloseste un contor special, un registru special, de obicei BC-ul.
Ideea este ca poti avea la unele procesoare un fel de registru care este un contor pentru buclele cu contor. Si ai o instructiune speciala la final de bucla,
care face "deecrement jump non zero" (DJNZ) adica scade contorul cu o unitate si reia bucla daca mai are bucle de facut deci daca contorul nu este zero. Nu toate procesoarele au DJNZ, aceata instructiune.
Recapitulare: Am aflat de A- acumulator, F - flag-uri.fanioane , PC - program counter , IR - instruction register, HL - (high and low,) un fel de acumulator pe numar dublu de biti. DE - dublura lui HL. BC - contorul pentru bucle.
Imagine de la: T.I.C. (pe viitor roteste imaginea cu GIMP,pls)
Sa mai desenam sub HL inca un registru: SP . Sau mai bine inainte sa exlplicam. Stiva este o structura de date dinamica, cam ca un teanc de farfurii.
Poate fi mai mare sau mai mica, dar daca o umplu cu zerouri si memoria e tot cu zerouri e clar ca nu stiu unde ii este varful. Sau daca stiva scade si datele ei raman in memorie, problema e unde a ajuns varful stivei.
Desenati registrul SP, puneti un punct inainte si desenati o sageata care indica undeva in segmentul de stiva, la ultima locatie ocupata (ceea ce indica automat si prima locatie libera). De fapt cand pun in stiva pun in primul loc liber.
Imagine de la S.A. ( as fi desenat cei patru biti importanti din F alaturi, unul linga altul, pe orizontala)
Exercitiu: Propuneti un experiment ca sa vedeti daca SP indica ultimul loc din stiva, unde tocmai ati pus ceva sau primul loc liber. Deocamdata algoritmul, prin cuvinte.
Actualizati desenul, astept imagini.
De ce (naiba ?!?) folosesc procesoarele o stiva :
Stack pointerul, SP, arata clar ca procesoarele folosesc o stiva, intrebarea este de ce e musai nevoie de asa ceva. Culmea sunt mai multe raspunsuri pentru aceasta nevoie, desi manualele procesoarelor le trec sub tacere.
Luati un manual al unui procesor si verificat, daca doriti.
Exercitiu: Puteti scrie un program in limbajul favorit al carui cod compiat va folosi stiva . Dar unul care va folosi intensiv stiva ? dar unul care face stack overflow la executie ?
Exercitiu: Calculati 10! cu o functie recursiva ? Ce se intampla la executie ?
1) De ce folsoesc procesoarele o stiva ?
Pai fiindca au in limbajele care ruleaza pe ele functii si subrutine, si bineinteles au si in limbajul de asamblare . Cand se executa un CALL adresa_subrutina, adresa care indica urmatoarea instructiune de executat (PC era gata sa o arate pe aceasta) este salvata in stiva.
Motivul 1: Deoarece la apelul subrutinelor cu CALL se salveaza in stiva adresa locatiei de reintoarcere (in segmentul de program), astfel ca in finalul subrutinei, un RET sa extraga valoarea din stiva si sa revina.
2)De ce folsoesc procesoarele o stiva ?
Al doile amotiv este faptul ca procesoarele au de calculat expresii. Nevoia de a avea o memorie suplimentara se vede imediat daca calculati cu calculatorul de birou (10+7)*(9+5) ?
Pe un calc. de birou decurge asa: 10 + 7 = [M+] C 9 + 5 = * [MR].
10 plus 7 = 17 , il pun in memorie, sterg acumulatorul, 9 plus 5 = 14 inmultit
cu ReadMemory - ceea ce citesc din memorie adica 17 . 14*17 va da 238.
Deci pentru calculul expresiilor cu paranteze este nevoie de o stiva.
De fapt exista un algoritm clasic de calcul al valorii expresiiilor, care poate fi folosit din limbajul de asamblare si din codul masina. (Studiati-l , il vom impementa mai tarziu).
Algoritm de calcul al expresiilor cu stiva:
Fie expresia, de ex: (10+7)*(9+5)
Parcurgeti expresia si organizati calculele sub forma de arbore operatorial (asta vom invata insa in anul al II-lea).
*
/ \
/ \
+ +
/ \ / \
10 7 9 5
Acuma daca parcurgeti intr-un mod convenabil acest arbore obtineti ceea ce se cheama forma poloneza postfixata a expresiei. In esenta se pun operanzii in ordinea din expresie apoi se aplica printre ei operatorii in ordinea convenabila.
10 7 + 9 5 + *
Punct de control: Ce fel de parcurgere a arborelui am folosit ?
a) inordine ?
b) preordine ?
c) postordine ?
Adica pentru un subarbore sunt subarborii cuoperatorul la mijloc, sau subarborii cu operatorul inaintea lor sau subarborii cu operatorul dupa ei.
Exercitiu: Scrieti 7 expresii cu paranteze si formele lor poloneze.
Cateva corecturi la desene:
Bitii din F desenati-i ca niste patrate vecine, pe orizontala.
Puteti boteza si cei patru biti importanti, incepem cu CR, Z, P
La stiva incepeti cu setul de linii orizontale care separa locatiile ocupate din stiva, de jos, si tot acolo jos, notati, ADRESE MARI ALE MEMORIEI.
Stiva creste in memorie de la adrese mari la adrese mici, contraintuitiv.
Exercitiu: Ce rost ar avea sa creasca stiva de la adrese mari la adrese mici ? Programul se lungeste normal de la adrese mici la adrese mari ?
Raspundeti, pe email .
Exercitiul cu expresille: unul dintre voi a propus lista de mai sus, unde sunt si niste greseli. (Ultima este sigur gresita, fiindca 2 e pus sa participe la o inmultire si e singura data disponibila, explic mai jos):
Continui explicatia algoritmului de calcul al unei expresii:
Pornind de la aceasta descriere a expresiei, calculul valorii ei se poate face foarte usor cu o STIVA - iata la ce e buna stiva - si doua reguli.
r1) Cand dai de un numar pune numarul in stiva
r2) Cand dai de un operator (binar) scoti doua valori din stiva , faci operatia, pui rezultatul inapoi in stiva.
Sa incercam:
Exemplul 1:
2 3 +
Stiva va avea (merge asa stiva mea ---->)
2
2 3 acum vine +
5
Si gasim rezultatul in stiva.
Exemplu mai greu: (Thx S.A.D.)
La (5x3)+3*(2+5)
Explic cum sa ganditi ca e construita forma poloneza:
5 3 * - pentru (5*3)
cinci si trei se inmultesc
5 3 * 3 - pentru (5*3) urmat de un 3 in stiva
apoi se adauga in stiva 3
urmat de 2 si 5
5 3 * 3 2 5 - pentru (5*3) urmat de 3 2 5 in stiva
ultimii doi se aduna intre ei
5 3 * 3 2 5 + - pentru (5*3) urmat de 3 urmat de (2+5)
si intr-o faza intermediara "invizibila" stiva va arata asa
5 3 3 7
abia pe urma se face inmultirea dintre 3 si paranteza a doua
5 3 * 3 2 5 + * - pentru (5*3) urmat de 3 * (2+5)
si apoi adunarea finala
5 3 * 3 2 5 + * + - pentru (5*3) + 3 * (2+5)
Exercitiu: Simulati cu o stiva felul cum se fac calculele expresiilor. In Asembler (limbaj de asamblare) exact in acest stil se fac calculele valorilor expresiilor (dar de obicei nu apar constante - am fi calculat dinainte partea constanta - ci apar mai mult variabile in expresii).
3) Al treilea motiv pentru care au procesoarele o stiva
Deoarece fiecare functie poate avea variabile locale care se aloca tot pe stiva.
Nu toate procesoarele il au, dar la unele procesoare si masini virtuale poate exista un registru specializat numit AR (activation register) sau se poate folosi la asta un registru de uz general, care indica pozitia pe stiva a urmatoarei inregistrari de activare, acel bloc de date care se pune in stiva atunci cand se apeleaza o functie (recursiva sau nu).
Exercitiu: Imaginati-va calculul factorialului n! cu functia recursiva binecunoscuta de la cursul de programare!
Intrebare de control: Unde sunt valorile succesibe ale lui n ?
Control: Rasp dvs contine cuvantul stiva ?
Am terminat cu SP si utilizarea lui. Notati si ca exista in limbajul de asamblare instructiuni PUSH si POP pentru pus si scos valorile registrilor din stiva.
Recapitulare: Am aflat de A- acumulator, F - flag-uri.fanioane , PC - program counter , IR - instruction register, HL - (high and low,) un fel de acumulator pe numar dublu de biti. DE - dublura lui HL. SP - Stack pointer, indicatorul de stiva. Puteti spune acum la ce foloseste fiecare ?
Despre acele fanioane din F:
- Imaginati-va o comparatie a doua numere. Pot fi >, < sau = unul cu altul.
- Dupa comparatie rezulta trei cazuri, >, < sau = care trebuie semnalate de bitii din F. De cati biti este nevoie ? Un bit nu este de ajuns. Da doar doua cazuri, posibile. Cu doi biti, avem 2x2 = 4 cazuri. Deci cel putin doi biti vor fi folositi la asa ceva.
E momentul sa notam numele a doi dintre acesti biti...
Z - zero e bitul care spune daca in acumulator este un zero.Cand compara doua numere, procesorul scade transparent pe unul din altul. Z - apare in niste conditii si instructiuni conditionate JP Z adresa, JR Z, adresa , sau negat, JP NZ, sau RET Z, RET NZ.
Notati unul din biti cu Z pe diagrama.
CY - e bitul care inseamna depasire. Cand scaderea e a unui nr mare din altul mic, deci ordinea descazut, scazator este d<s, atunci la scadere are loc o depasire, si arbitrul ridica la acest fault fanionul CY.
Si la scaderile obisnuite si la adunari si la alte calcule la care rezultatul depaseste capacitatea registrului, arbitrul ridica fanionul CY.
In limbajul de asamblare veti gasi instructiuni conditionate cu CY sau cu NCY,
de ex JP CY, adresa, JR NC adresa, etc.
Mai sunt si alte fanioane, de exemplu P -parity, spune ca sunt un numar par de 1 in acumulator.
Mai exista, de asemenea si alte fanioane, de exemplu poate fi unul pentr a semnala depasirea la jumatatea registrului.
Actualizati diagrama, notand 3 biti, adica trei casete din dreptunghiul F, cu cele trei notatii: Z, P, CY.
Retrimiteti diagrama finala.
Acum ne putem apuca de partea practica fiindca ati inteles cam din ce parti e fomat un procesor.
Dati drumul la simulatorul de procesor, implicit el are un program gata scris:
Cum ruleaza un program, pas cu pas, pe emulator:
Trei butoane sunt importante, cel tricolor, numit Only Assemble Program de sub meniul Debug.
Programul odata asamblat, poate fi rulat pas cu pas folosind butonul: [>]. Incercati, urmarind cum se schimba valorile din program counter, PC. Faceti-o acum !
Exercitiu: Rulati pas cu pas un program, aceasta va fi metoda de lucru la partea practica.
Forma programelor intr-un limbaj de asamblare.
Atentie: Programele in limbaj de asamblare se scriu pe trei coloane, (cam in orice limbaj de asamblare).
1) Prima coloana: Contine adresele locatilor de memorie, dar nu in hexa sau altfel, ci sub forma unor denumiri conventionale numite ETICHETE. start: este o astfel de eticheta. Culoare mov in imagine. Ramane in sarcina asamblorului sa asocieze o adresa ( a unei locatii ) acelei etichete. Programatorului nu ii pasa, daca de exemplu la inceput de program am adresa start: si asamblarea incepe ,in memorie la adresa Hxxxxxxx, atunci asamblorul va da etichetei start: valoarea Hxxxxxxx.
Ca si cum ar face :
start : = Hxxxxxxx
Programatorul poate folosi aceste adrese in alte instructiuni, de exemplu
jp start, (jump la dresa start).
2) A doua coloana contine instructiunile propriuzise.
3) A treia coloana contine comentariile, care de obicei incep cu un semn anume.
Am asezat programul, frumos pe coloane, observati:
- mov, cu ":" sunt etichetele.
- maroniu sunt numele instructiunilor. Cu gri sunt argumentele acestor instructiuni, alte adrese sau date.
-cu albastru si ; la inceput sunt comentariile.
Acum sunteti gata sa invatati un limbaj de asamblare:
Va trimit cateva carti despre acest limbaj de asamblare... pe e-mail.
Aveti noroc.
Va trimit cateva .pdf-uri, nu pentru copiat ci pentru STUDIAT cum lucreaza programele in limbaj de asamblare.
Rulati aceste programe pe simulator si studiati cum sunt facute si ce ilustreaza ele, urmarind EXECUTIA lor pas cu pas.
Invatati instructiunile acestui procesor, atat mnemonicile (ati primit manualul procesorului) cat mai ales semnificatia lor,
deoarece in alte limbaje de asamblare veti gasi instructiuni similare dar cu notatii diferite.
Atentie, suportul de curs nu are prea mult text explicativ de la un loc incolo, au doar comentarii in cod.
Sper sa fi devenit suficient de pricieputi ca sa le intelegeti.
Aceste materiale sunt doar pentru uz individual.
Pachetul contine cateva zeci de mici programe in limbaj de asamblare,
pe care va invit sa le rulati pe EMULATOR
scriindu-le de la inceput pe fiecare (altfel nu veti invata mnemonicile !)
si ruland codul pas cu pas.
Aceasta va fi incercarea ! Sa rulati codurile pas cu pas odata cu studiul acestei materii, al acestui limbaj de asamblare.
Va
veti dovedi activitatea luind un zar, dand cu zarul si pozand
(snapshot/print screen, stiti voi: ALT PrintScreen) imaginea
emulatorului cand a ajuns la pasul indicat de zar, iar pentru pasul 6,
la ultimul pas al executiei.
Salvati pozele realizate.
La
final trebuie sa fiti in stare sa scrieti un program in limbaj de asamblare, de exemplu unul capabil sa
calculeze ceva dat de o expresie aritmetica, din niste valori puse in
registri sau alt program cerut din aceasta parte a materiei sau similar celor din manuale.
Aceasta este partea a doua a materiei: Procesor si limbaj de asamblare.
Aceasta este partea a doua a materiei: Procesor si limbaj de asamblare.
Voi pune, foarte
probabil pe blog sau in cutiile postale si alte materiale,pentru examene aveti nevoie
si de lectiile de electronica digitala "cu umbrela".(Cine a fost la prima intalnire stie)
Pentru ritmicitatea notarii propun sa avem o serie de intalniri repetate (saptamanale sau va anunt eu), tot in aceasta maniera, cum am facut azi.
Cu aceasta ocazie voi acorda note celor care participa activ.
Din acest moment, pina la intalnirea viitoare sau pina va scriu, sau pina in sesiune va doresc spor la invatat un limbaj de asamblare si tineti minte ca asa cum ati invatat unul puteti invata altul.
Asteptati pe e-mail materiale care vor fi trimise.
De acum incolo incepe treaba dvs. Primesc intrebari:
Intrebare: In coltul din stanga sus apar Registrii ?
Exact, si poti vedea la executia pas cu pas ce se intampla in fiecare !
Ca si cum ai privi inauntrul procesorului....
Prima valoare din PC este adresa in memorie a primei instructiuni care se executa. Exista o pseudoinstructiune, numita directiva ORG, de forma ORG adresa, care spune asamblorului unde sa puna in memorie codul masina rezultat.
La revedere !
Intrebare: Se observa schimbarea PC-ului 5, apoi 4, apoi 3.
Dar prima valoare (42) ce Reprezinta ?
Prima valoare din PC este adresa in memorie a primei instructiuni care se executa. Exista o pseudoinstructiune, numita directiva ORG, de forma ORG adresa, care spune asamblorului unde sa puna in memorie codul masina rezultat.
La revedere !
Niciun comentariu:
Trimiteți un comentariu