; org 0x80 ;test for nedtrykt bryter 1 loop1: sbic pind,1 rjmp loop1 rcall sub1 loop2: rjmp loop2 Listing 1.

Like dokumenter
CodevisionAVR. Start CodevisionAVR. Velg Settings Terminal og sett opp kommunikasjonsparametrene som figur 1 viser. avrlab07a.doc HVE RI Arnfinn Lunde

Gruppe(r): 2EY Eksamenstid, fra-til: Eksamensoppgaven består av. Antall sider: 4 (Inkludert denne)

Arduino med Atmel studio 6.x (6.1)

Debugging. Tore Berg Hansen, TISIP

AVDELING FOR TEKNOLOGI

Avdeling for ingeniørutdanning Elektrogrunnlagslaboratoriet DIGITALE SYSTEMER

;Hvis avsluttningskrets_a er brutt, hopp over neste kom. ;Kretsen er hel, hopp derfor til casea_ferdig

Steg 1: Installasjon. Steg 2: Installasjon av programvare. ved nettverkstilkoblingen på baksiden av kameraet. Kameraet vil rotere og tilte automatisk.

Veileder i bruk av GoodReader

Velkommen til Pressis.

Dagens tema: Enda mer MIPS maskinkode

PLS PC-øving nr. 3 Global Label og Local Label, flagg og CJ

Hvordan å lage og publisere ditt personlige visittkort

Slik kommer du i gang med InnBo programmet fra PetriSoft Kort om InnBo: InnBo (Std) InnBo Pro

BRUK AV TiSferaDesign I RINGETABLÅER MED ELEKTRONISK NAVNELISTE:

Manusnett - brukerveiledning for forfatter

1. NetBeans IDE: Lage en enkel mobilapplikasjon

Løypelegging ved bruk av

Oppgavesett videregående kurs i NVivo 9

Brukerveiledning Privatisering av datamaskinen For avgangselever våren 2017

Kjenner du alle funksjonene på tastaturet?

1. Gå inn på portalen:

Brukermanual JDL Core4 ITV

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Kom i gang med. Åpne nettleseren, gå til: Velg «New Project».

AVSLUTTENDE EKSAMEN I. TDT4160 Datamaskiner Grunnkurs. Torsdag 29. November 2007 Kl

Hva er TegnBehandler?

Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den.

og Java

1. Rullende navn, s 3 2. Smilefjes, s 5 3. Skritteller, s 7 4. Orakel, s 9 5. Stein, saks og papir, s Kompass, s 14

Kom i gang med Stata for Windows på UiO - hurtigstart for begynnere

hvor mye hurtigminne (RAM) CPU en kan nyttiggjøre seg av. mens bit ene betraktet under ett kalles vanligvis et ord.

KOM I GANG MED SCHENKERS ONLINE BOOKING

Dark load-store-maskin

Bruksanvisning for Blekkspruten koblingsboks

Bruk av PicoBlaze mikrokontroller i Xilinx System Generator (Matlab - Simulink)

Innhold. Bruker manual BlueprintEasy PDF tagger. versjon: P a g e

PC-EN HUSKER ALT FOR DEG ORD FOR ORD. Skriv dagbok

Nytt prosjekt og programlogikk

Dagems temaer. kapittel 4 i Computer Organisation and Architecture. av CPU: von Neuman-modellen. Transfer Language (RTL) om hurtigminne (RAM)

Ta smarte skjermbilder

LIGHTNING ET PROGRAM FOR SKJERMFORSTØRRING BRUKERVEILEDNING. Bojo as Akersbakken 12, N-0172 Oslo Utgave 1206 Bojo as 2006

Kom i gang med programmering i Java

MS Word. Del 1. AVkurs

1 Innholdsfortegnelse

Innhold. Bruker manual BlueprintEasy PDF tagger. versjon: P a g e

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

PLS PC-øving nr. 2 Trening i programmering

Introduksjon til DARK assembly

Bygge en kube. Introduksjon. Steg 1: Lage en ny mod. Skrevet av: Pål G. Solheim

Hangman. Level. Introduksjon

1. Hent NotaPlan Online Backup på 2. Trykk på Download i menyen og på Download i linjen med Notaplan Backup

Veiledning og oppgaver til OpenOffice Calc. Regneark 1. Grunnskolen i Nittedal

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Rapport Øving 1 TDT4258 Mikrokontroller Systemdesign

Brukerveiledning. For administrering av nettressursen BRUKERVEILEDNING ADMINISTRATOR

Planlegge og starte et møte. MeetAt Datamøte

6105 Windows Server og datanett

Trykk Caps Lock én gang for å skrive bare store bokstaver. Trykk Caps Lock en gang til for å slå av denne funksjonen.

Installasjonsveiledning for EMSoft

Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

K750i til W800i oppgraderingsinstruksjoner. Instruksjoner

Brukermanual for Optic Book 3800 V 4.0.1

Før du starter, del 2

Crosswords and More. Av LäraMera Program AB og Leripa AB. Kristina Grundström, illustratør Richard Hultgren, programmerer

6105 Windows Server og datanett

Slik bruker du MIN SIDE. En bruksanvisning for tillitsvalgte

Programmet kan lastes ned gratis fra (Downloads ) og er ikke en del av CxOne-pakken.

Innhold. Bruker manual BlueprintEasy PDF tagger. versjon: P a g e

Bruksanvisning Streaming med Slingstudio Versjon:

Næringsregner på PC n versjon 1.1.0

Erik Grindheim - fagprøve Kildekode til mikrokontroller << led_ctrl.asm >> side 1/6.

Brukerhåndbok. Lightning 2. Bojo as. Akersbakken 12, 0172 OSLO. Utgave 0208

1. Å lage programmer i C++

6105 Windows Server og datanett

PC-AXIS Brukerveiledning for tabelluttak og bearbeiding av data

INF2270. Datamaskin Arkitektur

1. Å lage programmer i C++

Første oppstart av PC

Hvordan levere en video på en oppgave

Brukerveiledning for Lingdys 3.5

TASTAVEDEN SKOLE Bruk av PC i skolen

Windows XP. Skrivebord

Forelesning 5. Diverse komponenter/større system

NY PÅ NETT. Enkel tekstbehandling

Versjon Utarbeidet av: Erik Svendsen

INF109 - Uke 1a

Bruksanvisning for Zotero (18/12/2014)

Bruk av kildeavskrifter som er merket med grønn kule

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Brukermanual for Biomest-programmet Versjon 1.77 mai 2008

Datamaskinen LC-2. Dagens tema. Tall i datamaskiner Hvorfor kan LC-2 lagre tall i intervallet ? Hvorfor er det akkurat celler i lageret?

Flytte innhold fra Fronter til Canvas

6105 Windows Server og datanett

Dagens tema. Datamaskinen LC-2 En kort repetisjon. Binære tall Litt om tallsystemer generelt. Binære tall. Heksadesimale og oktale tall

Dagens temaer. Fra kapittel 4 i Computer Organisation and Architecture. Kort om hurtigminne (RAM) Organisering av CPU: von Neuman-modellen

Singletasking OS. Device minne Skjerm minne. Brukerprogram. Brukerdata/heap. Stack. Basis for flerprosess-systemer.

Nedlasting av SCRIBUS og installasjon av programmet

Dagems temaer INF ! Fra kapittel 4 i Computer Organisation and Architecture. ! Kort om hurtigminne (RAM)

Transkript:

Hensikt I denne øvelsen viser vi hvordan vi kaller subrutiner og kommer tilbake fra subrutiner i assemblerprogrammering. Demonstrasjonsprogrammet nedenfor skal vi benytte. Oppgaven går ut på å forklare hvordan dette programmet virker med hovedvekt på begrepet stack som lagringsplass for adresser. Programmet I denne øvelsen benytter vi assemblerprogrammet som vist i Listing 1 Du skal foreløpig ikke skrive inn dette programmet det kommer vi til i en senere del av øvelsen. Vi skal først se på en del detaljer. ;-------A003.ASM------------- ; Programmet setter utport B ; til 00001111 (lydioder) ; Så venter det til vi trykker ; bryter 1 og setter utport B ; til 10101010.nolist.include "8535def.inc".list ;Husk.include "8515def.inc" ;------lagringsplass---------.def temp=r16.org 0 rjmp init.org 0x20 ;sett opp portb til utport init: ldi temp,0xff out ddrb,temp ;PortD er innport, vi bør aktivere pullup out portd,temp ; sett ut bitmønster 00001111 ldi temp,0x0f out portb,temp ;sett stackpekeren bakerst i ram ldi temp,low(ramend) out spl,temp ldi temp,high(ramend) out sph,temp rjmp loop1 ;---------subrutiner---------.org 0x50 sub1: ldi temp,0xaa out portb,temp ret.org 0x80 ;test for nedtrykt bryter 1 loop1: sbic pind,1 rjmp loop1 rcall sub1 loop2: rjmp loop2 Listing 1. 35lab03.doc side 1 av 6 Arnfinn Lunde

Oppgave 1 Filen 8535def.inc Start et nytt WORD dokument. Skriv inn navn på deltagerne, klasse, dato og navn på labøvelsen Kopier inn filen /avrtools/work/8535def.inc til WORD. Vi skal plukke ut en del informasjon fra denne filen. Dette gjør vi lettest ved å legge rammer rundt de områdene vi ønsker å bevare og så fjerner vi resten. I denne delen av øvelsen skal du finne de områdene som er markert på denne siden. ;* DESCRIPTION ;* When including this file in the assembly program file, all I/O register ;* names and I/O register bit names appearing in the data book can be used. ;* In addition, the six registers forming the three data pointers X, Y and ;* Z have been assigned names XL - ZH. Highest RAM address for Internal ;* SRAM is also defined Listing 2a Merk at denne informasjonen er skrevet i assembler Semikolon foran vil si at vi her har kommentarlinjer ;***** I/O Register Definitions.equ SREG =$3f.equ SPH =$3e.equ SPL =$3d Listing 2b.equ bruker vi når vi skal gi et ord en verdi (tilsvarer likhetstegn) Her ser dere: SREG statusregisteret (en byte i I/O området) SPH og SPL utgjør tilsammen stackpekeren. Dette er 2 bytes i I/O området som vi bruker som en 16 bits peker. I praksis vil dette si at vi senere skal fylle disse lagerområdene med data.equ PORTB =$18.equ DDRB =$17.equ PINB =$16 Listing 2c PORTB er den lagringsplassen vi bruker for å lagre data til lysdiodene DDRB data direction for port B her setter vi alle bits til 1 for å kunne benytte port B til utport. PINB Dette er inngangsbits til port B og de brukes hvis vil benytte Port B som innport..equ PORTD =$12.equ DDRD =$11.equ PIND =$10 Listing 2d PORTD, DDRD og PIND er tre bytes i I/O området tilknyttet port D. Vi bruker portd til trykk-knappene og henter derfor data inn fra PIND..def XL =r26.def XH =r27.def YL =r28.def YH =r29.def ZL =r30.def ZH =r31.equ RAMEND =$25F ;Last On-Chip SRAM Location XL og HL, YL og YH, ZL og ZH utgjør 3 16 bits pekere i registerområdet..def bruker vi når det gjelder lagringsplasser i registerområdet. RAMEND er et tall som sier oss hvor mye RAM hukommelse vi har i vår mikrokontroller. Listing 2e 35lab03.doc side 2 av 6 Arnfinn Lunde

Oppgave 2 Assemblering I listing 1 har vi et program som benytter en subrutine. Vi skal hente inn programmet fra en webserver, assemblere det og etter hvert finne ut hva det gjør. Programmet finner du lagret i filkatalog www-ri.hive.no/atmel/source/ (som a003.asm) Hent programmet inn til din datamaskin ved hjelp av for eksempel Netscape Lagre programmet som a003.asm i avrtools\work katalogen Start AVR studio med nytt prosjekt a003. Velg processor 8535 Project Add File a003.asm Project Project settings velg output fileformat for AVR Studio Project Build and Run (assemblering foretas og simulator startes opp) Kopier og lim inn programmet til ditt WORD dokument. Tips: Når du skal sette inn filer er det kjekt å se filtypen. Ofte blir denne skjult. Bruk Windows Explorer Vis mappealternativer Fjern avkryssingen for skjul filnavn for kjente filtyper Du vil da se filtypene. Kontroller at assembleren lager filene a003.lst og a003.obj Oppgave 3 Vinduene i simulatoren I ditt WORD dokument skal du etter denne øvelsen ha dette bildet på plass. Her kommer beskrivelsen du bør følge for å få til dette. figur 1 Organiser programvinduet så det viser seg til venstre som vist her. View Processor kan du bruke for å få inn prosessorbildet. View new memory view gir deg en del av RAM hukommelsen vist nederst. View Registers gir oversikt over registrene View new I/O ekspander Port B og Port D Ta så Alt- Printscreen og lim bildet inn i ditt WORD dokument Lagre dokumentet. Du er nå klar til å begynne simuleringen. 35lab03.doc side 3 av 6 Arnfinn Lunde

Oppgave 4 Områdene i programhukommelsen View New Memory View gir deg ennå et område Velg Program Memory i stedet for data memory Programhukommelsen benytter 16 bit ordbredde. Skift derfor til 16 bit (med 8/16 knappen) Bruk en bilde-editor (paintshop pro) for å lage bildet som du så limer inn i word. Merk at grunnet bruk av.org 0,.org20,.org 50 og.org 80 så vil vi ha kode på flere forskjellige steder i programhukommelsen. Vi skal nå kontrollere at det som blir lagt i programhukommelsen tilsvarer det vi har i listfilen.. Listing 3 Oppgave 5 Listfilens innhold.org 0 000000 c01f rjmp init Listing 4A.org 0x20 ;sett opp portb til utport. 000020 ef0f init: ldi temp,0xff 000021 bb07 out ddrb,temp ;PortD er inport, vi bør aktivere pullup 000022 bb02 out portd,temp ; sett ut bitmønster 00001111 000023 e00f ldi temp,0x0f 000024 bb08 out portb,temp ;sett stackpekeren bakerst i ram 000025 e50f ldi temp,low(ramend) 000026 bf0d out spl,temp 000027 e002 ldi temp,high(ramend) 000028 bf0e out sph,temp 000029 c056 rjmp loop1 Listing 4B Hent inn filen a003.lst til WORD. ta med de fire programbitene: her har vi vist de to første.ta også med subrutinen og hovedprogrammet. Sett gjerne på noen kommentarer i ditt WORD-dokument. Husk du kan ta det med til eksamen. Merk at vi her både har data og lagringsadresser. Husk å lagre ditt WORD dokument. 35lab03.doc side 4 av 6 Arnfinn Lunde

Oppgave 6 Sett alle trykk-knappene til startstilling. Ved oppstart er alle bitene i innport D satt til 0. Dette tilsvarer at alle trykk-knappene var trykt ned. Slik vil vi ikke ha det og markerer derfor at alle er satt til logisk 1 som på vårt kit. Dette gjør du i PortD vinduet ved å krysse av alle Input Pins bitene Avkryssing gir logisk 1, ikke avkrysset rute gir logisk 0. Oppgave 7 singlestep I vinduet med assemblerfilen ser du en gul pil. Den peker på den instruksjon som skal utføres. Ved å trykke menyen Debug finner du ut hvilke funksjonstaster Du kan bruke F11 for å utføre en og en instruksjon (singlestep). Trykk F11 til du kommer til instruksjonen ldi temp, low(ramend) figur 3 Klipp ut I/O vinduet og lim det inn i ditt WORD dokument. I figuren ser du at initialiseringen av I/O er foretatt. Merk at når vi setter 0000 0000 i DDRD er porten innport. Når vi samtidig setter 1111 1111 i Ports aktiveres pullup Resistorene (se Port D Schematic Diagram i 8535 manualen) Vi har initialisert lysdiodene så de fire øverste bits er Satt til 0 (lysdiodene lyser). Oppgave 8 Sett stackpeker og kontroller at programmet går i evig løkke. Singlestep videre til du ser at simuleringen går i evig løkke til loop1. Instruksjonen sbic pind, 1 hopper over neste instruksjon hvis vi har trykket ned trykk-knapp 1. Her er den ikke trykket ned hvis vi har gjort riktig (se figur 3 for kontroll). Merk at stackpeker nå er satt til å peke bakerst i RAM ( 025F) Oppgave 9 Simuler trykk av trykk-knapp for å komme ut i subrutinen Sett bit 1 til 0 i pind (se figur 3). Singlestep deg langsomt videre. Nå skal programmet kalle subrutinen. Fortsett til programteller står ved verdi 0052 (instruksjonen RET skal utføres) 35lab03.doc side 5 av 6 Arnfinn Lunde

Oppgave 10 Vi ser på stackbruk når vi er i subrutine Klipp ut prosessorvinduet (som i fig 4) Klipp ut port I/O vinduet (fig. 5) for å vise at vi har trykt en tast Klipp ut memory vinduet (fig. 6)for å vise hva som er lagt på stacken Du er nå inne i subrutinen Merk at stackpeker er gått to bytes frem fra 25F til 25D figur 4 Trykk-knappene er her markert. Vi ser at vi har trykket ned den trykk-knappen som korresponderer til bit 1 figur 5 figur 6 Kommentar: Merk at vi har lagt tallet 00 83 på stacken I praksis vil dette si at vi har lagret den adressen programmet skal hoppe til etter at vi er kommet tilbake fra subrutinen Oppgave 11 Vi avslutter ved å vise programteller og stackpeker etter tilbakehopp fra subrutinen. Singlestep deg videre til programteller står på 00 83 Klipp ut en detalj fra prosessorvinduet som viser PC og SP figur 7 Du er nå ferdig med øvelsen. Renskriv den og lever den inn for kontroll. ta en diskette-kopi av WORD dokumentet i tilfelle noe må gjøres om 35lab03.doc side 6 av 6 Arnfinn Lunde