diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2022-01-21 13:28:45 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2022-01-21 13:28:45 +0100 |
| commit | c4950dfb23d1fe8cca7cb523d9ae4ea4b4dda2d5 (patch) | |
| tree | 991dd3862f8366a667de73aa03820f1701397e9a /Assemblyinstruktioner.md | |
| parent | e5aa9d5a17d52eb61243a9c45dd2e65f27084c9c (diff) | |
| download | notes-c4950dfb23d1fe8cca7cb523d9ae4ea4b4dda2d5.tar.gz | |
move files
Diffstat (limited to 'Assemblyinstruktioner.md')
| -rw-r--r-- | Assemblyinstruktioner.md | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/Assemblyinstruktioner.md b/Assemblyinstruktioner.md deleted file mode 100644 index ca70684..0000000 --- a/Assemblyinstruktioner.md +++ /dev/null @@ -1,61 +0,0 @@ -Olika arkitekturer har olika instruktionsmängder. - -# [[AVR]] - -Instruktioner kommer i grupper som gör nästan samma sak men på lite olika sätt. -Se till exempel ADD (Add without Carry) och ADC (Add with Carry). - -[Instruktionsmängd på kurshemsidan för TSEA82.](http://www.isy.liu.se/edu/kurs/TSEA82/kursmaterial/5_Avr_instr_set.pdf) - -## Flytta data - -Load (LD, LDI, LDS) kopierar data. MOV kopierar mellan två register. - -## Aritmetiska operationer - -Addition, subtraktion, multiplikation. Division är inte implementerad för den är -för stor till ytan. - -## Logiska operationer - -Hantera register som en hög med bitar. - -Grupp A "vanlig" logik. Exempel: ANDI (Logical And with Immediate). - -Grupp B skiftinstruktioner. Exempel: LSR (Logical Shift Right). Kommer ibland i -två varianter, en logisk och en aritmetisk. Till exempel lämnar ASR (Arithmetic -Shift Right) kvar den mest signifikanta biten eftersom den vid aritmetik -benämner tecknet. Upp till programmeran att se till att rätt sak händer. - -## Hopp - -Anrop (CALL) är inte hopp eftersom de returnerar (RET). - -Ovillkorligt: JMP (Jump) till symboliska adresser. RJMP (Relative Jump) tar -mindre plats men kan inte hoppa lika långt som ett vanlig JMP. - -Villkorligt: BREQ (Branch if Equal). Används för att skapa -control flow. Finns en hög olika BRXX. - -## I/O - instruktioner - -Portar är 8 bitar breda. Enskilda bitar kan fungera som antingen ingång eller -utgång. Styrs via [[Datariktningsregister|datariktningsregistret]] DDRx. -Utvärdet bestäms av portregistret PORTx och invärdet läsen från PINx. x = B, C -eller D beroende på vilken typ av port (se chippet). - -OUT skriver till samtliga 8 bitar. SBI (Set Bit in I/O Register) och CBI (Clear -Bit in I/O Register) hanterar specifika bitar. Kan också använda e.g. SBRC -(Skip if Bit in Register Cleared), SBRS (Skip if Bit in Register Set), SBIC -(Skip if Bit in I/O Register Cleared) och SBIS (Skip if Bit in Register Set) för -att testa och hoppa utifrån värden. - -Exempel: - -```asm -; --- GET_KEY. Bit 2 = 1 if key pressed -GET_KEY: - clr r16 ; r16 <= 0 - sbic PINB,2 ; skip if not pressed - ser r16 ; r16 <= FF -``` |
