Download presentation
Presentation is loading. Please wait.
Published byJackson Cords Modified over 9 years ago
1
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 1 Herhaling B/BL, conditions, STMFD/LDMFD nieuw: indexing instructions nieuw: Half-word and byte memory access LEDjes oefening: Kitt of een ander patroon
2
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 2 (herhaling) B label R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen
3
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 3 (herhaling) BL = branch and link R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen
4
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 4 ADDR0, R1, R2; tel op ADDS R0, R1, R2; tel op en zet status ADDEQ R0, R1, R2; doe alleen als ‘EQ’ ADDSEQ R0, R1, R2; combinatie (herhaling)
5
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 5 (herhaling) assembler instructie formaat : multiple words van en naar geheugen (block transfer instructies) STMFD SP!, { R1-R9, R12 } LDMFD SP!, { R1-R9, R12 }
6
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 6 LDR R0, [ R1 ] R0 R1000 0004 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen
7
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 7 Addressing mode: Base Register The memory location to be accessed is held in a base register –STR r0, [r1]; Store contents of r0 to location pointed to ; by contents of r1. –LDR r2, [r1]; Load r2 with contents of memory location ; pointed to by contents of r1. r1 0x200 Base Register Memory 0x5 0x200 r0 0x5 Source Register for STR r2 0x5 Destination Register for LDR
8
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 8 Addressing mode: Post-indexed Example: STR r0, [r1], #12 To auto-’increment’ the base register to location 0x1f4 instead use: – STR r0, [r1], #-12 r1 0x200 Original Base Register Memory 0x5 0x200 r0 0x5 Source Register for STR Offset 12 0x20c r1 0x20c Updated Base Register
9
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 9 LDR R0, [ R1 ], #4 R0 R1000 0004 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen + 0000 0008
10
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 10 Addressing mode: Pre-indexed Example: STR r0, [r1,#12] To store to location 0x1f4 instead use: STR r0, [r1,#-12] To auto-increment base pointer to 0x20c use: STR r0, [r1, #12]! r1 0x200 Base Register Memory 0x5 0x200 r0 0x5 Source Register for STR Offset 12 0x20c
11
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 11 LDR R0, [ R1, #4 ] R0 R1000 0004 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen + 0000 0008
12
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 12 LDR R0, [ R1, #4 ] ! R0 R1000 0004 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen + 0000 0008
13
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 13 Getallen optellen.global main getal_1 :.word 11 getal_2 :.word 22 getal_3 :.word 33 som :.word 99999 add_r0_r2: stmfdsp!, { lr } add r0, r0, r2 ldmfdsp!, { pc } add1: stmfdsp!, { r2, lr } ldr r2, [ r1 ] bladd_r0_r2 add r1, r1, #4 ldmfdsp!, { r2, pc } main: ldr r0, =0 ldr r1, =getal_1 bladd ldr r1, =som str r0, [ r1] …..
14
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 14 Getallen optellen.global main getal_1 :.word 11 getal_2 :.word 22 getal_3 :.word 33 som :.word 99999 add_r0_r2: stmfdsp!, { lr } add r0, r0, r2 ldmfdsp!, { pc } add1: stmfdsp!, { r2, lr } ldr r2, [ r1 ] bladd_r0_r2 add r1, r1, #4 ldmfdsp!, { r2, pc } main: ldr r0, =0 ldr r1, =getal_1 bladd ldr r1, =som str r0, [ r1] …...global main getal_1 :.word 11 getal_2 :.word 22 getal_3 :.word 33 som :.word 99999 add_r0_r2: stmfdsp!, { lr } add r0, r0, r2 ldmfdsp!, { pc } add1: stmfdsp!, { r2, lr } ldr r2, [ r1 ], #4 bladd_r0_r2 ldmfdsp!, { r2, pc } main: ldr r0, =0 ldr r1, =getal_1 bladd ldr r1, =som str r0, [ r1] …..
15
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 15 Variaties op LDR R0, [ R1 ]: LDR R0, [ R1 ] @ word (32 bit) LDRH R0, [ R1 ] @ half-word (16 bit) LDRB R0, [ R1 ] @ byte (8 bit) - H of B komt achteraan, dus: LDREQB - Let op de alignment van het geheugen adres! - Kan net zo bij STR
16
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 16 B naam BL naam LDR R0, =value MOV R0, R1 LDR R0, [ R1 ] STR R0, [ R1 ] ADD R0, R1, R2 ADD R0, R1, #15 MOV PC, LR
17
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 17 SUBS R5, R0, #3 MOVEQ R4, R2 LDRB R0, [ R1 ], #4 STRH R0, [ R1, #3 ] LDR R0, [ R1, #4 ]! STMFD SP!, { R1-R3, LR } LDMFD SP!, { R1-R3, PC }
18
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 18 ACPS = ARM Procedure Call Standard R0 – R3 : function arguments R0 (soms ook R1, R2, R3) : function result R4 - R8 : local scratch (preserved) R9 : afblijven R10-11 : local scratch (preserved) R13 : SP R14 : LR R15 : PC R0 – R3 are *not* preserved; (boek p175-180)
19
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 19 LEDs file blink.zip uitpakken naar lege directory (geen spaties in de pathname…) run ‘as is’ laat de LEDs knipperen
20
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 20 Blink.global main main: @ configureer de hardware om de LEDs te gebruiken blLEDs_init loop: ldr r0, =0x0F blLEDs_write ldrr0, =( 500 * 1000 ) blWAIT_uS ldrr0, =0xF0 blLEDs_write ldrr0, =( 500 * 1000 ) blWAIT_uS b loop
21
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 21 sluit een bordje aan (USB ‘debug’) installeer de files uit blink.zip in een lege directory let op: geen spaties in de pathname dubbel-klik op de.ppr file build start debugger
22
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 22 zet onder file > target settings: Target = Remote/TCP Hostname = 127.0.0.1 Port = 8888 (als je netjes afsluit blijft zou dit moeten blijven staan)
23
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 23 Als je dit krijgt moet je onder control panel > system > hardware > device manager (select view > show hidden devices) > non plug-and- pray devices > MAC_MOT > driver instellen op status = started, type = automatic
24
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 24 Als je dit krijgt heb je debugger/loader niet afgesloten Als het echt niet werkt: de USB aansluiting er even uithalen om het bordje te resetten.
25
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 25 Voor als het even echt niet meer werkt: als je de debugger hebt afgesloten moeten al die DOS schermen ook weg zijn (evt met de hand sluiten) De editor sluiten en weer opstarten de USB kabel er even uithalen om het bordje te resetten, USB weer aansluiten. PC uitzetten en weer aanzetten
26
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 26 Doen 1 Run het bestaande programma (dit hoef ik niet af te tekenen). Laat de LEDs anders knipperen: iedere 2 seconden even (bv 200ms) aan (wel aftekenen).
27
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 27 Doen 2 Laat de LEDs ‘kitt’-style heen-en-weer aan gaan. Doe dit door –Alle stappen van dit patroon in het geheugen op te slaan met.byte –Een subroutine show te schrijven (conform de APCS) die het hele patroon (alle stapen) 1 keer laat zien.
28
2008-2009 VPEMSY1, D3ECPT2 : ARM Assembler http://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 28 Pseudo Instructions:.byte,.align.global main aantal :.word 5 patroon :.byte 0x01, 0x03, 0x07, 0x0F, 0x1F.align main: again: ldr r0, =aantal; aantal bytes in patroon ldr r1, =patroon; pointer naar de bytes ldr r2, =100 * 1000; wachttijd blshow bagain show:
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.