Overordnede kursusmål
At give deltagerne en god viden om simple computer-systemers
opbygning og virkemåde ved gennemgang af de involverede komponenter
og abstraktionsniveauer, som bruges til at håndtere kompleksiteten
af et sådant system. At give deltagerne en forståelse af
grænsefladen mellem en processor/microcontroller og eksterne
enheder.
At gøre deltagerne i stand til at designe, implementere, fejlfinde,
teste og dokumentere computer programmer på forskelige
abstraktionsniveauer: maskinkode, assemblersprog, og højniveau
programmeringssprog (som for eksempel C).
Kurset give en generel forståelse af, hvorledes et simpelt computer
system er opbygget omfattende:
- processor instruktionssæt arkitektur (ISA)
- organisering af hukommelse og "adressing modes"
- "memory mapping", interface til IO kredsløb
Læringsmål
En studerende, der fuldt ud har opfyldt kursets mål, vil kunne:
- Forklare arkitekturen i en simpel computer
- Beskrive de forskellige abstraktionslag, der anvendes i et
computersystem
- Forklare binært repræsentationen af forskellige datatyper
(signed/unsigned integer, char etc) og konvertering mellem
talrepræsentationer (f. eks. binært, decimalt, hexidecimalt)
- Forklare og konstruere softwareprogrammer skrevet i maskinkode,
assembly og et højniveauprogrammeringssprog
- Forklare memory mapped I/O
- Beskrive og bruge pointere i programmer, eksempelvis til at
konstruere simple dynamiske datastrukturer såsom lænkede
lister.
- Forklare, hvorledes programvariable lagres i hukommelsen (heap,
stak, globale variable).
- Forklare relationen mellem assembly og et
højniveauprogrammeringssprog (for eksempel C)
- Konstruere programmer, der gør det muligt for processoren at
styre input/output-enheder
- Bidrage konstruktivt som medlem af et lille
designteam
Kursusindhold
• Instruktionssæt for en simpel CPU.
• Lav-niveau programmering i maskinkode og assembler.
• Virkemåde og intern organisation af en simpel computer.
• ANSI C programmering
• Hukommelseslayout (stak, heap osv.)
• Interaktion med I/O enheder: polling, interrupts, memory mapping
• Programmer, der styrer I/O enheder
• Pointere: Pointere generelt, pointere til arrays, pointere til
pointere, void pointere
• Structs og brugerdefinerede typer. Array af strukturer.
• Preprocessor: Filinkludering, symbolske konstanter
• Funktioner: Syntaks. Pointere til strukturer og funktioner,
static og register variabler. Pointeraritmetik
• Bitwise operationer: Operatorer, shift, bit-field
• I/O: Formatted I/O, streng formattering, filer
Sidst opdateret
04. maj, 2026