Sunteți pe pagina 1din 4

Forma intern a instruc iunilor

Forma intern a instruc iunilor reprezint modalitatea prin care setul de instruc iuni Assembler este codat i transpus ntr-o form binar pe unul sau trei octe i pentru a putea fi prelucrat de c tre procesor. n func ie de tipul procesorului: - CISC (Complex Instruction Set Computers) procesor cu un set complex de instruc iuni; - RISC (Reduced Instruction Set Computers) procesor cu un set redus de instruc iuni forma intern a instruc iunii difer n func ie de complexitatea metodei de determinare a codului i de modul de utilizare a bi ilor. Procesoarele din familia 80x86 sunt de tip CISC i prezint una dintre cele mai complexe scheme de codare a instruc iunilor. Forma intern a unei instruc iuni 80x86 este: i i < i r r 8 bi i m m m > <

16 bi i

>

Seminifica ia bi ilor este: i 0 0 0 0 1 1 1 1 i 0 0 1 1 0 0 1 1 i 0 1 0 1 0 1 0 1 Instruc iune Special OR AND CMP SUB ADD MOV reg, mem/reg/const MOV mem, reg

r 0 0 1 1

r 0 1 0 1

Registru AX BX CX DX

m 0 0 0 0 1 1 1 1

m 0 0 1 1 0 0 1 1

m 0 1 0 1 0 1 0 1

Operand AX BX CX DX [BX] [xxxx + BX] [xxxx] constant

Cmpul de 16 bi i este prezent doar n situa ia n care instruc iunea: - este de tip JUMP; acest cmp reprezint adresa la care se efectueaz saltul;

con ine un operand de tip [bx + xxxx], [xxxx] sau constant , caz n care cei 16 bi i reprezint offset-ul, xxxx, sau valoarea constantei;

Pe baza acestei modalit i de reprezentare, rezult c forma intern a unei instruc iuni poate avea minim 1 octet i maxim 3 octe i. Se observ c pentru a reprezenta codul instruc iunii se utilizeaz primii 3 bi i ai octetului superior, rezultnd 8 combina ii diferite. Pentru a reprezenta ntregul set de 20 de clase de instruc iuni, acest format permite extinderi speciale. Prin setarea bi ilor iii cu valoarea 0 se extinde setul de instruc iuni disponibile. n aceast situa ia se ob ine:

0 0 <

i i 8 bi i

m m m > <

16 bi i

>

Seminifica ia bi ilor este: i 0 0 1 1 m 0 0 0 0 1 1 1 1 i 0 1 0 1 m 0 0 1 1 0 0 1 1 Instruc iune Instruc iuni f operanzi Instruc iuni de tip Jump NOT Rezervat m 0 1 0 1 0 1 0 1 Operand AX BX CX DX [BX] [xxxx + BX] [xxxx] constant

Cmpul de 16 bi i este prezent doar n situa ia n care instruc iunea: - este de tip JUMP; acest cmp reprezint adresa la care se efectueaz saltul; - con ine un operand de tip [bx + xxxx], [xxxx] sau constant , caz n care cei 16 bi i reprezint offset-ul, xxxx, sau valoarea constantei; Grupul de instruc iuni f operanzi este:

0 0 <

0 0 8 bi i

i >

Seminifica ia bi ilor este:

i 0 0 0 0 1 1 1 1

i 0 0 1 1 0 0 1 1

i 0 1 0 1 0 1 0 1

Instruc iune ilegal ilegal ilegal BRK IRET HALT GET PUT

Grupul de instruc iuni de tip JUMP este: 0 0 < i 0 0 0 0 1 1 1 1 i 0 0 1 1 0 0 1 1 0 0 1 8 bi i i i i > <

16 bi i

>

i 0 1 0 1 0 1 0 1

Instruc iune JE JNE JB JBE JA JAE JMP ilegal

Cmpul de 16 bi i este ntotdeauna prezent la acest tip de instruc iuni i reprezint adresa la care se efectueaz saltul. Modul n care este procesat o instruc iune: - se cite te din memorie, de la adresa CS:IP, un octet reprezentnd codul instruc iunii; - se incrementeaz IP pentru a indica urm torul octet din segmendul de cod; - se decodeaz instruc iunea; - dac este nevoie de proceseaz urm torii 2 octe i reprezentnd operandul (valoare sau adresa de tip [xxxx]); - dac s-a executat pasul urm tor, atunci IP se incrementeaz cu 2; - dac este nevoie se determin adresa operandului pe baza offsetului s u, xxxx, citit la pasul anterior; - se proceseaz operandul; - se execut instruc iunea i se salveaz rezultatul. Exemplu Instruc iunea MOV AX, BX are codul C1h pentru c :

i 1

i 1 C

i 0

r 0

r 0

m m m 0 0 1 0 1

0 0

0 0

0 0

0 0

ATENTIE ! Pentru programele scrise se poate ca n debugger s se vad alt cod dect cel prezentat. Motivul este dat de faptul c acest format intern era valabil la procesoarele 80x86.