This shows you the differences between two versions of the page.
apm:laboratoare:03:continut [2025/10/18 17:40] horia.moroianu3101 [0. Friendly reminders] |
apm:laboratoare:03:continut [2025/10/18 17:57] (current) horia.moroianu3101 [1. Overview] |
||
---|---|---|---|
Line 122: | Line 122: | ||
=== 2.2 Semnale importante în scheletul de cod === | === 2.2 Semnale importante în scheletul de cod === | ||
- | Fata de laboratorul anterior, veți găsi o serie de semnale noi ce au fost adăugate unor modulelor procesorului nostru pentru a putea permite implementarea instrucțiunilor de lucru cu memoria. În această secțiune va fi explicat pe scurt rolul acestor semnale noi și utilitatea lor. | + | Fata de laboratorul anterior, veți găsi o serie de semnale noi ce au fost adăugate modulelor procesorului nostru pentru a putea permite implementarea instrucțiunilor de lucru cu memoria. În această secțiune va fi explicat pe scurt rolul acestor semnale noi și utilitatea lor: |
- **//decode.v//** | - **//decode.v//** | ||
Line 144: | Line 144: | ||
* //LDD Rd, Y// - in aceasta varianta, adresa din registrul Y este nemodificata în urma execuției | * //LDD Rd, Y// - in aceasta varianta, adresa din registrul Y este nemodificata în urma execuției | ||
* //LDD Rd, Y+// - Post increment; adresa este incrementata după ce se face accesul | * //LDD Rd, Y+// - Post increment; adresa este incrementata după ce se face accesul | ||
- | * //LDD Rd, -Y// - Pre increment; adresa este decrementată înainte de a se face accesul | + | * //LDD Rd, -Y// - Pre decrement; adresa este decrementată înainte de a se face accesul |
* //LDD Rd, (Y+q)// - Displacement; adresa de la care se citește este specificata de registrul Y plus un deplasament (o constanta pe 6 biți codificata în instrucțiune) | * //LDD Rd, (Y+q)// - Displacement; adresa de la care se citește este specificata de registrul Y plus un deplasament (o constanta pe 6 biți codificata în instrucțiune) | ||
- **LDS** - Instrucțiune pentru load direct din spațiul de date în registru. Asemănător cu LDI, aceasta instrucțiune codifica o constanta //k//, însă aceasta are o semnificație cu totul diferita. Aici, //k// codifica adresa din spațiul de date de la care se va face operația de load. Formula pentru calculul acestei adrese o găsim în datasheet: //**ADDR[7:0] = (~INST[8], INST[8], INST[10], INST[9], INST[3], INST[2], INST[1], INST[0])**//. biții 10, 9, 8, 3, 2, 1, 0 din instrucțiune reprezinta biții ce îl codifica pe //k//. | - **LDS** - Instrucțiune pentru load direct din spațiul de date în registru. Asemănător cu LDI, aceasta instrucțiune codifica o constanta //k//, însă aceasta are o semnificație cu totul diferita. Aici, //k// codifica adresa din spațiul de date de la care se va face operația de load. Formula pentru calculul acestei adrese o găsim în datasheet: //**ADDR[7:0] = (~INST[8], INST[8], INST[10], INST[9], INST[3], INST[2], INST[1], INST[0])**//. biții 10, 9, 8, 3, 2, 1, 0 din instrucțiune reprezinta biții ce îl codifica pe //k//. |