2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler 1 Hogeschool Utrecht / Electrical Engineering & Design 1  Herhaling: CMP, CMN,

Slides:



Advertisements
Verwante presentaties

Advertisements

PROS2 Les 13 Programmeren en Software Engineering 2.

Leer de namen van de noten 1

Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
Par. 3.1 Computers zijn overal
Hardware (1) NSG Informatica.
Jerry van den Heuvel Pim van der Lee
PROS2 Les 11 Programmeren en Software Engineering 2.
Auteursomgeving voor Digitale Componenten
PowerPC Practicum. Introductie Doel practicum = Computers begrijpen Leer de werking van een computer door een emulator te bouwen.
Leer de namen van de noten 2
Vergaderen Gebruikt materiaal Actie! Office3 bso blz. a Benoem het materiaal in de tweede kolom in je boek op blz b In de derde kolom.
C programma int main(){ } Compilatie met devc++ in file main.c Gecompileerd programma in file FirstProgram.exe Mov R1, 120 Mov R2, 160 ADD R1, R2.

1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays Functies Records Dynamische gegevenstructuren Macro’s C.
1 SOCS Hoofdstuk 3 Basisprogrammatuur. 2 Inhoud De Vertaler De Voorvertaler De Lader De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer.
1Ben Bruidegom 1 Hoe werkt een “loopje” nu precies? Recapitulatie rekenmachines week 1 Van rekenmachine naar rekenmachine met “loopjes”
1Ben Bruidegom A Harvard Machine Calculator Calculator  Computer.
Auteursomgeving voor Digitale Componenten
1Ben Bruidegom A Harvard Machine Recapitulatie Calculator Calculator  Calculator met “loopjes” Calculator met “loopjes”  Processor.
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
Een echte re stack-machine nMemory nRegisters R0 R1 R2 R3 R4 PC SP MP nMemory uProgram uStack uMemory nRegisters uProgr.counter uStack pointer uMark pointer.
Hoofdstuk 8 Objecten en klassen.
Werken aan Intergenerationele Samenwerking en Expertise.
Breuken-Vereenvoudigen
Hoe werkt een rekenmachine?
1Ben Bruidegom 1 De Harvard Machine Van rekenmachine met “loopjes” naar processor.
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 3 - onderwerpen Het.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: Sheets en.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Het ARM bord met wat library functies.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 4 - onderwerpen Multiplexen.
PEMSY1http:// 1  Herhaling: combineren van assembler en C  Herhaling: subroutine  geen nieuwe opgave Voorbeeld tentamen:
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen Instruction timing Shadow.
PEMSY1http:// 1  Herhaling: - ACPS - set status, conditioneel uitvoeren - indexed addressing  Nieuw: - CMP, CMN - half-word.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  herhaling ARM assembler instructies.
VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp:// Hogeschool Utrecht / Electrical Engineering & Design 1 Hogeschool van Utrecht.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 6 - onderwerpen seriele interface (UART -
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
Samenwerking tussen processor, registers en RAMgeheugen
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  herhaling ARM assembler instructies.
Inleiding computersystemen en netwerken deel 3 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 3.1 Peter Kramer Mail:
PEMSY1http:// 1  Herhaling ARM assembler instructies  branch instructie  conditionele instructies en de flags  oefening.
Mail: (of Sheets en verdere info: Onderwerp: vervolg C
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen  DB036 printjes subroutines.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  herhaling ARM assembler instructies  assembler.
PEMSY1http:// 1  Herhaling: combineren van assembler en C  Herhaling: subroutine  Oefening: melodie Klas EV2B: week.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 6 - onderwerpen Uitleg.
tircms02-p les 1 Operating Systems practicum
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 2 - onderwerpen  Helaas nog geen printjes.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: Sheets en.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag User-defined characters op de.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 2 - onderwerpen MPLAB.
PEMSY1http:// 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
2TPRJ5 – PIC assembler Hogeschool Utrecht / Institute for Information & Communication Technology Wouter van Ooijen Mail: Sheets.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail:
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Een embedded systeem: ARM bord.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen Instruction timing Shadow.
VPEMSY1, D3ECPT2 : ARM Assembler Hogeschool Utrecht / Electrical Engineering & Design 1  Herhaling B/BL, conditions,
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Wat gaan we doen? Herhaling ARM assembler instructies
Wat gaan we doen? Herhaling: ACPS; indexed addressing; half-word/byte
Transcript van de presentatie:

VPEMSY1, D3ECPT2 : ARM Assembler 1 Hogeschool Utrecht / Electrical Engineering & Design 1  Herhaling: CMP, CMN, shifts  nieuw: combineren van assembler en C  oefeningen: LCD; assembler en C

VPEMSY1, D3ECPT2 : ARM Assembler 2 Hogeschool Utrecht / Electrical Engineering & Design 2 CMP R2, R1 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen - flags

VPEMSY1, D3ECPT2 : ARM Assembler 3 Hogeschool Utrecht / Electrical Engineering & Design 3 CMN R1, #15 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen - flags -

VPEMSY1, D3ECPT2 : ARM Assembler 4 Hogeschool Utrecht / Electrical Engineering & Design 44 Zie ook boek p 53-54

VPEMSY1, D3ECPT2 : ARM Assembler 5 Hogeschool Utrecht / Electrical Engineering & Design 5 Oefening: wat doet deze code? movr1, r0 ldrr0, =0 loop: ldrbr2, [ r1 ], #1 cmpr2, #0 addner0, r0, #1 bneloop movpc, lr Wat is het doel daarvan?

VPEMSY1, D3ECPT2 : ARM Assembler 6 Hogeschool Utrecht / Electrical Engineering & Design 6 Assembler en C

VPEMSY1, D3ECPT2 : ARM Assembler 7 Hogeschool Utrecht / Electrical Engineering & Design 7 C source file (.c) Assembler source file (.asm) Object file Assembler source file (.asm) Object file C compiler Assembler C source file (.c)

VPEMSY1, D3ECPT2 : ARM Assembler 8 Hogeschool Utrecht / Electrical Engineering & Design 8 Executable / image /.hex file Object file Linker Object file

VPEMSY1, D3ECPT2 : ARM Assembler 9 Hogeschool Utrecht / Electrical Engineering & Design 9 Assembler – interne en externe labels  Default is een label lokaal (alleen voor deze file zichtbaar).  Je kan een label totempaal globaal (voor het hele programma beschikbaar) maken met.global totempaal  Als je een label (naam) gebruikt dat niet in je file gedefinieerd is neemt de assembler aan dat het een globaal label is (in een andere file gedefinieerd).

VPEMSY1, D3ECPT2 : ARM Assembler 10 Hogeschool Utrecht / Electrical Engineering & Design 10.global asm_counter, subroutine asm_counter:.skip 4 my_counter:.skip 4.code ldr r0, =asm_counter ldr r1, =my_counter ldr r2, =c_counter bl f subroutine:add r1, r0, r1 mov pc, lr Assembler – interne en externe labels

VPEMSY1, D3ECPT2 : ARM Assembler 11 Hogeschool Utrecht / Electrical Engineering & Design 11 C – interne en externe labels  Default is een naam die je definieert globaal (extern zichtbaar).  Als je een label (naam) wilt gebruiken dat niet in je file gedefinieerd is dan moet je er een ‘externe definitie’ voor geven.

VPEMSY1, D3ECPT2 : ARM Assembler 12 Hogeschool Utrecht / Electrical Engineering & Design 12 extern int asm_counter; extern int subroutine( int a, int b ); int c_counter; void f( void ){ int x; asm_counter++; c_counter++; x = subroutine( 6, 199 ); } C – interne en externe labels

VPEMSY1, D3ECPT2 : ARM Assembler 13 Hogeschool Utrecht / Electrical Engineering & Design 13 extern int asm_counter; extern int subroutine( int a, int b ); int c_counter; void f( void ){ int x; asm_counter++; c_counter++; x = subroutine( 6, 199 ); }.global asm_counter, subroutine asm_counter:.skip 4 my_counter:.skip 4.code ldr r0, =asm_counter ldr r1, =my_counter ldr r2, =c_counter bl f subroutine:add r1, r0, r1 mov pc, lr

VPEMSY1, D3ECPT2 : ARM Assembler 14 Hogeschool Utrecht / Electrical Engineering & Design 14 extern int asm_counter; extern int subroutine( int a, int b ); int c_counter; void f( void ){ int x; asm_counter++; c_counter++; x = subroutine( 6, 199 ); }.global asm_counter, subroutine asm_counter:.skip 4 my_counter:.skip 4.code ldr r0, =asm_counter ldr r1, =my_counter ldr r2, =c_counter bl f subroutine:add r1, r0, r1 mov pc, lr

VPEMSY1, D3ECPT2 : ARM Assembler 15 Hogeschool Utrecht / Electrical Engineering & Design 15 void LCD_INIT( void ); void LCD_CLEAR( void ); void LCD_PUTCHAR( char c ); void WAIT_mS( int duration ); void print( char *s ){ LCD_CLEAR(); while( *s != '\0' ){ LCD_PUTCHAR( *s ); s++; } int main( void ){ LCD_INIT(); while(1){ print( "Hello" ); WAIT_mS( 500 ); print( " world." ); WAIT_mS( 500 ); } Hello2.zip

VPEMSY1, D3ECPT2 : ARM Assembler 16 Hogeschool Utrecht / Electrical Engineering & Design 16 void LCD_INIT( void ); void LCD_CLEAR( void ); void print( char * s ); void WAIT_mS( int duration ); int main( void ){ LCD_INIT(); while(1){ print( "Hallo" ); WAIT_mS( 500 ); print( " wereld." ); WAIT_mS( 500 ); } Hello3.zip.global print print: stmfd SP!,{ R5, LR } mov r5, r0 BL LCD_INIT loop: ldrb r0, [ r5 ], #1 cmp r0, #0 beq klaar bl LCD_PUTCHAR b loop klaar: ldmfd SP!,{ R5, PC }

VPEMSY1, D3ECPT2 : ARM Assembler 17 Hogeschool Utrecht / Electrical Engineering & Design 17 Schrijf de C functie void lichtkrant( char *s, int n ); Deze functie laat de tekst s scrollen over het LCD. De wachttijd tussen iedere scroll-stap is n us. De functie werkt door eerst *s te printen (functie of subroutine print bestaat al), daarna even wachten, s verhogen, en weer printen. De functie keert terug als s naar de ‘\0’ wijst. Wat lastiger (mag, hoeft niet): de functie keer terug als de resterende tekst helemaal op het LCD staat, dwz. als de resterende tekst 16 tekens of korter is. Een strlen functie is deze les behandeld.

VPEMSY1, D3ECPT2 : ARM Assembler 18 Hogeschool Utrecht / Electrical Engineering & Design 18 Herschrijf de functie ‘lichtkrant’ in assembler.