luni, 5 decembrie 2011
duminică, 4 decembrie 2011
Instructiuni de deplasare si rotire in limbajul de asamblare
Instructiuni de deplasare :
Instructiunile SHL/SAL: Translare (Shift) la stânga
Folosire: SAL destinatie, nr
SHL destinatie, nr
Indicatori modificati: CF OF PF SF ZF (AF nedefinit)
Transleaza operandul "destinatie" la stânga cu numar de biti dat de "nr", zerorizind pozitiile la dreapta; indicatorul CF tine ultimul bit translat. Practic, o shiftare cu o pozitie la stânga este echivalenta cu o inmultire cu 2 a operandului destinatie.
Instructiunea SHR: Shift la dreapta
Folosire: SHR destinatie, nr
Indicatori modificati: CF OF PF SF ZF (AF nedefinit)
Shifteaza operandul destinatie la dreapta cu "nr" pozitii, zerorizind pozitiile shiftate. Carry Flag tine ultimul bit shiftat. Cu shift la dreapta putem realiza foarte usor o impartire la putere a lui 2 a operandului destinatie.
Instructiunea SAR: Shift Aritmetic la dreapta
Folosire: SAR destinatie, nr
Indicatori modificati: CF OF PF SF ZF (AF nedefinit)
Shifteaza destinatia la dreapta cu un numar de pozitii dat de "nr". Diferenta fata de SHR revine din faptul ca lasa neschimbat bitul cel mai semnificativ (bitul semn). Carry Flag contine ultimul bit shiftat.
Instructiuni de rotire :
Instructiunea ROL: Roteste la stinga
Folosire: ROL destinatie, nr
Indicatori modificati: CF OF
Roteste bitii operandului destinatie la stânga de "nr" ori, astfel incât bitii scosi la stânga sunt reintrodusi in pozitiile din dreapta. CF va tine ultimul bit shiftat la stânga.
Instructiunea ROR: Roteste la dreapta
Folosire: ROR destinatie, nr
Indicatori modificati: CF OF
Similar cu ROL, dar pentru pozitiile din dreapta.
Instructiunea RCL: Rotire la stânga prin CF
Folosire: RCL destinatie,nr
Indicatori modificati: CF OF
Similar cu ROL, dar fiecare bit shiftat la stânga este pastrat in CF, si fiecare pozitie libera la dreapta ia valoarea curenta a lui CF.
Instructiunea RCR: Rotire la dreapta prin CF
Folosire: RCR destinatie,nr
Indicatori modificati: CF OF
Similar cu RCL, dar pentru pozitiile din dreapta.
Instructiuni logice in limbajul de asamblare
Instructiunea NOT: NOT logic
Folosire: NOT destinatie
Realizeaza complementul operandului "destinatie" in baza 2 (bitii 1 devin 0, iar bitii 0 devin 1). Rezultatul este in "destinatie".
Instructiunea AND: SI logic
Folosire: AND destinatie, sursa
Indicatori modificati: CF OF PF SF ZF (AF nedefinit)
Realizeaza operatia "si logic" (daca bitii de pe aceeasi pozitie in cei doi operanzi sunt setati, atunci bitul corespunzator in rezultat va fi setat) intre cei doi operanzi, rezultatul fiind in "destinatie".
Instructiunea OR: SAU logic
Folosire: OR destinatie,sursa
Indicatori modificati: CF OF PF SF ZF (AF nedefinit)
Realizeaza operatia "sau logic" a celor doi operanzi (orice bit setat pe 1 in unul din operanzi va fi setat pe 1 in rezultat) si returneaza rezultatul in "destinatie".
Instructiunea XOR: SAU exclusiv
Folosire: XOR destinatie,sursa
Indicatori modificati: CF OF PF SF ZF (AF nedefinit)
Realizeaza operatia "sau exclusiv" intre cei doi operanzi (bitii setati in rezultat sunt cei care corespund pozitiilor in operanzi ce contin valori diferite ) si returneaza rezultatul in "destinatie".
Instructiunea TEST: Testeaza "sablon"
Folosire: TEST destinatie,sursa
Indicatori modificati: CF OF PF SF ZF (AF nedefinit)
Realizeaza "si logic" intre cei doi operanzi, actualizeaza indicatorii,
dar nu returneaza rezultatul.
Instructiuni de transfer in limbajul de asamblare
Instructiunea MOV
Incarca o adresa logica de memorie (pe 32 de biti) din memorie (operandul "sursa" se presupune a fi o variabila in memorie) in "destinatie", care trebuie sa fie registru general, si in registrul DS. Deplasamentul este incarcat in registrul general specificat in "destinatie", iar segmentul este incarcat in DS. Operandul "sursa" indica locatia in memorie la care se afla dublu cuvântul ce urmeaza a fi incarcat. Pntru a folosi aceasta instructiune cuvântul de la adresa de memorie mai mica trebuie sa contina deplasamentul, iar cel de la adresa mai mare trebuie sa contina adresa de segment.
Folosire: MOV destinatie,sursa
Transfera un octet sau un cuvânt de memorie din operandul sursa in operandul destinatie.
Exemple:
mov ds, ax; continutul registrului ax va fi transferat in registrul ds
mov ah, 9h ; ah va contine octetul cu valoarea 9h
Instructiunea PUSH: Pune un cuvânt in stiva
Folosire: PUSH sursa
Decrementeaza continutul registrului SP cu doi si apoi transfera un cuvânt din operandul sursa in noul vârf al stivei, referit de SP (deci care are adresa SS:SP). Aceasta instructiune este folosita deseori pentru incarcarea parametrilor in stiva, inainte de apelul unei proceduri.
Instructiunea POP: Extrage un cuvânt din stiva.
Folosire: POP destinatie
Transfera cuvântul din top-ul stivei (SS:SP) la locatia referita de "destinatie", apoi incrementeaza SP cu 2 astfel incât sa pointeze la noul vârf al stivei.
Instructiunea XCHG: Exchange (schimba)
Folosire: XCHG destinatie, sursa
Schimba continutul intre "destinatie" si "sursa". Operanzii pot fi registri sau memorie; registrii segment nu pot fi operanzi ai acestei insructiuni.
Instructiunea IN: Primeste octet sau cuvânt de la un port specificat.
Folosire: IN acumulator, port
Este citit un octet sau un cuvânt de la "port" si este plasat in AL, sau AX respectiv. Daca numarul portului este in domeniul 0-255, operandul "port" poate fi specificat ca valoare imediata. Altfel, numarul de port trebuie specificat in DX.
Instructiunea OUT: Faciliteaza iesirea datelor la porturi
Folosire: OUT port, acumulator
Transfera un octet din AL, ori un cuvânt din AX la portul specificat. Daca numarul portului este in domeniul 0-255, operandul "port" poate fi specificat ca valoare imediata. Altfel, numarul de port trebuie specificat in DX.
Instructiunea LEA: Incarca adresa efectiva (Load Effective Address)
Folosire: LEA destinatie, sursa
Transfera deplasamentul din adresa operandului "sursa" in operandul
"destinatie", care trebuie sa fie un registru general.
Instructiunea LDS: Incarca pointer folosind DS
Folosire: LDS destinatie, sursa
Incarca o adresa logica de memorie (pe 32 de biti) din memorie (operandul "sursa" se presupune a fi o variabila in memorie) in "destinatie", care trebuie sa fie registru general, si in registrul DS. Deplasamentul este incarcat in registrul general specificat in "destinatie", iar segmentul este incarcat in DS. Operandul "sursa" indica locatia in memorie la care se afla dublu cuvântul ce urmeaza a fi incarcat. Pntru a folosi aceasta instructiune cuvântul de la adresa de memorie mai mica trebuie sa contina deplasamentul, iar cel de la adresa mai mare trebuie sa contina adresa de segment.
Instructiunea LES: Incarca pointer folosind ES
Folosire: LES destinatie, sursa
Incarca o adresa logica de memorie (pe 32 de biti) din memorie (operandul "sursa" se presupune a fi o variabila in memorie) in "destinatie", care trebuie sa fie registru general, si in registrul ES. Deplasamentul este incarcat in registrul general specificat in "destinatie", iar segmentul este incarcat in ES. Operandul "sursa" indica locatia in memorie la care se afla
dublu cuvântul ce urmeaza a fi incarcat. Pntru a folosi aceasta instructiune cuvântul de la adresa de memorie mai mica trebuie sa contina deplasamentul, iar cel de la adresa mai mare trebuie sa contina adresa de segment.
Instructiunea LAHF: Incarca registrul AH din "flag-uri"
Folosire: LAHF
Copie indicatorii SF, ZF, AF, PF si CF in bitii 7, 6, 4, 2, 0 respectiv, ai registrului AH. Continutul bitilor 5, 3 si 1 este nedefinit. Indicatorii nu sunt afectati in urma acestei instructiuni.
Instructiunea SAHF: Restaureaza indicatorii din AH
Folosire: SAHF
Transfera bitii 7, 6, 4, 2 si 0 ai registrului AH in indicatorii SF, ZF, AF, PF si CF respectiv.
Instructiunea PUSHF:
Folosire: PUSHF
Tansfera registrul indicatorilor de stare si control in stiva.
Instructiunea POPF:
Folosire: POPF
Transfera cuvântul din top-ul stivei in registrul indicatorilor de
stare si control, dupa care incrementeaza SP cu 2.
Instructiuni arimetice in limbajul de asamblare
Instructiunile aritmetice efectueaza operatii aritmetice de baza asupra operanzilor - numere pe 8 sau 16 biti, cu semn sau fara semn. Instructiunile aritmetice afecteaza indicatorii de stare dupa cum urmeaza:
1. Seteaza CF daca rezultatul operatiei fara semn este in afara domeniului,
2. Seteaza OF daca rezultatul operatiei cu semn este in afara domeniului,
3. Seteaza ZF daca rezultatul operatiei este 0,
4. Seteaza SF daca cel mai semnificativ bit al rezultatului operatiei este 1, ceea ce indica rezultat negativ,
5. Seteaza PF daca rezultatul operatiei contine un numar par de biti 1.
Instructiunea ADD: Adunare aritmetica
Folosire: ADD destinatie, sursa
Indicatori modificati: AF CF OF PF SF ZF
Aduna "sursa" la "destinatie" si inlocuieste continutul original al operandului "destinatie" cu rezultatul adunarii. Amândoi operanzii sunt numere binare, pe 8 sau 16 biti.
Instructiunea ADC: Aduna cu "Carry"
Folosire: ADC destinatie,sursa
Indicatori modificati: AF CF OF SF PF ZF
Aduna "sursa" la "destinatie" si inlocuieste continutul original al operandului "destinatie" cu rezultatul adunarii. Daca dupa adunare CF este 1, se aduna un 1 la destinatie.
Instructiunea INC: Incrementare
Folosire: INC destinatie
Indicatori modificati: AF OF PF SF ZF
Aduna un 1 la "destinatie", considerat numar binar fara semn.
Instructiunea SUB: Scadere (Subtract)
Folosire: SUB destinatie, sursa
Indicatori modificati: AF CF OF PF SF ZF
Sursa este scazuta din destinatie, iar rezultatul este pastrat in destinatie.
Instructiunea SBB: SuBtract with Borrow
Folosire: SBB destinatie, sursa
Indicatori modificati: AF CF OF PF SF ZF
Scade sursa din destinatie; daca CF este setat pe 1, scade un 1 si plaseaza rezultatul in "destinatie".
Instructiunea DEC: Decrement
Folosire: DEC destinatie
Indicatori modificati: AF OF PF SF ZF
Scade (operatie fara semn) un 1 din "destinatie".
Instructiunea NEG: Complement fata de 2
Folosire: NEG destinatie
Indicatori modificati: AF CF OF PF SF ZF
Scade "destinatie" din 0 si salveaza complementul fata de 2 al lui "destinatie" in "destinatie" (practic, schimba semnul numarului). Daca numarul este -128 sau -32768, atunci el nu este schimbat, ci este setat pe 1
indicatorul OF.
Instructiunea CMP: CoMPare
Folosire: CMP destinatie,sursa
Indicatori modificati: AF CF OF PF SF ZF
Scade "sursa" din "destinatie" si actualizeaza indicatorii dar nu salveaza rezultatul. De obicei, in urma acestei instructiuni sunt verificate valorile indicatorilor pentru conditii.
Instructiunea MUL: Inmultire fara semn
Folosire: MUL sursa
Indicatori modificati: CF OF
Inmulteste continutul registrului acumulator cu "sursa". Daca "sursa" este valoare pe un byte, atunci este folosit AL, iar rezultatul este plasat in AX. Daca "sursa" este valoare pe un cuvânt, atunci sursa este inmultita cu AX, iar rezultatul este plasat in DX si AX. Indicatorii CF si OF sunt pozitionati daca partea cea mai semnificativa a rezultatului este diferita de 0 (AH pentru operand sursa pe un octet, DX pentru operand sursa cuvânt).
Instructiunea IMUL: Inmultire cu semn
Folosire: IMUL sursa
IMUL sursa,immed (numai de la 80286 in sus)
IMUL destinatie,sursa,immed8 (numai de la 80286 in sus)
Indicatori modificati: CF OF
Realizeaza inmultirea cu semn a registrului acumulator cu "sursa". Daca "sursa" este valoare pe un byte, atunci este folosit AL, iar rezultatul este plasat in AX. Daca "sursa" este valoare pe un cuvânt, atunci sursa este inmultita cu AX, iar rezultatul este plasat in DX si AX. Indicatorii CF si OF sunt pozitionati daca partea cea mai semnificativa a rezultatului este diferita de 0 (AH pentru operand sursa pe un octet, DX pentru operand sursa cuvânt). Din modurile in care este folosita instructiunea, se poate observa ca se pot specifica registri sursa si destinatie, precum si un eventual al treilea factor al inmultirii (operand imediat).
Instructiunea DIV: Divide
Folosire: DIV sursa
Impartire fara semn a acumulatorului si a extensiei sale cu sursa. Daca operandul sursa este un octet, citul este plasat in AL, iar restul in AH. Daca operandul sursa este un cuvânt (atentie, in acest caz se considera ca de impartit AX cu extensia DX, deci numar pe 32 de biti), câtul este in AX, iar restul in DX.
Observatii:
In cazul in care operandul sursa este un cuvânt, daca doriti sa impartiti doar AX, asigurati-va ca DX este 0; altfel, conform celor mai sus descrise, riscati rezultat imprevizibil. Daca restul depaseste capacitatea registrului destinatie (FFh pentru sursa octet ori FFFFh pentru sursa cuvânt) sau daca a fost incercata o impartire cu 0, este generata o intrerupere de tip 0 (impartire la 0), restul si câtul având valori nedefinite.
Instructiunea IDIV: Impartire intreaga cu semn
Folosire: IDIV sursa
Impartire cu semn a acumulatorului cu sursa. Daca operandul sursa este un octet, câtul este plasat in AL, iar restul in AH. Daca operandul sursa este un cuvânt, câtul este in AX, iar restul in DX. Domeniul valorilor
câtului este cuprins intre -127...+127 pentru sursa octet, si -32767...+32767 pentru sursa cuvânt.In cazul in care câtul este pozitiv si depaseste valoarea maxima, ori este negativ si depaseste valoarea minima, se generaza o intrerupere de tip 0, iar restul si câtul au valori nedefinite.
Instructiunea CBW: Convert Byte to Word
Folosire: CBW
Converteste octetul din AL la valoare pe un cuvânt in AX cu extensie de semn.
Instructiunea CWD: Convert Word to Double-word
Folosire: CWD
Extinde semnul cuvântului din AX formind un dublu cuvânt cu partea cea mai semnificativa in DX iar cea mai putin semnificativa in AX.
joi, 1 decembrie 2011
Cursuri Inteligenta Artificiala
Notiuni de Inteligenta Artificiala
Strategii de rezolvare a problemelor 1
Strategii de rezolvare a problemelor 2
Reprezentarea cunoasterii
Reprezentarea cunoasteri prin reguli de productie
Modelul cunostintelor structurate
Rationamentul aproximativ
Planificare si invatare automata
Retelele neuronale artificiale
Teoria retelelor neuronale
Arhitectura moderna a retelelor neuronale
Baza de cunostiinte
Strategii de rezolvare a problemelor 1
Strategii de rezolvare a problemelor 2
Reprezentarea cunoasterii
Reprezentarea cunoasteri prin reguli de productie
Modelul cunostintelor structurate
Rationamentul aproximativ
Planificare si invatare automata
Retelele neuronale artificiale
Teoria retelelor neuronale
Arhitectura moderna a retelelor neuronale
Baza de cunostiinte
sâmbătă, 12 noiembrie 2011
Din categoria bancurilor
Pe o autostrada un control radar inregistreaza un Ferrari cu 19 Km/h. Da, da, 19 Km/h.
Politistul care facea controlul opreste autovehiculul si cere explicatii.
La volan o blonda care ii raspunde zambind.
- Respect limita de viteza indicata pe panouri. Scrie A19 atunci conduc cu 19Km/h.
Politistul ii raspunde amuzat:
- Dar A19 este numarul autostrazii, nu este limita de viteza. Uitandu-se la pasagera de langa blonda zice:
- Ar trebui sa va grabiti prietena dv. este palida si pare sa fie bolnava.
La care blonda raspunde:
- Este asa de cand am parasit A313.
Doi electricieni pe un stilp de inalta tensiune.
Unul din ei catre o babuta care trecea p-acolo:
- Ne dati va rog frumos sirma aia rosie?
Babuta ridica sirma si le-o da, la care
electricianul catre celalalt:
- Vezi ba, ti-am zis ca aia rosie e nulul!!
Un orasean pe un varf de munte, discutand cu un cioban cu 300 de oi:
- Bade, bune oile la muls ?
C - Alea albe toate !!
- Pai si alea negre nu ?
C - Pai si alea... ( usor plictisit )
- Si de lana sunt bune, dau ceva ?
C - Pai alea albe numa, numa toate !!
- Dar si alea negre nu ?
C - Pai si alea ...
- Dar la fatari cum stau ?
C - Pai alea albe excelent toate !!!
- Si alea negre nu ????
C - Pai si alea .....
- Bade ! m-ai inebunit de cap cu " alea albe " , " alea negre " ce ai ?
C - Pai mai domnule ! Alea albe sunt oile mele
- Pai si cele negre
C - Pai si alea ...
Abonați-vă la:
Postări (Atom)