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

Relevanta dokument
MC68HCS12 - översikt

Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

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

Digital och Datorteknik EDA /2010. EDA Digital och Datorteknik

EDA Digital och Datorteknik

Instruktionsuppsättning

FLEX Instruktionslista

Reducerad INSTRUKTIONSLISTA för FLIS-processorn

Digital- och datorteknik

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:

INSTRUKTIONSLISTA för FLEX-processorn

Maskinorienterad Programmering 2010/11

Digital- och datorteknik

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

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

Nya instruktioner. b 7

Nya instruktioner. b 7

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

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

Extrauppgifter för CPU12

4.1. Assemblerspråket

FLEXIBLE INSTRUCTION SET PROCESSOR FLISP

Tentamen. Datorteknik Y, TSEA28

FLEXIBLE INSTRUCTION SET PROCESSOR FLISP

Tentamen. Datorteknik Y, TSEA28

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

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

Tentamen (Exempel) Datorteknik Y, TSEA28

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

Programexempel för FLEX

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

Digital- och datorteknik

Assemblerprogrammets. struktur; exempel

Digital- och datorteknik

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

Tentamen. Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28

Assemblerprogrammering för HCS12

Tentamen. Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28

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

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

1 Maskinnära programmering för HC12

F4: Assemblerprogrammering

EDA215 Digital- och datorteknik för Z

Tentamen Datorteknik Y, TSEA28 Datum

Assemblerprogrammering för ARM del 2

Assemblerprogrammering del 2

Assemblerprogrammering för ARM del 1

Maskinorienterad programmering

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

Assemblerprogrammering

Assemblerprogrammering för ARM del 1

Styrenheten styrsignalsekvenser programflödeskontroll

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

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

Grundläggande datavetenskap, 4p

Datorarkitekturer med operativsystem ERIK LARSSON

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

Omtentamen i CDT204 - Datorarkitektur

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. Lars-Eric Arebrink

Adressrum, programmerarens bild

Introduktion till ARM Cortex-M4

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

Exempel 1 på Tentamen med lösningar

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.

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

Övningsuppgifter i Mikrodatorteknik 4p/5p

TENTAMEN (med svar och vissa lösningar)

Tentamen med lösningar

Program Datorteknik. Kontrollenhet. Exekvering av en instruktion. Abstraktionsnivå: Högnivåspråk. Assemblyspråk. Maskinspråk.

Datorteknik ERIK LARSSON

Lösningsförslag till Tenta i Mikrodator

Föreläsningsanteckningar 2. Mikroprogrammering I

Maskinorienterad programmering

Digital- och datorteknik

DAT 015 Maskinorienterad programmering 2010/2011. Uppbyggnad_och_funktion.pdf

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

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

DBG11 Användarbeskrivning - Utgåva 2

Lösningsförslag till Tenta i Mikrodator

Tentamen. EDA432 Digital- och datorteknik, It DIT790 Digital- och datorteknik, GU. Onsdag 12 Januari 2011, kl

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Digital- och datorteknik

Tentamen. EDA432 Digital- och datorteknik, IT DIT790 Digital- och datorteknik, GU. Måndag 18 Oktober 2010, kl

Assemblerprogrammering del 3

Exempel 3 på Tentamen

Undantagstyper. Maskinorienterad Programmering 2010/2011. MC68HC12, Stencil Assemblerprogrammering.pdf CPU12 Reference Guide

Digital- och datorteknik

Lars-Eric Arebrink. Av institutionen utgiven. 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

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Digital- och datorteknik

Transkript:

DAT 15 Maskinorienterad Programmering 21/11 MC68HC12, Arbetsbok för MC12 CPU12 Reference Guide Ur innehållet: Historik Översikt, single-chip-computer DG256 Programmerarens bild (Exempel) Introduktion till Freescale MC68HCS12 1 Instruktionsuppsättning i ISA Instruction Set Architecture e Vilka operationer kan utföras? Instruktionsgrupper Hur lagras operanderna förutom i minnet? Korttidslagring Hur nås operander i minnet? Adresseringssätt Vilka typer/storlekar av operander kan hanteras? Generella/speciella register, registerstorlek Introduktion till Freescale MC68HCS12 2

Instruktionsgrupper EXEMPEL: Motorola (Freescale) MC68X/Coldfire Data movement Program (Flow) control Integer arithmetic Floating-point arithmetic Logical operations Bit manipulation System control Cache maintenance PowerPC Load/Store Program (Flow) control Integer arithmetic Floating-point arithmetic Processor control Synchronization Miscellanous Motorola (Freescale) MC68HC12 Load/Store Data movement Program (Flow) control Integer arithmetic Logical operations Bit manipulation System control FLEX Load/Store Data movement Program (Flow) control Integer arithmetic/test Logical operations Shift/rotate Stack k operations Introduktion till Freescale MC68HCS12 3 Korttidslagring, i Stack/Ackumulator/Register k t /R t Exempel: Kodning av operationen A = B + C Stack Ackumulator Register PUSH B LOAD B LOAD R1,B PUSH C ADD C LOAD R2,C ADD STORE A ADD R3,R1,R2 POP A Exempel: STORE A,R3 Exempel: B55, HP3/7 PDP8, R652 MC68HC12 FLEX Dessutom existerar mellanting av dessa. Exempel (CISC): IBM36, DEC PDP11/VAX...... MC68x Intel Pentium... Mest namnkunnigt exempel: Intel 886 (-186/-286/-386/-486) Exempel (RISC): PowerPC, MIPS, SPARC... Introduktion till Freescale MC68HCS12 4

Register programmerarens bild Stackmaskiner: Har som regel inga synliga register g Ackumulatormaskiner: Har oftast flera register men med dedikerad användning: Exempel: Ackumulator, Indexregister Registermaskiner: Generellt användbara register. Exempel: Dataregister, Adressregister, Flyttalsregister Introduktion till Freescale MC68HCS12 5 EXEMPEL - Registermaskiner PowerPC Zilog Z8 Motorola (Freescale) MC68X/Coldfire Introduktion till Freescale MC68HCS12 6

EXEMPEL Ackumulator Intel 8xx 88/885 886 8386 7 ACCUMULATOR 15 8 7 B C D E H L B C 15 STACK POINTER PROGRAM COUNTER INCREMENTER/DECREMENTER 15 15 15 AH BH CH DH 8 7 A X B X C X D X SP BP SI DI IP AL BL CL DL ACCUMULATOR BASE ACCUMULATOR ACCUMULATOR STACK POINTER BASE POINTER SOURCE INDEX DESTINATION INDEX INSTRUCTION POINTER 31 16 15 8 7 AH A X AL BH B X BL CH C X CL DH D X DL SI DI BP SP 31 16 15 IP EAX EBX ECX EDX ESI EDI EBP ESP EIP FLAGS H FLAGS L STATUS FLAGS FLAGS EFLAGS 15 CS DS SS ES CODE SEGMENT DATA SEGMENT STACK SEGMENT EXTRA SEGMENT 15 CS SS DS ES FS CODE STACK DATA GS Introduktion till Freescale MC68HCS12 7 EXEMPEL - Ackumulator Motorola 68 7 ACCA ACCUMULATOR A 7 ACCB ACCUMULATOR B 15 IX INDEX REGISTER 15 PC PROGRAM COUNTER 15 SP STACK POINTER 5 H I N Z V C CONDITION CODES REGISTER Motorola 68HC12 15 8 7 A B 8-BIT ACCUMULATORS A AND B OR D 16-BIT DOUBLE ACCUMULATOR D 15 X INDEX REGISTER X 15 Y INDEX REGISTER Y 15 SP STACK POINTER 15 PC PROGRAM COUNTER 7 S X H I N Z V C CONDITION CODES REGISTER Rockwell 652 FLEX 7 7 A ACCUMULATOR A A ACCUMULATOR A 7 7 Y INDEX REGISTER Y B ACCUMULATOR B 7 7 X INDEX REGISTER X X INDEX REGISTER 15 8 7 7 PCH PCL PROGRAM COUNTER PC PROGRAM COUNTER 15 7 1 S STACK POINTER SP STACK POINTER 7 3 N V 1 B D I Z C PROCESSOR STATUS REG P N Z V C CONDITION CODES REGISTER Introduktion till Freescale MC68HCS12 8

Programmerarens bild datatyper/storlek t t char short long long floating pointers (8) int int int point (16) (32) (64) (IEEE) 68HCS12 X X 16/2 bit Coldfire V1 X X X 32 bit Coldfire V4 X X X X 32 bit PowerPC X X X X 32 bit PowerPC (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 Introduktion till Freescale MC68HCS12 9 Programmerarens bild adresserbart minne ADRESSBUSS RANDOM ACCESS 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 MByte 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 Introduktion till Freescale MC68HCS12 1

Historik ik 68HC12SX 68HC12S 68HC12 68 681 689 68HC11 1974 1978 1982 1986 199 1994 1998 22 26 Introduktion till Freescale MC68HCS12 11 Freescale 68HCS12 HCS12 adressrum, IO och minne CPU12, klockor och räknare Random Access - Minne RWM, FLASH, EEPROM Periferienheter Parallell Input/Output: Seriell e kommunikation o AD PWM Introduktion till Freescale MC68HCS12 12

HCS12DG256, blockdiagram Introduktion till Freescale MC68HCS12 13 HCS12DG256, core Introduktion till Freescale MC68HCS12 14

HCS12DG256, core Spänningsregulatorer (flera olika spänningar används internt) Background Debug Mode för test/avlusning En kristall utgör bas för alla klockfrekvenser i systemet Realtidsklocka och andra klockfunktioner Programmerbara funktioner Introduktion till Freescale MC68HCS12 15 Primärminne Icke flyktigt minne Upp till 256 Kbyte i minnesbankar 48 kb utan användning av bankar 4 kb EEPROM Flyktigt minne 12 kb RAM Introduktion till Freescale MC68HCS12 16

EXEMPEL, linjärt adressrum FFFF FLASH 4 3FFF 1 FFF 4 3FF RWM ( RAM ) Synlig del av EEPROM MCHCS12 Interna register Introduktion till Freescale MC68HCS12 17 EXEMPEL, bankat adressrum FFFF FLASH C BFFF 3 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D Bankat FLASH Dx256 8 7FFF FLASH 4 3FFF 1 FFF 4 3FF RWM ( RAM ) Synlig del EEPROM MCHCS12 Interna register Introduktion till Freescale MC68HCS12 18

EXEMPEL, i laborationsdator t MC12 FFFF FLASH (monitor/debugger) C BFFF 3 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D Bankat FLASH Dx256 8 7FFF 4 3C8 1 FFF 4 3FF FLASH (monitor/debugger) RWM ( RAM ) Externt IO-gränssnitt MCHCS12 Interna register Minne tillgängligt för användarprogram Introduktion till Freescale MC68HCS12 19 Periferikretsar i HCS12DG256 AD Analog till Digital omvandling ECT- Räknarkretsar för noggrann tidmätning i SCI Asynkron seriekommunikation Parallell In-Utmatning PWM Pulsbreddsmodulering Etc Introduktion till Freescale MC68HCS12 2

HCS12DG256, core Centralenhet CPU12 Introduktion till Freescale MC68HCS12 21 Registeruppsättning i CPU12 15 8 7 A B D 15 X 15 Y 15 SP 15 PC 7 S X H I N Z V C 8-BIT ACCUMULATORS A AND B OR 16-BIT DOUBLE ACCUMULATOR D INDEX REGISTER X INDEX REGISTER Y STACK POINTER PROGRAM COUNTER CONDITION CODES REGISTER Introduktion till Freescale MC68HCS12 22

Adresseringssätt 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 dpc(pc (PC-relativt) t) Nytt här är också Indirekt adressering Introduktion till Freescale MC68HCS12 23 Inherent Maskinkod k för instruktionen Cykel för cykel beskrivning Flaggpåverkan Introduktion till Freescale MC68HCS12 24

Omedelbar (Immediate) 8-bit/16-bit opr8i, 8-bitars konstant om 8-bitars register Opr16i, 16-bitars konstant om 16-bitars register Introduktion till Freescale MC68HCS12 25 Direkt (Direct Page) Absolut (Extented) opr16a, kan adressera hela adressintervallet -FFFF opr8a, kan enbart adressera intervallet -FF, anger minst signifikant byte av adressen Introduktion till Freescale MC68HCS12 26

PC-relativ ( BRANCH -instruktioner) 8-bitars offset (-128..127) 9-bitars offset (-256..255) 16-bitars offset (-32768..32767) Introduktion till Freescale MC68HCS12 27 Indexerade d adresseringssätt: Register relativ, konstant offset Basregister kan vara något av: X,Y,SP,PC PC EXEMPEL: LDAA 5,X STAA 2,Y LDAA sym,pc STA off,sp... Specialfall: n,pcr LDAA sym,pcr Antag PC pekar på nästa instruktion. Observera, ingen syntaktisk skillnad. Assemblator väljer effektivast kodning Operanden är här PC-sym, jfr offsetberäkning för BRA -instruktioner Introduktion till Freescale MC68HCS12 28

Indexerade d adresseringssätt: Auto pre- increment/decrement Auto post- increment/decrement Basregister kan vara något av: XYSP X,Y,SP EXEMPEL: LDAA 1,-X STAA 4,Y- STAB 8,+SP LDAB 7,SP+... Introduktion till Freescale MC68HCS12 29 Indexerade d adresseringssätt: Register relativ, offset i ackumulator Basregister kan vara något av: X,Y,SP,PC PC EXEMPEL: LDAA A,X STAA B,Y STAB D,SP LDAB D,PC... Introduktion till Freescale MC68HCS12 3

Indexerade d adresseringssätt: Indirekt EXEMPEL: LDAA STAA STAB LDAB... [D,X] [sym,pcr] [2,SP] [D,Y] Introduktion till Freescale MC68HCS12 31 Instruktionsgrupper LOAD-instruktioner LDAA Load A (M) A LDAB Load B (M) B LDD Load D (M:M+1) 1 A:B LDS Load SP (M:M+1) 1 SP H :SP L LDX Load index register X (M:M+1) M 1 XX H :X L LDY Load index register Y (M:M+1) 1 Y H :Y L LEAS Load effective address into SP Effective address SP LEAX Load effective address into X Effective address X LEAY Load effective address into Y Effective address Y STORE-instruktioner STAA Store A (A) M STAB Store B (B) M STD Store D (A) M, (B) 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 MOVB Move byte (8 bitar) (M 1 ) M 2 MOVW Move word (8 bitar) (M:M+1) 1 M:M+1 2 EXEMPEL: Kopiera byte eller eller LDAB $3 STAB $31 LDAA $3 STAA $31 MOVB $3,$31 EXEMPEL: Kopiera word eller eller eller LDD $3 STD $31 LDX $3 STX $31 LDY $3 STY $31 MOVW $3,$31 Introduktion till Freescale MC68HCS12 32

Instruktioner för kopiering av registerinnehåll TAB Transfer A to B (A) B anm: Ekv. Med TFR A,B TAP Transfer A to CCR (A) CCR anm: Ekv. Med TFR A,CCR TBA Transfer B to A (B) A TFR Transfer register to register (A,B,CCR,D,X,Y eller SP) (A,B,CCR,D,X,Y eller SP) TPA Transfer CCR to A anm: Ekv. Med TFR CCR,A (CCR) A 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 (Y) SP anm: Ekv. Med TFR Y,SP Instruktioner för växling av registerinnehåll EXG Exchange register to register (A,B,CCR,D,X,Y eller SP) (A,B,CCR,D,X,Y eller SP) XGDX Exchange D with X (D) (X) anm: Ekv. Med EXG D,X - EXG X,D XGDY Exchange D with Y (D) (Y) anm: Ekv. Med EXG D,Y - EXG Y,D Instruktion för teckenutvidgning SEX Teckenutvidga 8 bitars operand (A,B,CCR) (D,X,Y eller SP) Använd denna Övriga finns här av kompatibilitetsskäl Använd denna Övriga finns här av kompatibilitetsskäl Introduktion till Freescale MC68HCS12 33 Ovillkorlig li programflödeskontroll ll BSR Anrop av subrutin. PC-relativ operand SP-2 SP RetAdrL:RetAdrH M (SP) :M (SP+1) Adress PC BRA Hopp till adress. Adress PC PC-relativ operand CALL Anrop av subrutin SP-2 SP Absolut operand (2 bitar) RetAdrL:RetAdrH Anm: Användes vid M (SP) :M (SP+1) programflödesändring mellan Subrutinadress PC olika minnesbankar ($8- SP-1 SP $BFFF) (PPAGE) M (SP) PAGE PPAGE Subrutinadress PC JMP Hopp till address. Subrutinadress PC Absolut operand JSR Anrop av subrutin SP-2 SP Absolut operand RetAdrL:RetAdrH M (SP) :M (SP+1) Subrutinadress PC RTC Återvänd från subrutin. M (SP) (PPAGE) Returadress från STACK och SP+1 SP PPAGE M (SP) :M (SP+1) PC H :PC L SP+2 SP RTS Återvänd från subrutin. M (SP) :M (SP+1) PC H :PC L Returadress från STACK SP+2 SP Introduktion till Freescale MC68HCS12 34

Instruktioner för addition ABA Addera B till A (A)+(B) A ABX Addera B till X anm: Ekv. med LEAX B,X (X)+(B) X ABY Addera B till Y (Y)+(B) Y anm: Ekv. med LEAY B,Y ADCA Addition med carry till A (A)+(M)+C A ADCB Addition med carry till B (B)+(M)+C B ADDA Addition till A (A)+(M) A ADDB Addition till B (B)+(M) B ADDD Addition till D (A:B) (D)+(M:M+1) D INC Incrementera i minnet (M)+$1 M INCA Inkrementera A (A)+ $1 A INCB Inkrementera B (B)+ $1 B INS Inkrementera SP (SP)+ $1 SP anm: Ekv. med LEAS 1,SP INX Inkrementera X (X)+ $1 X anm: Ekv. med LEAX 1,X INY Inkrementera Y (Y)+ $1 Y anm: Ekv. med LEAY 1,Y Instruktioner för subtraktion SBA Subtrahera B från A (A)-(B)(B) A SBCA Subtrahera med borrow från A (A)-(M)-C A SBCB Subtrahera med borrow från B (B)-(M)-C B SUBA Subtrahera från A (A)-(M) A SUBB Subtrahera från B (B)-(M) B SUBD Subtrahera från D (A:B) (D)-(M:M+1) D DEC Dekrementera i minnet (M)-$1 M DECA Dekrementera A (A)- $1 A DECB Dekrementera B (B)- $1 B DES Dekrementera SP (SP)- $1 SP anm: Ekv. med LEAS -1,SP DEX Dekrementera X (X)- $1 X anm: Ekv. med LEAX -1,X DEY Dekrementera Y (Y)- $1 Y anm: Ekv. med LEAY -1,Y Introduktion till Freescale MC68HCS12 35 Instruktioner för logiska operationer ANDA Bitvis och A med minnesinnehåll (A) (M) A ANDB Bitvis och A med minnesinnehåll (B) (M) B ANDCC Bitvis och CC med minnesinnehåll (CCR) (M) CCR EORA Bitvis exklusivt eller Amed (A) (M) A minnesinnehåll EORB Bitvis exklusivt eller B med (B) (M) B minnesinnehåll ORAA Bitvis eller A med minnesinnehåll (A)+(M) A ORAB Bitvis eller B med minnesinnehåll (B)+(M) B ORCC Bitvis eller CCR med minnesinnehåll (CCR)+(M) CCR Unära operationer CLC Nollställ carryflaggan i CCR C CLI Nollställ avbrottsmask i CCR I CLR Nollställ minnesinnehåll $ M CLRA Nollställ A $ A CLRB Nollställ B $ B CLV Nollställ overflowflaggan I CCR V COM Ettkomplementera minnesinnehåll $FF-(M) M COMA Ettkomplementera A $FF-(A) A COMB Ettkomplementera t B $FF-(B) A NEG Tvåkomplementera minnesinnehåll $-(M) M NEGA Tvåkomplementera A $-(A) A NEGB Tvåkomplementera B $-(B) B EXEMPEL: Nollställ bit 7-bit 4 på adress $3 LDAB $3 ANDB #%1111 STAB $3 EXEMPEL: Ettställ bit 7 och bit på adress $3 LDAB $3 ORAB #%11 STAB $3 EXEMPEL: Invertera bit 2 och bit1 på adress $3 LDAB $3 EORB #%11 STAB $3 Introduktion till Freescale MC68HCS12 36

Logiska skiftoperationer ti LSL Logiskt vänsterskift i minnet LSLA Logiskt vänsterskift A C b 7 LSLB Logiskt vänsterskift B LSLD Logiskt vänsterskift D b C b7 A b b7 B b LSR Logiskt högerskift i minnet LSRA Logiskt högerskift A LSRB Logiskt högerskift B b b 7 C LSRD Logiskt högerskift D b7 A b b7 B b C Exempel på användning: Multiplikation med 2, tal utan tecken. Division med 2, tal utan tecken. Introduktion till Freescale MC68HCS12 37 Ait Aritmetiskati skiftoperationer ti ASL Aritmetiskt vänsterskift i minnet (ekv. med LSL) ASLA Aritmetiskt vänsterskift A (ekv. med LSLA) C b 7 ASLB Aritmetiskt vänsterskift B (ekv. med LSLB) ASLD Aritmetiskt vänsterskift D (ekv. med LSLD) b C b7 A b b7 B b ASR ASRA ASRB Aritmetiskt högerskift i minnet Aritmetiskt högerskift A Aritmetiskt högerskift B b 7 b C Exempel på användning, högerskift: Division med 2, tal med tecken. Introduktion till Freescale MC68HCS12 38

Instruktioner för rotation ti (carry-skift) ROL Rotation vänster via carry i minnet ROLA Rotation vänster via carry A ROLB Rotation vänster via carry C b 7 B ROR Rotation höger via carry i minnet RORA Rotation höger via carry A RORB Rotation höger via carry B b 7 b b C EXEMPEL: Skifta ett 32-bitars tal på adress $3, 1 steg åt höger LSR $3 ROR $31 ROR $32 ROR $33 Exempel på användning: Skiftoperationer på tal större än 8 bitar. Introduktion till Freescale MC68HCS12 39 Instruktioner för jämförelser och testt CBA Jämför B med A (A)-(B) CMPA Jämför A med minne (A)-(M) CMPB Jämför B med minne (B)-(M)(M) CPD Jämför D med minne (A:B)-(M:M+1) CPS Jämför SP med minne (SP)-(M:M+1) CPX Jämför X med minne (X)-(M:M+1) CPY Jämför Y med minne (Y)-(M:M+1) JÄMFÖRELSE Två operander BINÄR operation TST Testa minnesinnehåll (M)-$ TSTA Testa register A (A)-$ TSTB Testa register B (B)-$ TEST En operand UNÄR operation Introduktion till Freescale MC68HCS12 4

Villkorligli programflödeskontroll ll Mnemonic Funktion Villkor Enkla flaggtest BCS Hopp om carry C=1 BCC Hopp om ICKE carry C= BEQ Hopp om zero Z=1 BNE Hopp om ICKE zero Z= BMI Hopp om negative N=1 BPL Hopp om ICKE negative N= BVS Hopp om overflow V=1 BVC Hopp om ICKE overflow V= Test av tal utan tecken BHI Villkor: R>M C + Z = BHS Villkor: R M C= BLO Villkor: R<M C=1 BLS Villkor: R M C + Z = 1 Test av tal med tecken BGT Villkor: R>M Z + ( N V ) = BGE Villkor: R M N V = BLT Villkor: R<M N V = 1 BLE Villkor: R M Z + ( N V ) = 1 Används typiskt tillsammans med jämförelse/test instruktioner. EXEMPEL LDAB $3 CMPB $31 BEQ L1... Introduktion till Freescale MC68HCS12 41 Instruktioner för räknande programslingor Mnemonic Funktion Villkor DBEQ Dekrementera innehåll i register. Hoppa om resultatet =. (register: A,B,D,X,Y,SP) ABDXYSP) (register) 1 register om(register)=; hoppa ; annars: nästa instruktion DBNE Dekrementera innehåll i register. (register) 1 register Hoppa om resultatet. om(register) ; hoppa ; (register: A,B,D,X,Y,SP) annars: nästa instruktion IBEQ Inkrementera innehåll i register. (register) + 1 register Hoppa om resultatet =. om(register)=; hoppa ; (register: A,B,D,X,Y,SP) annars: nästa instruktion IBNE Inkrementera innehåll i register. (register) + 1 register Hoppa om resultatet. om(register) ; hoppa ; TBEQ TBNE (register: A,B,D,X,Y,SP) Testa innehåll i register. Hoppa om resultatet =. (register: A,B,D,X,Y,SP) Testa innehåll i register. Hoppa om resultatet t t. (register: A,B,D,X,Y,SP) annars: nästa instruktion om(register)=; hoppa ; annars: nästa instruktion om(register) ; hoppa ; annars: nästa ät instruktion Sammansatta instruktioner. EXEMPEL DBEQ B,L2 samma sak som DECB BEQ L2 Introduktion till Freescale MC68HCS12 42