Övningsuppgifter i Mikrodatorteknik för U2

Relevanta dokument
Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Högskolan i Halmstad Digital- och Mikrodatorteknik 7.5p. Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Tentamen Enchipsdatorer med tillämpningar. Lösningar och kommentarer

'HOWHQWDPHQ 6\VWHPNRQVWUXNWLRQ

Realtidsprogrammering. En introduktion Implementering (med exempel från PIC)

Tentamen Enchipsdatorer med tillämpningar Lösningar och kommentarer

Laboration nr2 med enchipsdatorn PIC-16F877

Tentamen Enchipsdatorer med tillämpningar Lösningar och kommentarer

Tentamen Enchipsdatorer med tillämpningar. Lösningar och kommentarer

Laboration 3 i Digital- och Mikrodatorteknik. Utvecklingssystemet MPLAB IDE Grundläggande assemblerprogrammering för PIC

Kontrollskrivning Mikrodatorteknik CDT S2-704

Lösningsföslag till Exempel på tentamensuppgifter i Digitalteknik I

Laboration D164. ELEKTRONIK Digitalteknik. Digitalteknik med enchipsdatorer

Digital- och datorteknik

Programexempel 1 AND-funktionen

Realtidsprogrammering

PROTOTYPUTVECKLING AV DIGITALT

Föreläsningsanteckningar till Konstruktionsmetoder

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

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

Construction of a laboration card with the PIC-processor

CE_O3. Nios II. Inför lab nios2time

Varför använda en liten 8-bitars processor när det finns billiga kraftfulla 32-bitars? William Sandqvist

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

#include <pic.h> #include <sys.h> char LEFT,RIGHT,MOTORHASTIGHET;

Styrprojektet (LEU075) Process 4

Extrauppgifter för CPU12

Digital- och datorteknik

Digital- och datorteknik

mikroprocessorer Elektronik DIGITALTEKNIK Logiska funktioner med

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Programmering i maskinspråk (Maskinassemblering)

INGENJÖRSHÖGSKOLAN INGENJÖRSHÖGSKOLAN

Datorsystemteknik DVG A03 Föreläsning 3

A-del motsvarande KS1

Teknisk dokumentation

LEU240 Mikrodatorsystem

Programmering i maskinspråk (Maskinassemblering)

2-14 Binära talsystemet-fördjupning Namn:

Digital- och datorteknik

CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io.

Digital- och datorteknik

Digital elektronik CL0090

Övning 6. Parallellport, timer

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: Tid: 14:00-18:00.

Datorteknik 2 (AVR 2)

Digital- och datorteknik. Mekatronik-, data- och elektroingenjör Åk 1/ lp 1o2. Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen

Konstruktionsbeskrivning samt programmeringsförslag för en digital enhet till en talmaskin. KTH Syd 2001 Grupp 10

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Assemblerprogrammering del 3

F2 Binära tal EDA070 Datorer och datoranvändning

Övning2 Datorteknik, HH vt12 - Programmering

Laboration 2 i Datorteknik- Assemblerprogrammering II

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

CPU. Carry/Borrow IX. Programräknare

Assemblerprogrammering del 1

Lathund. C för inbyggda system

Digitala Projekt(EITF40) - Larm

Lösningar till tentamen i EIT070 Datorteknik

Projekt Mikrokosmos. Amiga och natur i symbios

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> unsigned char num;

EDA215 Digital- och datorteknik för Z

Assemblerprogrammeringsuppgifter för FLIS-processorn

Datoraritmetik. Binär addition papper och penna metod. Binär subtraktion papper och penna metod. Binär multiplikation papper och penna metod

CE_O2. Nios II. Subrutiner med mera.

Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile.

Arduinokurs. Kurstillfälle 4

EXAMENSARBETE. Insamling av och trådlös överföring av patientdata

Datorteknik Övningsuppgifter

Lathund. C för inbyggda system

CE_O5. Cacheminne. Hemlaboration 2.

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

Styrteknik: MELSEC FX och numeriska värden

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

School of Mathematics and Systems Engineering. Kamerasensor. Sensor för att identifiera objekt på bilden från en videokamera.

Enkla datatyper minne

Försättsblad till skriftlig tentamen vid Linköpings universitet

Hantering av textsträngar och talsträngar. William Sandqvist

Effektpedal för elgitarr

Exempel 3 på Tentamen

Det finns en hemsida. Adressen är

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

"Crash Course in Programming"

6 Lågnivåprogrammering

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 2. Programmering i C och assembler MIPS instruktionsarkitektur. Institutionen för elektro- och informationsteknologi, LTH

Talsystem Teori. Vad är talsystem? Av Johan Johansson

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor. Maxpoäng:

Binär addition papper och penna metod

Lösningar till övning CE_O CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io.

Digital- och datorteknik

Digital- och datorteknik

Digital Aritmetik Unsigned Integers Signed Integers"

Transkript:

i Mikrodatorteknik för U2 Skriv instruktioner som utför följande operationer (angivna tal antas givna i hexadecimal form om inget annat anges): 1. (0x20) + 25 (0x30) 2. (0x22) - (0x31) (0x25) 3. (w) + 63 (0x23) 4. (0x32) - (w) (0x40) Det upplevs snart som otympligt att alltid ange minnesceller med adress. Därför brukar assemblerspråk tillåta att man använder symboliska namn i stället för adresser. De symboliska namnen måste naturligtvis definieras i programtexten. Ett symbolnamn skall börja med en bokstav. För bra "läsbarhet" hos programmet bör "informativa" symbolnamn användas. Detta underlättar också programkommenteringen. 5. 53 (NUMMER) 6. (TIMER) + 1 (TIMER) 7. (LOOPREG) -1 (LOOPREG) 8. (VAERDE) - 28 (VAERDE) 9. 6 (XTAL) samt (XTAL) + 1 (YTAL) 10. (0X43) + (0X49) (0X49) 11. (I) + (J) + 1 (L) 12. (CELL) + 74 (CELL) 13. (NUMBER) - (VAR) (VAR) 14. (NUMBER) + 4 (NUMBER) 15. (I) + (I) (I) 16. (I) + (I) + + (I) (I) 7 gånger 17. Skriv ett program som läser från PortC, multiplicerar det lästa talet med 6 och skriver resultatet i PortB. Vi antar att resultatet inte blir för stort. 18. 1-komplementera (invertera) innehållet i minnesordet med adressen LOC och placera resultatet i nästa minnesord med namnet LOC1. 19. Addera två 8-bitars binära tal. Tal1 finns på adressen TAL1 och tal2 finns på adressen TAL2. Spara resultatet på adress RES1. Resultatet antas rymmas i 8 bitar. 20. Skifta innehållet i minnesordet med adressen LOC åt vänster ett steg och fyll på med en nolla från höger så att: a) Resultatet placeras i LOC b) Resultatet placeras i minnesordet med adressen SKIFT (Aritmetiskt vänsterskift = multiplikation med 2) 21. Maska bort de fyra minst signifikanta bitarna i minnesordet med adressen TAL. Placera resultatet i nästa minnesord med namnet MTAL. 22. Nollställ ett minnesord med adressen LOC. 23. Dela upp ett 8-bitars tal i två delar om 4 bitar (nibble). Talet finns på adressen LOC. Den minst signifikanta nibblen läggs på nästa adress med namnet LSBTAL och den mest signifikanta nibblen på nästa adress igen med namnet MSBTAL (bit 3 0). 24. Jämför två binärkodade tal. De finns i minnesorden LOC1 och LOC2. Lägg det största talet i minnesordet MAX. Konsekutiva (på varandra följande) adresser i minnet. 25. Beräkna kvadraten på det tal, som finns på adressen LOC. (0 talet 7). Resultatet skall sparas på adress RES1. Lösningsförslag: Lägg upp en tabell i minnet som innehåller kvadraten på talen 0-7. Låt sedan talet på adress LOC utgöra index i tabellen. 1

26. Summera ett antal 8-bitars binära tal. Uppgift om antalet finns i minnesordet ANTAL. Talen finns från adress TABELL och uppåt i minnet. Spara resultatet (som antas rymmas inom 8 bitar) i minnesordet SUMMA. 27. Räkna antalet negativa tal (MSB = 1) i tabellen TABELL t ex D7, F3, 1A, A7, 8D, 13, CA och 27. Placera antalet negativa tal på adressen NEG i minnet. 28. Hitta det största talet (binär representation) i TABELL (se ex. uppgift 27). Lägg det på adressen MAX. 29. Skifta ett 8-bitars tal, som finns på adressen TAL, till vänster tills en etta har skiftats ut från MSB. Spara det skiftade talet i minnesordet STAL. Antalet vänsterskift spara i minnesordet ASKIFT. Om talet = 0 nollställs minnesordet STAL och ASKIFT. TAL, STAL och ASKIFT finns i på varandra följande minnesord. 30. Omvandla den decimala siffran Omvandlingstabell: 0-9, som finns på adressen DEC siffra sjusegmentkod till sjusegmentkod. Lagra denna 0 3F på adressen SJU. Om DEC inte 1 06 innehåller en siffra FF på 2 5B adressen SJU. 3 4F 4 66 5 6D 6 7D 7 07 8 7F 9 6F --------------------------------------------------------------------------------------------------------------------------------- Övningar i mikrodatorteknik, lösningsförslag 1. movf 0x20,w ;(0x20) (w) addlw 0x25 ;(w) + 25 (w) movwf 0x30 ;(w) (0x30) 2. movf 0x31,w ;(0x31) (w) subwf 0x22,w ;(0x22) - (w) (w) movwf 0x25 ;(w) (0x25) 3. addlw 0x63 ;63 + (w) (w) movwf 0x23 ;(w) 0x23 4. subwf 0x32,w ;(0x32) (w) w movwf 0x40 ;(w) (0x40) 5. movlw 0x53 ;53 (w) movwf NUMMER ;(w) (NUMMER) 6. incf TIMER ;(TIMER) + 1 (TIMER) 7. decf LOOPREG ;(LOOPREG) - 1 (LOOPREG) 8. movlw 0x28 ;28 (w) subwf VAERDE ;(VAERDE) (w) (VAERDE) 9. movlw 0x06 ;6 (w) movwf XTAL ;(w) (XTAL) incf XTAL,w ;(XTAL) + 1 (w) movwf YTAL ;(w) (YTAL) 2

10. movf 0x43 ;(0x43) (w) addwf 0x49 ;(w) + (0x49) (0x49) 11. movf I,w ;(I) (w) addwf J,w ;(w) + (J) (w) addlw 1 ;(w) + 1 (w) movwf L ;(w) (L) 12. movf CELL,w ;(CELL) (w) addlw 0x74 ;74 + (w) (w) movwf CELL ;(w) (CELL) 13. movf VAR,w ;(VAR) (w) subwf NUMBER,w ;(NUMBER) (w) (w) movwf VAR ;(w) (VAR) 14. movf NUMBER,w ;(NUMBER) (w) addlw 0x04 ;(w) + 4 (w) movwf NUMBER ;(w) (NUMBER) 15. movf I,w ;(I) (w) addwf I ;(w) + (I) (I) 16. I EQU 0X20 COUNT EQU 0X21 MAIN MOVLW 0X04 ;ANTAG (I)=4 MOVWF I MOVLW 0X07 ;7 (W) MOVWF COUNT ;(W) (COUNT) CLRW ;0 (W) LOOP ADDWF I,W ;(I) + (W) (W) DECFSZ COUNT,F ;(COUNT) - 1 (COUNT), TESTA MOVWF I (W) (I) 17. LIST P=16F874 INCLUDE <P16F874.INC> COUNT EQU 0X20 INIT BSF STATUS,RP0 ;BANK1 CLRF TRISB ;PORTB UTPORT BCF STATUS,RP0 ;BANK0 MAIN MOVLW 0X06 MOVWF COUNT ;6 --> (COUNT) CLRW ;0 -->(W) LOOP ADDWF PORTC,W ;(W) + (PORTC) --> (W) DECFSZ COUNT,F ;(COUNT) - 1 --> (COUNT) MOVWF PORTB ;(W) --> (PORTB) 3

18. LIST P=16F874 INCLUDE <P16F874.INC> LOC EQU 0X20 LOC1 EQU 0X21 MAIN COMF LOC,W MOVWF LOC1 19. LIST P=16F874 INCLUDE <P16F874.INC> TAL1 EQU 0X20 TAL2 EQU 0X21 RES1 EQU 0X22 MAIN MOVF TAL1,W ;(TAL1) --> (W) ADDWF TAL2,W ;(W) + (TAL2) --> (W) MOVWF RES1 ;(W) --> (RES1) 20. LOC EQU 0X20 SKIFT EQU 0X21 MAIN BCF STATUS,C ;0-STÄLL C-FLAGGAN RLF LOC,F ;VÄNSTERSKIFTA (LOC) ;A) RLF LOC,W ;B) MOVWF SKIFT 21. TAL EQU 0X20 MTAL EQU 0X21 MAIN MOVF TAL,W ;(TAL) --> (W) ANDLW 0XF0 ;MASKA FRAM BIT4-7 I W MOVWF MTAL ;(W) --> (MTAL) 22. LOC EQU 0X20 MAIN CLRF LOC 23. LOC EQU 0X20 LSBTAL EQU 0X21 MSBTAL EQU 0X22 MAIN MOVF LOC,W ;(LOC) --> (W) ANDLW 0X0F ;MASKA FRAM BIT0-3 MOVWF LSBTAL ;(W) --> (LSBTAL) SWAPF LOC,W ;SKIFTA HÖG- OCH LÅG-NIBBLE ANDLW 0X0F ;MASKA FRAM BIT0-3 MOVWF MSBTAL ;(W) --> MSBTAL 4

24. LOC1 EQU 0X20 LOC2 EQU 0X21 MAX EQU 0X22 MAIN MOVF LOC1,0 ;(LOC1)-->(W) SUBWF LOC2,0 ;(LOC2)-(W)-->(W) OBS! (W)>=0 --> C=1 BTFSS STATUS,C ;KOLLA C-FLAGGAN (W)<0 --> C=0 GOTO MAX1 MAX2 MOVF LOC2,0 ;(LOC2)-->(W) MOVWF MAX ;(W)-->(MAX) GOTO SLUT MAX1 MOVF LOC1,0 ;(LOC1)-->(W) MOVWF MAX ;(W)-->(MAX) 25. LOC EQU 0X20 RES1 EQU 0X21 START MOVF LOC,0 ;(LOC)-->(W) CALL CONVERT ;ANROPA SUBRUTIN MOVWF RES1 ;KVADRATVÄRDET TILL RES1 GOTO START CONVERT ADDWF PCL ;(PC)+(W)-->(PC) RETLW 0 ;TABELLVÄRDEN (DEC) RETLW 1 RETLW 4 RETLW 9 RETLW 16 RETLW 25 RETLW 36 RETLW 49 26. ANTAL EQU 0X20 ;ANTAG ATT (ANTAL)=4 SUMMA EQU 0X21 ORG 0 ;RESETVEKTOR START CLRF SUMMA ;0-->(SUMMA) LOOP DECF ANTAL,0 ;(ANTAL)-1-->(W) FÖR RÄTT OFFSET CALL TABELL ADDWF SUMMA,1 ;(W)+(SUMMA)-->(SUMMA) DECFSZ ANTAL,1 TABELL ADDWF PCL ;(PC)+(W)-->(PC) RETLW 17 ;NR 0 RETLW 13 ;NR 1 RETLW 1A ;NR 2 RETLW 27 ;NR 3 5

27. ANTAL EQU 0X20 ;VÄLJES HÄR TILL 8 NEG EQU 0X21 START CLRF NEG ;0-->(NEG) LOOP DECF ANTAL,0 ;(ANTAL)-1-->(W) CALL TABELL ANDLW 80 ;MASKA FRAM BIT7 XORLW 80 ;KOLLA OM BIT7=1 BTFSS STATUS,Z GOTO FIX INCF NEG,1 ;(NEG)+1-->(NEG) FIX DECFSZ ANTAL,1 ;DEKREMENTERA (ANTAL) TABELL ADDWF PCL,1 ;(PC)+(W)-->(PC) RETLW 0XD7 ;NR 0 RETLW 0XF3 ;NR 1 RETLW 0X1A ;NR 2 RETLW 0X0A ;NR 3 RETLW 0X08 ;NR 4 RETLW 0X13 ;NR 5 RETLW 0XCA ;NR 6 RETLW 0X27 ;NR 7 28. MAX EQU 0X20 ANTAL EQU 0X21 ;(ANTAL) VÄLJES HÄR TILL 8 TEMP EQU 0X22 MAIN CLRF MAX ; LOOP DECF ANTAL,W ;FIXA TILL OFFSETVÄRDET CALL TABELL MOVWF TEMP ;SPARA TABELLVÄRDET I TEMP SUBWF MAX,W ;(MAX)-(W)-->(W) BTFSC STATUS,C ;KOLLA C, >=0 C=1, <0 C=0 GOTO HOPP ; MOVF TEMP,W ;(TEMP)-->(W) MOVWF MAX ;(W)-->(MAX) HOPP DECFSZ ANTAL,F TABELL ADDWF PCL,F ;(PC)+(W)-->(PC) RETLW 0XD7 RETLW 0XF3 RETLW 0X1A RETLW 0XA7 RETLW 0X8D RETLW 0X13 RETLW 0XCA RETLW 0X27 6

29. TAL EQU 0X20 STAL EQU 0X21 ASKIFT EQU 0X22 COUNT EQU 0X23 TALBUFF EQU 0X24 MAIN MOVF TAL,W ;(TAL)-->(W) MOVWF TALBUFF ;(W)-->(TALBUFF) CLRF STAL ;0-STÄLL (STAL) CLRF ASKIFT ;0-STÄLL (ASKIFT) MOVLW 8 ; MOVWF COUNT ;LADDA RÄKNAREN BCF STATUS,C ;0-STÄLL C LOOP RLF TALBUFF,F ;VÄNSTERSKIFTA INCF ASKIFT,F ;ÖKA (ASKIFT) BTFSC STATUS,C ;KOLLA C-FLAGGAN GOTO SLUT ;C=1 --> SLUT DECFSZ COUNT,F ;MINSKA RÄKNAREN CLRF ASKIFT ;0-STÄLL ASKIFT OM (TAL)=0 GOTO STOP SLUT MOVF TALBUFF,W ;SPARA (TALBUFF) MOVWF STAL ;I (STAL) STOP GOTO STOP 7