summaryrefslogtreecommitdiffstats
path: root/Assemblyinstruktioner.md
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2022-01-21 13:28:45 +0100
committerGustav Sörnäs <gustav@sornas.net>2022-01-21 13:28:45 +0100
commitc4950dfb23d1fe8cca7cb523d9ae4ea4b4dda2d5 (patch)
tree991dd3862f8366a667de73aa03820f1701397e9a /Assemblyinstruktioner.md
parente5aa9d5a17d52eb61243a9c45dd2e65f27084c9c (diff)
downloadnotes-c4950dfb23d1fe8cca7cb523d9ae4ea4b4dda2d5.tar.gz
move files
Diffstat (limited to 'Assemblyinstruktioner.md')
-rw-r--r--Assemblyinstruktioner.md61
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
-```