LEU240 Mikrodatorsystem
|
|
- Göran Lindström
- för 5 år sedan
- Visningar:
Transkript
1 Institutionen för data- och informationsteknik LEU240 Mikrodatorsystem Vi har tidigare i olika sammanhang sett att det är önskvärt att kunna använda ett högnivåspråk som C för att skriva program för vår mikrokontroller och därmed undvika den mer otympliga assemblerprogrammeringen. Låt oss se hur vi stegvis kan gå över från assemblerkod till C- kod. Vi skall studera ett mycket enkelt exempel som samtidigt innebär hantering av externa portar som ligger minnesmappade till fasta adresser och därför i C måste adresseras med hjälp av pekare till dessa adresser. Genomgången kommer inte att behandla hantering av interrupt i C. Vi kommer att återkomma till detta senare. Antag att vi vill använda labsystemet MC12 för att läsa inporten PORTB (adress $0600) på experimentkortet ML4 och skriva resultatet av läsningen till utporten PORTA (adress $0400) på samma kort. Vi vill göra läsningen och skrivningen kontinuerligt, dvs gång efter gång. I assembler skulle vi skriva Kod 1 ORG $1000 start: LDAA $0600 STAA $0400 BRA start Kod 1 och assemblera den via Eterm. ORG-direktivet anger den minnesadress där programstarten skall placeras och resten av programmet hamnar då på efterföljande adresser. Adressen $1000 är den lägsta adressen i MC12:s RAM-minne och är därför lämplig som startadress för programmet. Låt oss nu flytta över denna kod till utvecklingsmiljön XCC. I denna miljö kommer vi att länka in en startup-fil (_startup.s12) före vår programkod. Denna startup-fil är skriven i assembler och sätter upp processorns grundkonfiguration och initierar en enkel seriekommunikation så att vi kan låta en applikation skriva meddelanden till XCC:s terminalfönster. Vi återkommer till denna fil i annat sammanhang. Vi måste dock redan här känna till att denna fil efter initieringen avslutas med hopp till labeln _main och det måste då här innebära ett hopp till vår programkod. Denna label måste då ligga först i vår programkod så att programkoden CHALMERS TEKNISKA HÖGSKOLA Institutionen för data- och informationsteknik Sida 1 Avdelningen för datorteknik Besöksadress: Rännvägen Göteborg
2 anropas efter initieringen. Vi återkommer lite senare till varför labeln inleds med en understrykning (_). Samtidigt kommer länkarskriptet (default.lsc) som styr hur koden skall länkas ihop och var den skall placeras i minnet att ta hand om minnesallokeringen. Vi återkommer även till denna fil. Startup-filen kommer av länkaren att placeras med start på adress $1000 i minnet och vår kod kommer att placeras på nästföljande adress efter startupkoden. Vilka adresser vårt program placeras på är nu ointressant eftersom länkaren kommer att sköta om hoppet från startup-kod till vårt programavsnitt. Då detta nu sköts av länkarskriptet så skall vi i vår programkod Kod 1 ta bort ORG-direktivet samtidigt som vi ersätter start-labeln med labeln _main. Vi får Kod 2 define _main _main: LDAA $0600 STAA $0400 BRA _main Kod 2 segment bss Som synes har vi även infört ett define-direktiv. Detta för att labeln _main skall vara synlig i resten av projektet. Segmentdeklarationen för att skapa ett bss-segment för oinitierade variabler kan synas omotiverad men vi måste införa denna deklaration då länkaren förutsätter att det finns ett bss-segment. Detta sätts i normala fall upp av C-kompilatorn men här körs inte C-kompilatorn utan bara assemblatorn, då vi bara har en assemblerfil, och bss-segmentet kommer inte att sättas upp om vi inte anger det explicit. Låt oss nu börja att steg för steg överföra koden till C. Vi börjar med att införa ett huvudprogram, en main()-rutin. Då denna rutin kompileras så sker detta genom att C-koden först översätts till assembler och rutinens namn, här main, kommer att ersättas av en label med samma namn men föregången av en understrykning (_) för att särskilja den från lablar som kommer från assemblerkod som vi själva har skrivit. Det betyder att här kommer den till assembler översatta main-rutinen att inledas av labeln _main precis som i Kod 2 och den kommer då att anropas av startup-rutinen. Vi startar kodöversättningen med att införa huvudprogrammet och behålla vår assemblerkod och helt enkelt skriva vårt program som inline-assembler. Vi får Kod 3 asm(" LDAA 0x0600"); asm(" STAA 0x0400"); asm(" BRA _main"); Kod 3 Lägg märke till de dubbla understrykningarna i kommandot asm. Lägg också märke till att de assembleruttryck som saknar label måste inledas med ett mellanslag (eller ett tabsteg). Dessa uttryck måste precis som i vanlig assemblerkod vara intabbade för att inte tolkas som sida 2
3 lablar. Observera också att vi har utnyttjat rutinens namn som återhoppsadress i loopen samt att vi skriver hexadecimala tal via förstavelsen 0x och inte via $. Det senare gör vi för att förstavelsen 0x fungerar både i assembler och C medan förstavelsen $ bara fungerar i assembler. För att göra koden lite mer läsbar så kan vi börja med att deklarera portadresserna som konstanter med begripliga namn, Kod 4 #define ML4_PORTB 0x0600 #define ML4_PORTA 0x0400 Lägg märke till att assemblerdirektiven ML4_PORTB EQU 0x0600 ML4_PORTA EQU 0x0400 Inte fungerar i C, däremot fungerar #define-direktiven både i assembler och C varför det är lämpligt att alltid använda dess. asm(" LDAA %a",ml4_portb); asm(" STAA %a",ml4_porta); asm(" BRA _main"); Kod 4 Lägg märke till att konstanterna inte kan skrivas in direkt i inline-assemblerkoden utan måste läggas till som ett argument. Detta beror på att koden i inline-uttrycket kommer att överförs till assemblatorn som en textsträng och namnen skulle om de skrivits in direkt i assemblerkommandona då bli delar av textsträngen och inte tolkats som våra definierade konstanter, dvs som adresser. Nästa steg i förenklingen kan vara att samla alla deklarationer rörande HC12 i en h-fil som vi inkluderar. h-filen skulle här då ha ett innehåll enligt Kod 5 #define ML4_PORTB 0x0600 #define ML4_PORTA 0x0400 Kod 5 Låt oss kalla filen HC12.h. Vår programkod blir nu då Kod 6 sida 3
4 asm(" LDAA %a",ml4_portb); asm(" STAA %a",ml4_porta); asm(" BRA _main"); Kod 6 Delen..\ i include-kommandot betyder att filen inte ligger i den aktuella projektkatalogen utan ett steg uppåt i katalogstrukturen. Vi gör detta för för att filen enkelt skall kunna användas av alla projekt i aktuellt workspace. Vi går vidare och gör den första övergången till C genom att skriva evighetsloopen som en while-loop i C, Kod 7 asm(" LDAA %a",ml4_portb); asm(" STAA %a",ml4_porta); Kod 7 Förfarandet är välkänt från C och kräver väl knappast någon kommentar. Låt oss nu lämna inline-assembler och i stället skriva assemblerkoden som en subrutin i assembler, en rutin som vi anropar från main-funktionen. Vi behöver alltså dels en C-fil med huvudprogrammet enligt Kod 8 asm(" JSR start"); Kod 8 och dessutom en assemblerfil med subrutinen i Kod 9 sida 4
5 USE "..\HC12.h" define start entry start start: LDAA ML4_PORTB STAA ML4_PORTA Kod 9 exit start define-direktivet behövs för att labeln start skall vara synlig globalt. entry- och exit-direktiven används av debuggern och inte nödvändiga för själva programmet. Observera att samma h-fil med definitioner kan användas i både C och assembler, detta tack vara att vi använder #define-direktiv som är tillåtna i både C och assembler och inte assembler-skrivsättet med EQU som inte fungerar i C. Lägg märke till att i assembler inkluderas h-filen via USE-direktiv och inte via #includedirektiv. Lägg också märke till att vi har återinfört labeln start som anropslabel för vårt subrutinanrop. Låt oss gå ytterligare ett steg genom att skriva subrutinanropet med C-syntax, Kod 10 start(); Kod 10 Som vi minns från tidigare så kommer funktionsnamnet start på den anropade funktionen att översättas till en label som inleds med en understrykning (_) då koden kompileras till assembler, dvs den blir _start vilket gör att vi måste ändra labelnamnet i subrutinen genom att inleda labeln med understrykningen, Kod 11 sida 5
6 USE "..\HC12.h" define _start entry _start _start: LDAA ML4_PORTB STAA ML4_PORTA exit _start Kod 11 Vi går nu över helt till C genom att införa pekare för att adressera de fysiska adresserna till våra portar. Samtidigt tar vi bort subrutinen då vårt huvudprogram nu ändå blir bara en rad långt. Vi bygger alltså vidare på Kod 7. Vi får Kod 12 *((unsigned char *)(0x0400))= =*((unsigned char *)(0x0600)); Kod 12 Raden med pekarna är medvetet delad i två delar för att öka läsbarheten. Även här kan vi naturligtvis använda våra konstantdeklarationer för adresserna som används i pekarna, Kod 13 *((unsigned char *)(ML4_PORTA))= =*((unsigned char *)(ML4_PORTB)); Kod 13 Vi ser att dessa pekarkommandon är ganska komplicerade och långa. Då vi använder dem så är risken mycket stor att vi skriver fel och blandar ihop alla asterisker och parenteser. Låt oss därför deklarera makron som kan ersätta våra pekare. De portar vi hanterar har 8 bitar så vår pekare skall vara av typen char. Då vi i de flesta fall skall hantera ett bitmönster och inte ett sida 6
7 8 bitars tal med tecken så är datatypen unsigned char lämplig eftersom vi på detta sätt undviker att talet (bitmönstret) teckenkompletteras på ett felaktigt sätt. Vi får Kod 14 #define REG8(x) *((unsigned char *)(x)) REG8(ML4_PORTA)=REG8(ML4_PORTB); Kod 14 Även här är det lämpligt att samla våra makrodeklarationer i en h-fil som kan användas av alla projekt, dvs vi lägger h-filen en katalognivå upp. Eftersom det också kan förekomma att vi adresserar 16 och eventuellt 32 bitars objekt så kan vi här också deklarera REG16 och REG32 med hjälp av datatyperna unsigned short respektive unsigned long. Det är i alla lägen lämpligare att använda short och long i stället för int då short alltid är 16 bitar och long alltid är 32 bitar medan int kan vara 16 eller 32 bitar beroende på utvecklingsmiljö. Vi får Kod 15 #include../hc12.h #include../reg_macro.h REG8(ML4_PORTA)=REG8(ML4_PORTB) Kod 15 Där h-filen reg_macro.h då har innehållet enligt Kod 16 #define REG8(x) *((unsigned char *)(x)) #define REG16(x) *((unsigned short *)(x)) #define REG32(x) *((unsigned long *)(x)) Kod 16 I och med detta avslutar vi övergången från assembler till C. sida 7
Digital- och datorteknik
Digital- och datorteknik Föreläsning #18 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Assemblerprogrammering Assemblatorer vs kompilatorer
Digital- och datorteknik
Digital- och datorteknik Föreläsning #8 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Assemblatorer vs kompilatorer En assemblator är ett program
Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne
Programallokering Att placera program i flashrespektive RAM-minne Program i FLASH-minne Bara lokala variabler Globala oinitierade variabler Globala initierade variabler Program med avbrott Program i RAM-minne
LEU240 Mikrodatorsystem Att placera program i FLASHrespektive
Institutionen data- och informationsteknik 2011-10-31 Att placera program i FLASHrespektive RAM-minne Följande resonemang gäller för processorn MC9S12DG256B. Vi kommer i görligaste mån att skriva våra
Att använda pekare i. C-kod
Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare
F5: Högnivåprogrammering
F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via
F5: Högnivåprogrammering
1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data
Digital- och datorteknik
Digital- och datorteknik Föreläsning #17 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Tallriksmodellen Stackoperationer Element kan endast
Lösningar till tentamen i EIT070 Datorteknik
Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Torsdagen den 13 mars 2014, klockan 14:00 19:00 i MA:10. Tillåtna hjälpmedel: på tentan utdelad formelsamling,
Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe
Fortsä'ning Pekare Ulf Assarsson Originalslides av Viktor Kämpe Pekare och Arrayer/VK 2 Pekare och Arrayer/VK 3 Förra föreläsningen Pekare Bll data Arrayer fix storlek och adress Dynamisk minnesallokering
Lathund. C för inbyggda system
Lathund C för inbyggda system Revision 2 2001-04-13 Anders Arvidsson Jonny Martinsson Synpunkter välkomnas! Innehållsförteckning 1 Introduktion... 3 1.1 Assembler kontra C... 3 1.2 Kodexempel... 3 1.3
Övning2 Datorteknik, HH vt12 - Programmering
Övning2 Datorteknik, HH vt12 - Programmering För denna övning behöver man adresskarta och beskrivning av laborationsplattform. Finns bland föreläsningsanteckning samt i bilaga l till Lab l. Använd även
Assemblerprogrammering del 1
Assemblerprogrammering del 1 Dagens föreläsning behandlar: Kompendiet kapitel 9 Arbetsboken kapitel 15 Ur innehållet: Assemblerspråket Programmerarens bild Assemblering/disassemblering Funktion: Översätter
7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.
1(5) Övningstentamen i Mikrodatorer och assemblerprogrammering, ELGA05 Hjälpmedel: Bifogad lista med memokoder för MC68xxx. Samtliga programmeringsuppgifter ska innehålla flödesschema med förklaringar
Lathund. C för inbyggda system
Lathund C för inbyggda system Revision 1 2000-09-21 Anders Arvidsson Jonny Martinsson Synpunkter välkomnas! Innehållsförteckning 1 Introduktion...3 1.1 Assembler kontra C...3 1.2 Kodexempel...3 1.3 MPLAB...4
Programmering i maskinspråk (Maskinassemblering)
Programmering i maskinspråk (Maskinassemblering) Programutveckling i assemblerspråk Begreppet assemblerspråk introduceras i häftet Ext-20. En del korta programavsnitt skrivs med assemblerspråk i övningsuppgifterna
CPU. Carry/Borrow IX. Programräknare
Laboration:. Jämförelser mellan assembler och C. CPU ACCA ACCD ACCB 8-bitars ackumulatorer eller 16- bitars ackumulator CCR 1 1 1 SXH I NZVC Flaggregister Carry/Borrow IX IY PC Indexregister X Indexregister
Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704
Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704 Svar Svar till uppgifterna lämnas på separat papper. En poäng per uppgift. Max 30 poäng. Bonuspoäng beräknas enligt följande tabell: 6-10 poäng
Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.
Datorteknik Tomas Nordström Föreläsning 6 För utveckling av verksamhet, produkter och livskvalitet. Föreläsning 6 Vad händer vid uppstart SoC och Kringkretsar, PIO Programmering i Assembler Lab2 genomgång
CE_O3. Nios II. Inför lab nios2time
IS1200 Exempelsamling till övning CE_O3, 2015 CE_O3. Nios II. Inför lab nios2time 3.1. Logiska operationer (se uppgift 1.2 c) Repetera (eller lär dig) innebörden av de logiska operationerna "bitvis AND",
I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.
Laboration:. Jämförelser mellan assembler och C. I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal. Förberedelser:
Assemblerprogrammets struktur; exempel
Maskinorienterad Programmering 2010/11 Maskinnära programmering en introduktion Ur innehållet: Assemblatorn, assemblerspråk Datatyper Tilldelningar, l i unära och binära operationer Permanenta/tillfälliga
Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe
Kodningskonventioner Viktor Kämpe Varför kodningskonventioner? Förståelse för Skillnaden mellan lokala/globala variabler. Funktionsargument. Returvärde. Möjliggör Mix av assembler och C. Kodningskonventioner/VK
Datorteknik 2 (AVR 2)
Namn: Laborationen godkänd: Digitala system 15 hp Datorteknik 2 (AVR 2) LTH Ingenjörshögskolan vid Campus Helsingborg Enkel in- och utmatning. Drivrutiner. Bithantering. I denna laboration ska vi förbättra
Maskinorienterad Programmering 2010/11
Maskinorienterad Programmering 2010/11 Maskinnära programmering en introduktion Ur innehållet: Assemblatorn, assemblerspråk Datatyper Tilldelningar, l i unära och binära operationer Permanenta/tillfälliga
Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe
Fortsä'ning Pekare Ulf Assarsson Originalslides av Viktor Kämpe Pekare och Arrayer/VK 2 Pekare och Arrayer/VK 3 Förra föreläsningen Pekare Bll data Arrayer fix storlek och adress Dynamisk minnesallokering
Digital- och datorteknik
Digital- och datorteknik Föreläsning #17 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola F-36 FLEX- och FLIS-datorn Ext-8 Tallriksmodellen Stackoperationer
Maskinorienterad programmering
Maskinorienterad programmering Sammanfattning Ur innehållet: Vi rekapitulerar kursens syften Vi repeterar kursens lärandemål Vi belyser hur den skriftliga delen av examinationen genomförs. Sammanfattning
Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära
Assemblerprogrammering för ARM del 2
Assemblerprogrammering för ARM del 2 Ur innehållet Programflöde Subrutiner, parametrar och returvärden Tillfälliga (lokala) variabler Läsanvisningar: Arbetsbok kap 2 Quick-guide, instruktionslistan Assemblerprogrammering
Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?
Mål Datorteknik Föreläsning 3 Att veta hur maskinkoden för ett program byggs upp Att börja programmera i på riktigt Att kunna skriva och anropa subrutiner i Att förstå hur stacken fungerar Att veta vad
Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående
Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte
CT3760 Mikrodatorteknik Föreläsning 4 Tisdag 2005-09-06 Stacken I datasammmanhang är en stack ett minnesområde. Det är processorn som använder stacken. För att skapa en stack anger man en adress i stackpekarregistret.
#include <pic.h> #include <sys.h> char LEFT,RIGHT,MOTORHASTIGHET;
Att avlusa en rad Assembler tar lika lång tid som att avlusa en rad C. Att skriva i C gör att man är utlämnad till kompilatorns sätt att göra assembler koden. Assembler ger fullständig kontroll över tider.
Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik
Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 - Inbyggda system - Analog till digital signal - Utvecklingssystem, målsystem - Labutrustningen - Uppbyggnad av mikrokontroller - Masinkod, assemblerkod
Institutionen för elektro- och informationsteknologi, LTH
Datorteknik Föreläsning 2 Programmering i C och assembler MIPS instruktionsarkitektur Mål Att ge en inblick i programspråket C Att veta varför assemblerprogrammering är viktigt Att börja arbeta med MIPS-assembler
Datorteknik. Föreläsning 2. Programmering i C och assembler MIPS instruktionsarkitektur. Institutionen för elektro- och informationsteknologi, LTH
Datorteknik Föreläsning 2 Programmering i C och assembler MIPS instruktionsarkitektur Mål Att ge en inblick i programspråket C Att veta varför assemblerprogrammering är viktigt Att börja arbeta med MIPS-assembler
Mål. Datorteknik. Innehåll. Vad händer med en add-instruktion? Vad händer med en add-instruktion. Instruktioner som bitmönster i minnet
Mål Datorteknik Föreläsning 2 Att ge en inblick i programspråket C Att veta varför assemblerprogrammering är viktigt Att börja arbeta med MIPS-assembler Att känna till något om programmeringstekniker Att
Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010
STYRNING - i Mikrodatorteknik för U2 2010 1. Uppgift M10 (5p) aug-09 Skriv ett program i PIC-assembler som - gör PortB till utport - ettställer bit 0, 3 och 4 i PortB - nollställer bit 5 och 6 i PortB
Laboration 2 i Datorteknik- Assemblerprogrammering II
Högskolan i Halmstad 1 (8) - Assemblerprogrammering II Målet med laborationen är att få begrepp om Subrutiner. in/utparametrar. Lokala variabler Maska in bitar till ett register Konstruktion av subrutiner
Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.
Övningsuppgifter Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP. F.2 Ett antal på varandra följande minnesord har
Assemblerprogrammets. struktur; exempel
Assemblerprogrammering för HCS12 Absolut assemblering Ur innehållet: Assemblatorn, assemblerspråk Ordlängder och datatyper Tilldelningar, binära operationer Registerspill, permanenta och tillfälliga variabler
Assemblerprogrammering för HCS12
Assemblerprogrammering för HCS12 Ur innehållet: Assemblatorn, assemblerspråk Ordlängder och datatyper Tilldelningar, binära operationer Registerspill, permanenta och tillfälliga variabler Programkonstruktioner
Tentamen med lösningsförslag
Institutionen för data- och informationsteknik CHALMERS TEKNISKA HÖGSKOLA Tentamen med lösningsförslag Programmering av inbyggda system Exempel 2 Examinator Roger Johansson, tel. 772 57 29 Kontaktpersoner
TSEA28 Datorteknik Y (och U)
TSEA28 Datorteknik Y (och U), föreläsning 2, Kent Palmkvist 2018-01-16 3 TSEA28 Datorteknik Y (och U) Föreläsning 2 Kent Palmkvist, ISY Praktiska kommentarer Mail kommer skickas ut när labanmälan är möjlig
General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18
F3 Föreläsning i Mikrodatorteknink 2006-08-29 Kärnan i microcontrollern består av ett antal register och en ALU. Till detta kommer också ett antal portar. Det finns 64 st portar. Några är anslutna mot
Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då
Agenda Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer Övningar nu och då 1 Motivering I de flesta problem ingår att hantera multipla data I de
Maskinorienterad programmering
Institutionen för data- och informationsteknik Avdelningen för datorteknik TENTAMEN KURSNAMN Maskinorienterad programmering PROGRAM: Dataingenjör och elektroingenjör åk 1/ lp 3 Mekatronikingenjör åk 2/
Maskinorienterad programmering
Institutionen för data- och informationsteknik Avdelningen för datorteknik TENTAMEN KURSNAMN Maskinorienterad programmering PROGRAM: Dataingenjör och elektroingenjör åk 1/ lp 3 Mekatronikingenjör åk 2/
Institutionen för elektro- och informationsteknologi, LTH
Datorteknik Föreläsning 3 Assembler, stack och subrutiner, programmeringskonventionen Mål Att veta hur maskinkoden för ett program byggs upp Att börja programmera i assembler på riktigt Att kunna skriva
Tentamen med lösningsförslag
Institutionen för data- och informationsteknik CHALMERS TEKNISKA HÖGSKOLA Tentamen med lösningsförslag EDA482 (EDA481) Maskinorienterad programmering D EDA487 (EDA486) Maskinorienterad programmering Z
Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH
Datorteknik Föreläsning 3 Assembler, stack och subrutiner, programmeringskonventionen Mål Att veta hur maskinkoden för ett program byggs upp Att börja programmera i assembler på riktigt Att kunna skriva
Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen.
Institutionen för data- och informationsteknik Avdelningen för datorteknik TENTAMEN KURSNAMN Maskinorienterad programmering PROGRAM: Dataingenjör och elektroingenjör åk 1/ lp 3 Mekatronikingenjör åk 2/
EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)
EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7) 1. Motivation ROM. 8kbyte 2 3 2 10 byte 13 Adressbitar [A12,A0] direkt till ROM-kapsel. RWM. 32kbyte 2 5 2 10 byte 15 Adressbitar
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
Enkla datatyper minne
Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in
DATORTEKNIK Laboration: 277 Tutorial för IAR Embedded Workbench och C-Spy mot MC68HC11 i Assembler och C
TFE/pk/hj 02-03-23 ver 1.2 DATORTEKNIK Laboration: 277 Tutorial för IAR Embedded Workbench och C-Spy mot MC68HC11 i Assembler och C 1. Översikt Denna tutorial innehåller tre exempel för HC11:an. De exempel
Stack och subrutiner Programmeringskonventionen
Stack och subrutiner Programmeringskonventionen Du ska förstå hur en instruktion behandlas i processorn Du ska känna till några fler instruktioner Du ska veta hur maskinkoden för ett program byggs upp
Ulf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volafle, #define Arrayer av pekare, arrayer av arrayer Hemuppgi9er: v2. Föregående
Lösningar till tentamen i EIT070 Datorteknik
Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 13 mars 2013, klockan 14:00 19:00 i Vic 2 A-D, 3 A-C. Tillåtna hjälpmedel: på tentan utdelad
Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.
ATMega16 Laborationer av Kjell 2 Rev:5 Datum: 29.09.2010 Page 1 of 7 Laboration 4: Knappstuds Drivrutiner för att eliminera störningar. Inledning: Laborationskortet EasyAVR6 har bland annat tryckknappar
EDA Digital och Datorteknik
Digital och Datorteknik EDA45 200/20 EDA 45 - Digital och Datorteknik Dagens föreläsning:, Extra material Ext 8 Ur innehållet: Programmerarens bild av FLEX Instruktionsuppsättning Register åtkomliga för
Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile.
CT3760 Mikrodatorteknik Föreläsning 2 Tisdag 2005-08-30 Minnestyper. Atmega 16 innehåller följande minnestyper: SRAM för dataminne FLASH för programminne EEPROM för parametrar och konstanter. Minnen delas
Programexempel för FLEX
Aktivera Kursens mål: Konstruera en dator mha grindar och programmera denna Aktivera Förra veckans mål: Konstruera styrenheten. genom att. implementera olika maskininstruktioner i styrenheten. Kunna använda
Extrauppgifter för CPU12
1 Extrauppgifter för CPU12 X1a) Skriv en instruktionssekvens som nollställer bit 3-0 i alla minnesord i adressintervallet 2035H, 2049H Använd X-registret för adressering X1b) Skriv en subrutin som maskerar
IS1200 Datorteknik. Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1
IS1200 Datorteknik Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1 1 4.1 Little och big endian 2 Nios II? Nios II är Little-endian (men eftersom det är en soft-processor
Laboration 3 i Digital- och Mikrodatorteknik. Utvecklingssystemet MPLAB IDE Grundläggande assemblerprogrammering för PIC
Laboration 3 i Utvecklingssystemet MPLAB Grundläggande assemblerprogrammering för PIC Målet med laborationen är att få begrepp om Assemblerprogrammering med MPLAB Grundläggande assembler Enkel inmatning
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
Datorteknik TSIU02 Lab 2 Morsesändare v0.7
Inledning För att skriva program i något programspråk förenklar det att ha ett strukturerat angreppssätt. I assembler får man strukturen genom omsorgsfull användning av subrutiner. Som exempel på en mer
Assemblerprogrammering
2012-02-14 Assemblerprogrammering Övningsuppgifter 2011 Lösningar (Med reservation för diverse fel!) 1. Hur många E-klockperioder använder CPU12 (HCS12) för att köra programsekvensen nedan? ORG $1000 LDAA
Programmering i maskinspråk (Maskinassemblering)
Ext-15 (2013-08-26) sida 1 Programmering i maskinspråk (Maskinassemblering) Programutveckling i assemblerspråk Begreppet assemblerspråk introduceras i arbetsboken (ARB) kapitlen 14-16. En del korta programavsnitt
Digital- och datorteknik
Digital- och datorteknik Föreläsning #23 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Översikt När flera minnesmoduler placeras i processorns
Tentamen med lösningsförslag
Institutionen för data- och informationsteknik CHALMERS TEKNISKA HÖGSKOLA Tentamen med lösningsförslag LEU500 Maskinorienterad programmering Måndag 16 mars 2015, 14.00-18.00 Examinator Roger Johansson,
Lathund. Pacific C för MS-DOS
Lathund Pacific C för MS-DOS Revision 2 2003-08-28 Anders Arvidsson Karl-Johan Krantz Synpunkter välkomnas! Innehållsförteckning 1 Introduktion...3 1.1 Assembler kontra C...3 1.2 Kodexempel...3 1.3 PACIFIC
Programmering av inbyggda system 2014/2015
Programmering av inbyggda system 2014/2015 Sammanfattning Kursens syften är att vara en introduktion till konstruktion av små inbyggda system och att ge en förståelse för hur imperativa styrstrukturer
Föreläsning 10. Pekare (Pointers)
Föreläsning 10 Pekare (Pointers) Dagens kluringar int a=5; int f(int b) a--; b++; return b; int main() int a=3; printf("%d,",f(a)); printf("%d",a); return 0; int f(int a) if(a==1) return a; else return
Övning från förra gången: readword
(9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver
Tillämpad digital signalbehandling Signalprocessorn Statiska moduler och buffrar
Institutionen för data- och elektroteknik 2004-02-22 Inledning En statisk modul bevaras i programminnet mellan bootsidor genom att länkaren ser till att den hamnar i en del av programminnet som inte skrivs
Ansvarig lärare: Olof Andersson, Telefon 021-101314 (besöker skrivsalen)
MÄLRLENS HÖGSKOL Institutionen för elektroteknik Tentamen Mikrodatorteknik T3760 atum 2005-10-28 Tid 08.30 12.30 nsvarig lärare: Olof ndersson, Telefon 021-101314 (besöker skrivsalen) Om du klarat samtliga
Föreläsning 2. Operativsystem och programmering
Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data
TSEA28 Datorteknik Y (och U)
TSEA28 Datorteknik Y (och U), föreläsning 2, Kent Palmkvist 2019-01-22 3 TSEA28 Datorteknik Y (och U) Föreläsning 2 Kent Palmkvist, ISY Praktiska kommentarer Labanmälan öppnar måndag 28/1 kl 12.30 Anmälningssystemet
Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. Lars-Eric Arebrink
Institutionen för data- och informationsteknik Avdelningen för datorteknik TENTAMEN KURSNAMN Maskinorienterad programmering PROGRAM: Dataingenjör och elektroingenjör åk 1/ lp 3 Mekatronikingenjör åk 2/
Det finns många flaggor till g++,
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta
Digital- och datorteknik
Digital- och datorteknik Föreläsning #23 Översikt När flera smoduler placeras i processorns adressrum ansluts modulernas adressingångar till motsvarande ledningar i en. Övriga adressledningar i bussen
Systemkonstruktion LABORATION REALTIDSPROGRAMMERING
Systemkonstruktion LABORATION REALTIDSPROGRAMMERING Laborationsansvariga: Anders Arvidsson, Björn Lundblad Utskriftsdatum: 2002-10-31 Laboranter: 1 Syfte Denna laboration syftar till att öva användningen
Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock
Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.
Skizz till en enkel databas
Skizz till en enkel databas Data: Register En vektor Funktioner: Databas Initiera huvudloop Avsluta Poster (struct( struct) val Mata in Skriv ut Spara Hämta Ändra Radera Enligt diskussion 1999-11-23 Bertil
Laboration 1 i Datorteknik. Utvecklingssystemet IAR Embedded Workbench Grundläggande assemblerprogrammering för ARM
Laboration 1 i Utvecklingssystemet IAR Embedded Workbench Grundläggande assemblerprogrammering för ARM Målet med laborationen är att få begrepp om Assemblerprogrammering med IAR Embedded Workbench Grundläggande
TDDC76 - Programmering och Datastrukturer
TDDC76 - Programmering och Datastrukturer Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 20 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 20 Internminne
Tentamen i EIT070 Datorteknik
Tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 10 mars 2010, klockan 08:00 13:00 å Victoriastadion 1 och 2. Tillåtna hjälpmedel: på tentan utdelad formelsamling,
Övningsuppgifter i Mikrodatorteknik 4p/5p
Övningsuppgifter i Benny Thörnberg Mittuniversitetet Inst. för Informationsteknologi och medier Hösten 2005 1 Exekvering av assemblerkod 1.1 Statusflaggors beteende Vad blir C-, N- och Z- flaggornas värden
Hantering av textsträngar och talsträngar. William Sandqvist
Hantering av textsträngar och talsträngar Strängen Hello world! PIC-processorerna lagrar strängkonstanter med bokstäverna inbakade i en följd av instruktioner (en tabell). Man hämtar en bokstav genom att
Programmering av inbyggda system. Pekare och Arrayer. Viktor Kämpe
Pekare och Arrayer Viktor Kämpe Pekare Pekarens värde är en adress. Pekarens typ berättar hur man tolkar bitarna som finns på adressen. unsigned char* pek 0x3026 0x3026 0110 0001 typ värdet är en adress...
Exempel på tentamen 1
Maskinorienterad programmering - har du uppnått kursmålen Exempel på tentamen Tisdag xx januari 2005, kl. 08.30-2.30 i M-salar Examinatorer Stig-Göran Larsson, tel. 772 693 Jan Skansholm, tel. 772 02 Kontaktpersoner
Arduinokurs. Kurstillfälle 4
Kurstillfälle 4 CW-generering Det här kan ses som överkurs men kan ändå vara roligt för att kunna generera CW på ett enkelt sätt. Det blir en hel del nytt men vi tar det steg för steg Som alla vet gäller
Datorteknik Övningsuppgifter
1 Datorteknik Övningsuppgifter Stefan Gustafsson, Michael Josefsson ver 0.4 2017-10-11 OBS! I uppgifterna får du själv mata in relevanta data för programmen. Vid simulering nollställs samtliga register
Anteckningar 1: Grundläggande saker
UPPSALA UNIVERSITET Institutionen för lingvistik och filologi Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv11/pst1/ Programmering för språkteknologer I Anteckningar 1: Grundläggande saker 1 Programmering