Sunteți pe pagina 1din 3

Instructiuni operationale

Instructio NOT ADD AND


n Bit-wise complement Addition Bit-wise logical AND

Assembler ADD DR, SR1, SR2 AND DR, SR1, SR2


format NOT DR, SR
ADD DR, SR1, Imm5 AND DR, SR1, Imm5
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Encoding
┌───┬──┬──┬─────┐ ┌───┬──┬──┬┬─┬──┐ ┌───┬──┬──┬┬─┬──┐
1001 DR SR 111 111 0001 DR SR1 0 00 SR2 0101 DR SR1 0 00 SR2
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
┌───┬──┬──┬┬────┐ ┌───┬──┬──┬┬────┐
0001 DR SR1 1 Imm5 0101 DR SR1 1 Imm5

Operation DR ← NOT SR DR ← SR1+SR2 DR ← SR1 AND SR2


DR ← SR1+SEXT(Imm5) DR ← SR1 AND SEXT(Imm5)
Example

Instructiuni de transfer date ( instructiuni cu referire la memorie )


Instructio LD LDI LDR LEA
n LoaD (direct) LoaD Indirect LoaD indexat (Register) Load Effective Address
(load cu mod de adresare direct) (load cu mod de adresare indirect) (load cu mod de adresare indexat) (load cu mod de adresare imediat)
Assembler
LD DR, Label LDI DR, Label LDR DR, BaseR, index6 LEA DR, Label
format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Encoding
┌───┬──┬────────┐ ┌───┬──┬────────┐ ┌───┬──┬──┬─────┐ ┌───┬──┬────────┐
0010 DR Pageoffset9 1010 DR Pageoffset9 0110 DR BaseR Index6 1110 DR Pageoffset9

Operation -se calculează adresa efectivă EA, de pointer address ← PC+SEXT(pgoffset9) EA ← BaseR+ZEXT(index6) EA ← PC+SEXT(pgoffset9)
unde se va citi informaţia din memorie: EA ← Mem[pointer address] DR ← Mem[EA] DR ← EA
EA ← PC+SEXT(pgoffset9) DR ← Mem[EA]
DR ← Mem[EA] -încarcă în registrul destinaţie conţinutul de -încarcă în registrul destinaţie conţinutul -încarcă în registrul destinaţie
-încarcă în registrul destinaţie conţinutul memorie de la adresa efectivă de memorie de la adresa efectivă valoarea EA (nu conţinutul de
de memorie de la adresa efectivă memorie de la adresă)
Example

Instructio ST STI STR


n STore (direct) STore Indirect STore indexat (Register)
Assembler
ST SR, Label STI SR, Label STR SR, BaseR, index6
format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Encoding
┌───┬──┬────────┐ ┌───┬──┬────────┐ ┌───┬──┬──┬─────┐
0011 SR Pageoffset9 1011 SR Pageoffset9 0111 SR BaseR Index6

Operation -se calculează adresa efectivă unde se va scrie pointer address ← PC+SEXT(pgoffset9) EA ← BaseR+ZEXT(index6)
informaţia în memorie: EA ← Mem[pointer address] Mem[EA] ← SR
EA ← PC+SEXT(pgoffset9) Mem[EA] ← SR
Mem[EA] ← SR
-conţinutul aflat în registrul sursă se scrie în -idem -idem
memorie la adresa efectivă calculată (EA)
Example

Instructiuni de control
Instructio BR
n conditional Branch
(salt conditionat)
Assembler BRn Label (negativ) BRzp Label (pozitiv sau 0)
format BRz Label (= cu 0) BRnp Label (diferit de 0)
BRp Label (pozitiv) BRnz Label (negativ sau 0)
BR+ Label (?????) BRnzp Label (salt neconditionat pe oricare din conditii, echivalent instructiunii JMP,doar ca deplasamentul este pe 9 biti)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Encoding
┌───┬┬┬┬────────┐
0011 n z p Pageoffset9

Operation Label reprezinta EA ← PC+SEXT(pgoffset9)


PC ← PC+SEXT(pgoffset9)
-daca (cel putin) un registru (sau 2) de conditie este setat, saltul se face la adresa specificata prin eticheta Label, noul PC nemaifiind PC+1, ci PC+SEXT(pgoffset9);
-daca nici un registru de conditie nu este setat, saltul nu se face, ci se trece la urmatoarea instructiune din program.
-daca sunt setati toti cei 3 registri booleeni de conditie, saltul se face neconditionat pe oricare din conditii.
Example

Intreruperi
Instructio JMP JMPR JSR JSRR
n Jump Jump (BaseR) Jump to SubRoutine Jump to SubRoutine (BaseR)
(salt neconditionat)
Assembler
JMP Label JMP BaseR JSR Label JSRR BaseR
format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Encoding
┌───┬┬──────────┐ ┌───┬──┬──┬─────┐ ┌───┬┬──────────┐ ┌───┬┬─┬──┬─────┐
1100 1 Pageoffset 11 1100 000 BaseR 000000 0100 1 Pageoffset 11 0100 0 00 BaseR 000000

Operation PC ← BaseR PC ← PC+ + SEXT (pgoffset 11) PC ← BaseR

Example

Instructio RET RET + RTI


n RETurn from subroutine RETurn from subroutine ReTurn from Interrupt

Assembler
RET RET RTI
format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Encoding
┌───┬──┬──┬─────┐ ┌───┬──┬──┬─────┐ ┌───┬───────────┐
1100 000 111 000000 1100 000 111 000000 1000 000 000 000 000

Operation PC ← R7 If .....?????????

Example

Apeluri de sistem
Instructio TRAP
n system call

Assembler
TRAP trapvector8
format
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Encoding
┌───┬───┬───────┐
1111 0000 trapvect 8
Operation

Example

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
┌───┬┬┬┬┬┬┬┬┬┬┬┬┐
0 0 0 1 DR SR1 0 0 0 SR2

S-ar putea să vă placă și