Instruktionsuppsättning. Programmerarens bild adresserbart minne. Programmerarens bild datatyper/storlek. Maskinorienterad Programmering 2011/2012

Relevanta dokument
Instruktionsuppsättning

MC68HCS12 - översikt

DAT 015 Maskinorienterad Programmering 2010/11. Ur innehållet: Historik Översikt, single-chip-computer DG256 Programmerarens bild (Exempel)

Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

4.1. Assemblerspråket

Nya instruktioner. b 7

Nya instruktioner. b 7

Reducerad INSTRUKTIONSLISTA för FLIS-processorn

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Styrenheten styrsignalsekvenser programflödeskontroll

Assemblerprogrammering för ARM del 1

Assemblerprogrammering för ARM del 1

Digital- och datorteknik

FLEXIBLE INSTRUCTION SET PROCESSOR FLISP

Tentamen. Datorteknik Y, TSEA28

EDA Digital och Datorteknik

Introduktion till ARM Cortex-M4

FLEXIBLE INSTRUCTION SET PROCESSOR FLISP

Tentamen. Datorteknik Y, TSEA28

9/22/2012. Assemblernivå Beskrivning av funktion Automatiskt styrd borrmaskin Positionera borr Starta borr Borra genom arbetsstycke...

Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

Föreläsningsanteckningar 2. Mikroprogrammering I

DBG identifierar därefter sig genom utskrift av namn och version. Se även "Disposition av adressrum" nedan. Följande kommandon accepteras av DBG

Assemblerprogrammering del 2

Assemblerprogrammets struktur; exempel

Villkorliga hopp: 9/26/2011. Dagens mål: Du ska kunna.. Villrorliga (Relativa) hopp - forts Arb s 140. LV5 Fo12. LV5 Fo12. Aktivera Kursens mål:

Konstruera en dator mha grindar och programmera denna Använda en modern microcontroller

Maskinorienterad Programmering 2010/11

Digital- och datorteknik

DAT 015 Maskinorienterad programmering 2010/2011. Uppbyggnad_och_funktion.pdf

Programexempel för FLEX

Exempel 1 på Tentamen med lösningar

Programmering av inbyggda system 2012/2013. Kodningskonventioner och programbibliotek. maskinnära programmering i C och assemblerspråk

1 Maskinnära programmering för HC12

Assemblerprogrammering, ARM-Cortex M4 del 1

11/16/2012. Assemblernivå Beskrivning av funktion Automatiskt styrd borrmaskin Positionera borr Starta borr Borra genom arbetsstycke...

Tentamen. Datorteknik Y, TSEA28

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

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet.

Tentamen. Datorteknik Y, TSEA28

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

Tentamen. Datorteknik Y, TSEA28

FLEX Instruktionslista

Styrenheten 9/17/2011. Styrenheten - forts Arb s 120. LV4 Fo10. Aktivera Kursens mål: Kap 7 Blå

Assemblerprogrammering för ARM del 1

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

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

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

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.

Datorarkitekturer med operativsystem ERIK LARSSON

Tentamen med lösningar

9 Assemblerprogrammering. Innehåll GRUNDLÄGGANDE DATORTEKNIK FÖR HÖGSKOLANS INGENJÖRSUTBILDNINGAR KOMPENDIUM

Grundläggande datavetenskap, 4p

Digitala System: Datorteknik ERIK LARSSON

Exempel 3 på Tentamen

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

DBG11 Användarbeskrivning - Utgåva 2

Tentamen Datorteknik Y, TSEA28 Datum

Digital- och datorteknik

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Centralenheten: ALU, dataväg och minne

Assemblerprogrammering del 3

Assemblerprogrammering för ARM del 2

Tentamen 3. EDAxxx Grundläggande Datorteknik DIT791 Grundläggande Datorteknik, GU. Måndag xx Oktober 20xx, kl

Digital och Datorteknik EDA /2011. EDA 451 Digital och datorteknik 2010/2011. Uppbyggnad_och_funktion.pdf

Omtentamen i CDT204 - Datorarkitektur

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

EDA215 Digital- och datorteknik för Z

Digital- och datorteknik

Maskinorienterad Programmering /2011. Maskinorienterad Programmering 2010/11. Maskinnära programmering C och assemblerspråk

Adressrum, programmerarens bild

BDM12 Användarbeskrivning. Introduktion

Lösningsförslag tenta

CE_O3. Nios II. Inför lab nios2time

Tenta i Digitalteknik

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

Bilda styrsignalerna till datavägen RESET FETCH EXECUTE NF NF NF. Digital och Datorteknik EDA /2011. Digital och Datorteknik EDA /2011

Digital- och datorteknik. Lars-Eric Arebrink. vid flera tillfällen. Betyg 4: 36 poäng Betyg 5: 48 poäng

DBG identifierar därefter sig genom utskrift av namn och version. Se även "Disposition av adressrum" nedan. Följande kommandon accepteras av DBG

CHALMERS TEKNISKA HÖGSKOLA

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

ÖH kod. ( en variant av koden används i dag till butikernas streck-kod ) William Sandqvist

Datorsystemteknik DVG A03 Föreläsning 3

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

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

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

Grundläggande Datorteknik Digital- och datorteknik

Assemblerprogrammering för ARM del 3

F5: Högnivåprogrammering

TSEA28 Datorteknik Y (och U)

Assemblerprogrammets. struktur; exempel

Kodningskonventioner (XCC12) Specifikation av strncpy: Övningsexempel: Maskinorienterad Programmering 2011/2012

Föreläsningsanteckningar till Konstruktionsmetoder

Digital- och datorteknik. Lars-Eric Arebrink. Betyg 4: 36 poäng Betyg 5: 48 poäng

Digital- och datorteknik

Tentamen Datorteknik Y, TSEA28 Datum TER2, TER4, TERE Tid 14-18

Transkript:

Maskinorienterad Programmering 211/212 Instruktionsuppsättning IS Instruction Set rchitecture M68H12, rbetsbok för M12 PU12 Reference Guide Ur innehållet: Programmerarens bild Översikt, single-chip-computer DG256 (Exempel) Vilka operationer kan utföras? Instruktionsgrupper Hur lagras operanderna förutom i? Korttidslagring Hur nås operander i? dresseringssätt Vilka typer/storlekar av operander kan hanteras? Generella/speciella register, registerstorlek 1 2 Programmerarens bild datatyper/storlek Programmerarens bild adresserbart minne char (8) short int (16) long int (32) long int (64) floating point (IEEE) pointers 68HS12 X X 16/2 bit oldfire V1 X X X 32 bit oldfire V4 X X X X 32 bit PowerP X X X X 32 bit PowerP (64) X X X X 64 bit 886 X X 16/2 bit 8386 X X X 32 bit 8486 X X X X 32 bit X86-32 X X X X 32 bit X86-64 X X X X 64 bit DRESSUSS RNDOM ESS 16 bitar 2 16 = 65 536 byte = 64 kbyte 2 bitar 2 2 = 1 48 576 byte = 1 24 kbyte = 1 Mbyte 24 bitar 2 24 = 16 777 216 byte = 16 384 kbyte = 16 Myte 32 bitar 2 32 = 4 294 967 296 byte = 4 194 34 kbyte = 4 96 Mbyte = 4 Gbyte 64 bitar 2 64 = 1,84467447 1 19 byte = 16 Ebyte 3 4

Freescale 68HS12 Historik HS12 adressrum, IO och minne PU12, klockor och räknare 68H12SX Random ccess - Minne RWM, FLSH, EEPROM Periferienheter Parallell Input/Output: Seriell kommunikation D PWM 681 689 68H11 68H12 68H12S 68 1974 1978 1982 1986 199 1994 1998 22 26 5 6 HS12DG256, blockdiagram HS12DG256, core 7 8

HS12DG256, core Spänningsregulatorer (flera olika spänningar används internt) ackground Debug Mode för test/avlusning En kristall utgör bas för alla klockfrekvenser i systemet Realtidsklocka och andra klockfunktioner Programmerbara funktioner Primärminne Icke flyktigt minne Upp till 256 Kbyte i minnesbankar 48 k utan användning av bankar 4 k EEPROM Flyktigt minne 12 k RM (=RWM) 9 1 EXEMPEL, linjärt adressrum EXEMPEL, bankat adressrum FFFF FFFF FLSH FLSH FFF 3 31 32 33 34 35 36 37 38 39 3 3 3 3D ankat FLSH Dx256 8 7FFF FLSH 4 3FFF 1 FFF 4 3FF RWM ( RM ) Synlig del av EEPROM MHS12 Interna register 4 3FFF 1 FFF 4 3FF RWM ( RM ) Synlig del EEPROM MHS12 Interna register 11 12

EXEMPEL, i laborationsdator M12 Periferikretsar i HS12DG256 D nalog till Digital omvandling FFFF FFF FLSH (monitor/debugger) 3 31 32 33 34 35 36 37 38 39 3 3 3 3D ankat FLSH Dx256 ET- Räknarkretsar för noggrann tidmätning SI synkron seriekommunikation 8 7FFF 4 38 1 FFF 4 3FF FLSH (monitor/debugger) RWM ( RM ) Externt IO-gränssnitt MHS12 Interna register Minne tillgängligt för användarprogram Parallell In-Utmatning PWM Pulsbreddsmodulering Etc 13 14 HS12DG256, core entralenhet PU12 Registeruppsättning PU12 15 8 7 D 15 X 15 Y 15 SP 15 P 7 S X H I N Z V 8-IT UMULTORS ND OR 16-IT DOULE UMULTOR D INDEX REGISTER X INDEX REGISTER Y STK POINTER PROGRM OUNTER ONDITION ODES REGISTER 15 16

dresseringssätt Inherent Vi känner igen de flesta adresseringssätten i från FLEX. Indexerade adresseringssätt kan även användas med register X,Y och SP ibland också med P (P-relativt) Maskinkod för instruktionen ykel för cykel beskrivning Flaggpåverkan Nytt här är också Indirekt adressering 17 18 Omedelbar (Immediate) 8-bit/16-bit Direkt (Direct Page) bsolut (Extented) opr8i, 8-bitars konstant om 8-bitars register opr16a, kan adressera hela adressintervallet -FFFF Opr16i, 16-bitars konstant om 16-bitars register opr8a, kan enbart adressera intervallet -FF, anger minst signifikant byte av adressen 19 2

P-relativ ( RNH -instruktioner) 8-bitars offset (-128..127) 9-bitars offset (-256..255) 16-bitars offset (-32768..32767) Indexerade adresseringssätt: Register relativ, konstant offset asregister kan vara något av: X,Y,SP,P EXEMPEL: LD 5,X ST 2,Y LD sym,p Observera, ingen syntaktisk skillnad. ST off,sp ssemblator väljer effektivast kodning... Specialfall: n,pr LD sym,pr ntag P pekar på nästa instruktion. Operanden är här P-sym, jfr offsetberäkning för R -instruktioner 21 22 Indexerade adresseringssätt: uto pre- increment/decrement uto post- increment/decrement Indexerade adresseringssätt: Register relativ, offset i ackumulator asregister kan vara något av: X,Y,SP EXEMPEL: LD 1,-X ST 4,Y- ST 8,+SP LD 7,SP+... asregister kan vara något av: X,Y,SP,P EXEMPEL: LD,X ST,Y ST D,SP LD D,P... 23 24

Indexerade adresseringssätt: Indirekt EXEMPEL: LD [D,X] ST [sym,pr] ST [2,SP] LD [D,Y]... Instruktionsgrupper LOD-instruktioner LD Load (M) LD Load (M) LDD Load D (M:M+1) 1 : LDS Load SP (M:M+1) 1 SP H :SP L LDX Load index register X (M:M+1) 1 X H :X L LDY Load index register Y (M:M+1) 1 Y H :Y L LES Load effective address into SP Effective address SP LEX Load effective address into X Effective address X LEY Load effective address into Y Effective address Y STORE-instruktioner ST Store () M ST Store () M STD Store D () M, () M+1 STS Store SP SP H :SP L M:M+1 STX Store X X H :X L M:M+1 STY Store Y Y H :Y L M:M+1 MOVE-instruktioner MOV Move byte (8 bitar) (M 1 ) M 2 MOVW Move word (8 bitar) (M:M+1) 1 M:M+1 2 EXEMPEL: Kopiera byte LD $3 ST $31 LD $3 ST $31 MOV $3,$31 EXEMPEL: Kopiera word LDD $3 STD $31 LDX $3 STX $31 LDY $3 STY $31 MOVW $3,$31 25 26 Instruktioner för kopiering av registerinnehåll T Transfer to () anm: Ekv. Med TFR, TP Transfer to R () R anm: Ekv. Med TFR,R T Transfer to () TFR Transfer register to register (,,R,D,X,Y SP) (,,R,D,X,Y SP) TP Transfer R to (R) anm: Ekv. Med TFR R, TSX Transfer SP to X (SP) X anm: Ekv. Med TFR SP,X TSY Transfer SP to Y (SP) Y anm: Ekv. Med TFR SP,Y TXS Transfer X to SP (X) SP anm: Ekv. Med TFR X,SP TYS Transfer Y to SP anm: Ekv. Med TFR Y,SP (Y) SP Instruktioner för växling av registerinnehåll EXG Exchange register to register (,,R,D,X,Y SP) (,,R,D,X,Y SP) XGDX Exchange D with X (D) (X) anm: Ekv. Med EXG D,X - EXG X,D XGDY Exchange D with Y anm: Ekv. Med EXG D,Y - EXG Y,D (D) (Y) Instruktion för teckenutvidgning SEX Teckenutvidga 8 bitars operand (,,R) (D,X,Y SP) nvänd denna Övriga finns här av kompatibilitetsskäl nvänd denna Övriga finns här av kompatibilitetsskäl Ovillkorlig programflödeskontroll SR nrop av subrutin. P-relativ operand SP-2 SP RetdrL:RetdrH M (SP) :M (SP+1) dress P R Hopp till adress. P-relativ operand dress P LL JMP JSR RT RTS nrop av subrutin bsolut operand (2 bitar) nm: nvändes vid programflödesändring mellan olika minnesbankar ($8- $FFF) Hopp till address. bsolut operand nrop av subrutin bsolut operand Återvänd från subrutin. Returadress från STK och PPGE Återvänd från subrutin. Returadress från STK SP-2 SP RetdrL:RetdrH M (SP) :M (SP+1) Subrutinadress P SP-1 SP (PPGE) M (SP) PGE PPGE Subrutinadress P Subrutinadress P SP-2 SP RetdrL:RetdrH M (SP) :M (SP+1) Subrutinadress P M (SP) (PPGE) SP+1 SP M (SP) :M (SP+1) P H :P L SP+2 SP M (SP) :M (SP+1) P H :P L SP+2 SP 27 28

Instruktioner för addition ddera till ()+() X ddera till X (X)+() X anm: Ekv. med LEX,X Y ddera till Y (Y)+() Y anm: Ekv. med LEY,Y D ddition med carry till ()+(M)+ D ddition med carry till ()+(M)+ DD ddition till ()+(M) DD ddition till ()+(M) DDD ddition till D (:) (D)+(M:M+1) D IN Incrementera i (M)+$1 M IN Inkrementera ()+ $1 IN Inkrementera ()+ $1 INS Inkrementera SP (SP)+ $1 SP anm: Ekv. med LES 1,SP INX Inkrementera X (X)+ $1 X anm: Ekv. med LEX 1,X INY Inkrementera Y anm: Ekv. med LEY 1,Y (Y)+ $1 Y Instruktioner för logikoperationer ND itvis och med minnesinnehåll () (M) ND itvis och med minnesinnehåll () (M) ND itvis och med minnesinnehåll (R) (M) R EOR itvis exklusivt med () (M) minnesinnehåll EOR itvis exklusivt med () (M) minnesinnehåll OR itvis med minnesinnehåll ()+(M) OR itvis med minnesinnehåll ()+(M) OR itvis R med minnesinnehåll (R)+(M) R EXEMPEL: Nollställ bit 7-bit 4 på adress $3 LD $3 ND #%1111 ST $3 EXEMPEL: Ettställ bit 7 och bit på adress $3 Instruktioner för subtraktion S Subtrahera från ()-() S Subtrahera med borrow från ()-(M)- S Subtrahera med borrow från ()-(M)- SU Subtrahera från ()-(M) SU Subtrahera från ()-(M) SUD Subtrahera från D (:) (D)-(M:M+1) D DE Dekrementera i (M)-$1 M DE Dekrementera ()- $1 DE Dekrementera ()- $1 DES Dekrementera SP (SP)- $1 SP anm: Ekv. med LES -1,SP DEX Dekrementera X (X)- $1 X anm: Ekv. med LEX -1,X DEY Dekrementera Y anm: Ekv. med LEY -1,Y (Y)- $1 Y Unära operationer L Nollställ carryflaggan i R LI Nollställ avbrottsmask i R I LR Nollställ minnesinnehåll $ M LR Nollställ $ LR Nollställ $ LV Nollställ overflowflaggan I R V OM Ettkomplementera minnesinnehåll $FF-(M) M OM Ettkomplementera $FF-() OM Ettkomplementera $FF-() NEG Tvåkomplementera minnesinnehåll $-(M) M NEG Tvåkomplementera $-() NEG Tvåkomplementera $-() LD $3 OR #%11 ST $3 EXEMPEL: Invertera bit 2 och bit1 på adress $3 LD $3 EOR #%11 ST $3 29 3 Logiska skiftoperationer ritmetiska skiftoperationer LSL Logiskt vänsterskift i LSL Logiskt vänsterskift LSL Logiskt vänsterskift LSLD Logiskt vänsterskift D LSR Logiskt högerskift i LSR Logiskt högerskift LSR Logiskt högerskift b b b b SL ritmetiskt vänsterskift i (ekv. med LSL) SL ritmetiskt vänsterskift (ekv. med LSL) SL ritmetiskt vänsterskift (ekv. med LSL) SLD ritmetiskt vänsterskift D (ekv. med LSLD) b b b LSRD Logiskt högerskift D Exempel på användning: Multiplikation med 2, tal utan tecken. Division med 2, tal utan tecken. b b SR SR SR ritmetiskt högerskift i ritmetiskt högerskift ritmetiskt högerskift Exempel på användning, högerskift: Division med 2, tal med tecken. b 31 32

Instruktioner för rotation (carry-skift) ROL Rotation vänster via carry i ROL Rotation vänster via carry ROL Rotation vänster via carry b 7 ROR Rotation höger via carry i ROR Rotation höger via carry ROR Rotation höger via carry b 7 b b EXEMPEL: Skifta ett 32-bitars tal på adress $3, 1 steg åt höger LSR $3 ROR $31 ROR $32 ROR $33 Instruktioner för jämförelser och test Jämför med ()-() MP Jämför med minne ()-(M) MP Jämför med minne ()-(M) PD Jämför D med minne (:)-(M:M+1) PS Jämför SP med minne (SP)-(M:M+1) PX Jämför X med minne (X)-(M:M+1) PY Jämför Y med minne (Y)-(M:M+1) TST Testa minnesinnehåll (M)-$ TST Testa register ()-$ TST Testa register ()-$ JÄMFÖRELSE Två operander INÄR operation TEST En operand UNÄR operation Exempel på användning: Skiftoperationer på tal större än 8 bitar. 33 34 Villkorlig programflödeskontroll Mnemonic Funktion Villkor Enkla flaggtest S Hopp om carry =1 Hopp om IKE carry = EQ Hopp om zero Z=1 NE Hopp om IKE zero Z= MI Hopp om negative N=1 PL Hopp om IKE negative N= VS Hopp om overflow V=1 V Hopp om IKE overflow V= Test av tal utan tecken HI Villkor: R>M + Z = HS Villkor: R M = LO Villkor: R<M =1 LS Villkor: R M + Z = 1 Test av tal med tecken GT Villkor: R>M Z + ( N V ) = GE Villkor: R M N V = LT Villkor: R<M N V = 1 LE Villkor: R M Z + ( N V ) = 1 nvänds typiskt tillsammans med jämförelse/test instruktioner. EXEMPEL LD $3 MP $31 EQ L1... Instruktioner för räknande programslingor Mnemonic Funktion Villkor DEQ Dekrementera innehåll i register. Hoppa om resultatet =. (register) 1 register om(register)=; hoppa ; DNE IEQ INE TEQ TNE Dekrementera innehåll i register. Hoppa om resultatet. Inkrementera innehåll i register. Hoppa om resultatet =. Inkrementera innehåll i register. Hoppa om resultatet. Testa innehåll i register. Hoppa om resultatet =. Testa innehåll i register. Hoppa om resultatet. (register) 1 register om(register) ; hoppa ; (register) + 1 register om(register)=; hoppa ; (register) + 1 register om(register) ; hoppa ; om(register)=; hoppa ; om(register) ; hoppa ; Sammansatta instruktioner. EXEMPEL DEQ,L2 samma sak som DE EQ L2 35 36