HC11 & Programmering i Assembler

Slides:



Advertisements
Liknande presentationer
IT för personligt arbete F5
Advertisements

Varför måste jag ha ett långt och jobbigt lösenord? Jo… det är såhär…
INTRODUKTION TILL PROGRAMMERING
F2 - Intro till Java1 Föreläsning 2 - Intro till Java  Sammanfattning av Lektion 1 (kap 2): • Vad behövs för att kunna programmera? • DrJava • Java •
Styrteknik 7.5 hp distans: SFC med GX IEC PLC5B:1
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
EDA Digital och Datorteknik
Programstruktur: C för enchipsdatorer
Introduktion till C för enchipsdatorer
De fundamentala datatyperna
Programmeringsteknik I: F1 1 Föreläsning 1: Intro till kursen och programmering Kursens hemsida Studentportalen.
William Sandqvist Datorteknik övning 2 Subrutinanrop William Sandqvist
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
23 August 2014 IS1200 Datorteknik vt09, föreläsning 10, (E och I mfl)1 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory.
Programmeringsteknik K och Media
Grundläggande programmering
Föreläsning 2 Datalogi för E1 2D1343
IT för personligt arbete F6
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
Pekare och speciell programstruktur i inbyggda system
Repetition inför slutprovet
Ali Ghodsi Variabler En variabel är en sorts behållare som man kan placera data i Man måste ange typ och namn för alla variabler.
Pointers. 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; }
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Styrteknik: Programmering med MELSEC IL PLC2A:1
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
Grundläggande programmering
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Databehandling Ett datorprogram består i huvudsak av
Styrteknik: MELSEC FX och numeriska värden PLC2C:1
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Lågnivåprogrammering Översikt av I/O-mekanismer i hårdvara Olika språkkrav och modeller för komponent- hantering(device driving) Modeller för komponent-hantering.
INTRODUKTION TILL PROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
Anders Sjögren Går det att simulera vår värld med 1:or och 0:or ?
Styrteknik 7.5 hp distans: SFC med GX IEC SFC_B:1
Emulatorkonstruktion Schema Inledning Andra metoder Mina metoder Demonstration av min C64-emulator Sammanfattning och frågor.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
Styrteknik 7.5 hp distans: PLC-delprogram, tasks TASKS:1
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
Kronljusströmställaren 0, 1, 2, 3
William Sandqvist Datorteknik övning 1 Introduktion till assemblerprogrammering av Nios II William Sandqvist
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 1 Introduktion till kursen. Algoritmer
14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
30 July 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
Programmeringteknik Webbdelen 2. webbprogrammering Server Den dator som websidan ligger på Klient Dator som tittar på webbsidan med en webbläsare (t ex.
15 August 2015 IS1200 Datorteknik föreläsning CE - F11 IS1200 Datorteknik Föreläsning CE F1 Computer Engineering Introduktion.
R EDOVISNINGS AFFISCH V ETENSKAPLIG POSTER. A FFISCHEN Affischen är en sammanfattning av en kurs eller projekt för att väcka intresse och ge en snabb.
Så fungerar en dator Mental bild av en dator
Python.
Databaser, avancerade frågor
Föreläsning 3: Booleans, if, switch
Grundläggande datavetenskap, 4p
Programmera dina klasskamrater
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

HC11 & Programmering i Assembler Högnivå språk Maskin kod Assembler MCU

Maskinkod (Binärkod) De kombinationer av 1:or och 0: som finns lagrade i programminnet och som processorn jobbar med. Representerar de instruktioner och data som processorn förstår och kan utföra Ex (i hexadecimal form). CE10008610A7218604A723 Maskinkoden är dock svårförståelig för oss människor så vi har satt namn på de kombinationer som representerar instruktioner; Assembler.

Assembler Ett slags programmeringsspråk som använder ordliknande symboler Assemblatorn översätter ”orden” till talvärden (asm maskinkod) Syntax och symboler assemblatorspecifika. Ex. CE10008610A7218604A723 CE1000 = ldx #0x1000 ;Ladda indexregister X med 0x1000 8610 = ldaa #0x10 ;Ladda AccA med värdet 10 A721 = staa 0x21,x ;Lagra värdet i AccA på adressen 0x21 + det värde som finns i indexregister X. 8604 = ldaa #0x04 A723 = staa 0x23,x

Syntax LABEL OPKOD OPERAND(ER) ;KOMMENTAR Ex START LDAA #0x0F ;Start av program STAA 0xFF ADDA 0x0F BRA START ;Hoppar till START Label: Förbättrar läsbarheten, Ger oss möjlighet att hänvisa till olika delar av koden. Skiljer på versaler/gemener Opkod: (Mnemoniac): Instruktionerna i ”kompakt engelsk form”. Operanderna: 0 – 3 st. Separeras med komma. Uttryck tillåtna. T.ex: LDAA #VAR1 + 3

Operander Normalt adresser (syftar till adressernas innehåll) Ex: BRA 0x0F BEQ START ADDA 0xFF ;Adderar AccA med värdet som finns på adressen 0xFF. Resultatet  AccA # indikerar ett värde/konstant Ex: ADDA #0xFF ;Adderar AccA med 0xFF. Resultatet AccA Representation. 5 sorter: Anges m. ändelse suffix Bin B,b % Okt O,o,Q,q Hex H,h 0x,$ Dec D,d,inget Tecken ’ ’ ex ’S’

HC11 & Assembler Ur programmeringssynpunkt består HC11:an av adresskartan + arbetsregister Assemblerprogrammering består (till 99 %) av manipulering och förflyttning av data i arbetsregistren och på adresskartan. Arbetsregistren finns INTE på adresskartan. Åtkomst sker via speciella instruktioner. Ex: LDAA #0x33 Länkfilen berättar för länkaren var olika programsegment ska placeras

Arbetsregistren/Accumulatorer 7 till antalet. Ligger alldeles intill ALU:n. Instruktioner på dessa är snabba… Accumulator A, 8 bitar Accumulator B, 8 bitar Accumulator D (Acca + AccB) , 16 bitar Indexregister X, 16 bitar Indexregister Y, 16 bitar Stackpekaren, 16 bitar Programpekaren, 16 bitar Statusregistret, 8 bitar Se HIP s 3.1.7

Asseblerdirektiv 1 Förutom assemblerinstruktioner innehåller assemblerkod assemblerdirektiv, direktiv till assemblatorn hur den ska ”bete” sig i vissa lägen. Jämförbar med # i C. Bl. a: Var i minnet ska kod placeras Definitioner Andra kod-filer som ska inkluderas m.m Används av både assemblator och länkaren

Assemblerdirektiv 2 EQU / DEFINE CONFIG EQU 0X903F NAME PUBLIC PUBLIC ANOTHER_FUNCTION RSEG RSEG CODE ;Överlåter åt länkaren att placera koden där länkfilen beskriver. ORG ORG 0x1000 ;Absolut adressering DS.B / DC.B Array1 DS.B 10 END IF / ELSE / ENDIF

Assemblerinstruktioner In/ut ur register/minne LDAA, STAB Flytta, Byta TAB, TBA, TSX Stacken PSHB, PULA Matematiska ADDA. SUBB, MUL, IDIV Öka/Minska INCA, DECB Jämförelse CBA, CMPA Logiska/Bitmanipulera ANDB, ORAA, NEGB, BCLR Skift LSLA, LSRA, ROLA, ASLA Programflöde grenval BNE, BEQ, BHI, BLO (tittar på statusregistret) subrutin JSR, RTS, JMP, RTI Övrigt NOP

Adresseringssätt(mode) Immediate Själva värdet som argument LDAA #0xAA Extended Adressen (2 byte) som argument LDD 0xBB00 Direct Adressen (1 byte) som argument LDAA 0x33 Indexed Adressen som finns i ett indexregister(2 byte) + offset LDD 4,x Inherent Verkar enbart på registren INCB Relative Adressen är ett offset från PC BEQ LIKA (i praktiken låter man assemblatorn beräkna offset)

Statusregister 1 Innehåller flaggor(bitar) som indikerar status och resultat av vissa instruktioner Bit Namn Instruktion som påverkar C Carry ADD, SUB V 2:nd Complement overflow Z Zero SUB, CMP N Negativ SUB, ADD H Half Carry ADD S, X, I Indikerar/styr bl.a. interrupt

Statusregister 2 Många instruktioner läser bitar i statusregistret och agerar utifrån värdet. Ex: BEQ, BNE, BPL osv. Tittar på bl.a Z & N- flaggorna.

Ex. Instruktioner LDA STA CMP BEQ BRA / JMP JSR / RTS

Subrutiner Ex: Main LDAA #0xFF JSR my_function STAA my_variable ;0xAA sparas till ;my_variable . . My_function LDAA #0xAA RTS END

Länkfilen Berättar för länkaren var olika avsnitt i koden ska läggas: Variabler bör tex läggas på adresser där programmet får ändra värdena (RAM) Programmet/Konstanter bör läggas på adresser där det finns minne som behåller informationen även efter ett strömavbrott (ROM), liksom interruptvektorerna Berättar också vilken processor

Exempel TINY Tiny.S07 ;A nonsens exampleprogram!! NAME main PUBLIC main RSEG TDATA NUMBER DS.B 1 BUFFER DS.B 10 RSEG TCODE main LDS #0xFF LDX #NUMBER LDY #BUFFER finish BRA finish END Tinyvect.S07 EXTERN main RSEG TCODE dummy RTI RSEG INTVECT DC.W dummy DC.W dummy DC.W dummy . . DC.W main ;resetvector END Tiny.xcl -c68hc11 -Z(CODE)INTVECT=FFD6 ;Vectortabellen -Z(CODE)TCODE=E000 ;Programkoden börjar på adress 0xE000 -Z(DATA)TDATA=0 ;Variablerna staplas efter vaandra med start på 0x0000