VELKOMMEN!!!! till DAT05 / DIT5 Maskinorienterad Programmering önskar Jan o Rolf M fo0 YFTE o MÅL Programmera i språk som ligger nära processorn (maskinen) Ge en helhetsbild av hur vi har nytta av kunskaper i området M ka kunna analysera, beskriva och konstruera enkla datorsystem mikroprocessor, minne, I/O, etc som använder - programmerad I/O - avbrottsstyrd I/O - maskinvarustyrd I/O Centrala begrepp i systemprogramvara, -hantering av processer, -delade objekt - ömsesidig uteslutning Ge grund för fortsatta studier inom det datatekniska området M fo0 2 Kurslitteratur Arbetsbok för MC2 Instruktionslista för U2 Vägen till C, Bilting / kansholm Div OH-material Labrelaterad material http://www.cse.chalmers.se/edu/course/dat05/ Fö: im: 8 0 3 5 Lektioner LP2 Vanlig vecka Föreläsningar / Demonstration Handledd självverksamhet Må Ti On To Fr Fö HC im gr A E6 Lab Gr A Fö HA3 Fö HC im gr BC E6-62 Lab Gr B Lab Gr C Demo HC4 M fo0 3 M fo0 4
I DAG Intro Kap 4 Programmerarens bild U2 U2 tyrenhet Inst s 0- Instruktionsregister, IR REP AEMBLER OH LV6 i DoD-kursen Borrmaskinlabbet Inledning till lab o 2 8/6 bitars del IR (8) ALU (8/6) Ackumulator A (8) IR2 (8) IR3 (8) Flaggregister CC (8) Ackumulator D (6) B (8) Indexregister X (6) Databuss (8/6) Adressbuss (6) 6 bitars del Indexregister Y (6) tackpekare P (6) Programräknare PC (6) Flaggregister CC M fo0 5 7 6 5 4 3 2 0 X H I N Z V C M fo0 6 Operand P U2 - En Ackumulatormaskin Någon operation i ALU:n Accumulator A Data i minnet Resultat R Operand Q Accumulator K Minne Accumulator K M fo0 7 org $000 ldaa $600 jsr $200 staa $400 jmp $000 Ett assemblerprogram InPort EQU $0600 Def Inport OutPort EQU $0400 Def Utport org $000 Loop ldaa InPort jsr Mul4 staa OutPort jmp Loop Läs Inporten Multiplicera med fyra kriv till utporten M fo0 8 2
Instruktionsformat U2 Adresseringsmoder U2 Inst s 4 Data 7-0 Data 5-8 Data 7-0 Adr L Adr H Adr L PB PB Adr L PB Adr H Adr L Adr H Adr L Adr H Adr L 8 03 2 34 AB CD Data H Data L Adr H Adr L Inherent Immediate Direct (Page) Extended Relative Indexed INH IMM DIR EXT REL IDX/IDX/IDX2 Digital o Datorteknik fo 6 9 M fo0 0 Adresseringsmod: Inherent INH Adresseringsmod: Immediate IMM Assembler Maskinkod RTN INCA 42 A + A NEGB 50 B + B ENDAT -kod (Operanden är inbyggd i -koden) Assembler Maskinkod RTN LDAB #$3F C6 3F 3F B LDD #$9AB2 CC 9A B2 9AB2 D LDY #$234 CD 2 34 234 Y LDY #$ CD 00 0 000 Y Dataoperand Digital o Datorteknik fo 6 Digital o Datorteknik fo 6 2 3
Adresseringsmod: Extended EXT Adresseringsmod: Direct Page DIR Assembler Maskinkod RTN LDAB $234 F6 2 34 M(234) B Assembler Maskinkod RTN LDAB <$34 D6 34 M(0034) B LDD $9AB2 FC 9A B2 M(9AB2):M(9AB3) D LDY $234 FD 2 34 M(234):M(235) Y LDY $ FD 00 0 M(000):M(0002) Y LDD <$B2 FC B2 M(00B2):M(00B3) D LDY <$34 FD 34 M(0034):M(0035) Y LDY <$ FD 0 M(000):M(0002) Y Adressoperand Adressoperand Digital o Datorteknik fo 6 3 Digital o Datorteknik fo 6 4 Adresseringsmod: Relative Assembler Maskinkod RTN REL Adresseringsmod: Indexed IDX, IDX, IDX2 Assembler Maskinkod RTN BRA Loop 20 ofs PC+ofs PC BEQ $9AB2 27 ofs if Z=: PC+ofs PC offset ( byte) [-28,27] LDAB,Y E6 40 M(Y) B LDD 6,Y EC 46 M(Y+6):M(Y+7) D ADDA $234,X AB E2 2 34 A+M(X+234) A LBRA top 8 20 ofsh ofsl PC+ofsH:ofsL PC LBEQ nurra 8 27 ofsh ofsl if Z=: PC+ofsH:ofsL PC offset (2 byte) [-32768,32767] Digital o Datorteknik fo 6 5 UBB A,X E0 E4 B-M(X+A) B LDAA 8,P A6 F0 2 M(+2) A PB Offset PB: PostByte Vart /Hur hittas adressen Digital o Datorteknik fo 6 6 4
Adresseringsmod: Indexed IDX, IDX, IDX2 Kontrollstruktur if () {atser} Ex) LDAA 3,X Instruktion Offset,PekarRegister If Then NEJ Villkor JA atser Bättre kodning TT BEQ Dipwitch end LDAA CMPB TX ADCA ) X o Y 2) P (reg ) 3) även PC ) aknas ex LDAA 0,X 2) Konstant ex LDAA -7,X 3) Accumulator ofs ) 8-bit ex LDAA B,X 2) 6-bit ex LDAA D,X Digital o Datorteknik fo 6 7 End if (Dipwitch!= 0) HexDisp = Dipswitch; LDAB TAB end BNE Hopp om ICKE zero Z=0 BEQ Hopp om zero Z= Dipwitch HexDisp Digital o Datorteknik fo 6 8 Kontrollstruktur if () {atser} else {atser2} If Then Else End Villkor JA atser atser 2 NEJ if (Dipwitch == 0) HexDisp = ; else HexDisp = 2; BNE Hopp om ICKE zero Z=0 LDAB TTB BNE Dipwitch else LDAB # TAB HexDisp BRA end else LDAB #2 TAB HexDisp end Digital o Datorteknik fo 6 9 Villkorlig programflödeskontroll Mnemonic Funktion Villkor Enkla flaggtest BC Hopp om carry C= BCC Hopp om ICKE carry C=0 BEQ Hopp om zero Z= BNE Hopp om ICKE zero Z=0 BMI Hopp om negative N= BPL Hopp om ICKE negative N=0 BV Hopp om overflow V= BVC Hopp om ICKE overflow V=0 Test av tal utan tecken BHI Villkor: R>M C + Z = 0 BH Villkor: RM C=0 BLO Villkor: R<M C= BL Villkor: RM C + Z = Test av tal med tecken BGT Villkor: R>M Z + ( N V ) = 0 BGE Villkor: RM N V = 0 BLT Villkor: R<M N V = BLE Villkor: RM Z + ( N V ) = Digital o Datorteknik fo 6 20 5
Kontrollstruktur if () {atser} else {atser2} If Then Else End Villkor JA atser atser 2 NEJ R >= M if (Dipwitch >= 5) HexDisp = ; else HexDisp = 2; ) LDAB Dipwitch 2) CMPB #5 3) BLO else LDAB # TAB HexDisp BRA end else LDAB #2 TAB HexDisp end while () {} While Then End Kontrollstruktur while () {atser} Villkor JA atser NEJ while (Dipwitch!= 0) HexDisp = ; while end_while LDAB TTB BEQ Dipwitch end_while LDAB # TAB HexDisp BRA while Test av tal utan tecken BLO Villkor: R<M C= Test av tal med tecken BLT Villkor: R<M N V = Digital o Datorteknik fo 6 2 BEQ Hopp om zero Z= Digital o Datorteknik fo 6 22 Kontrollstruktur do {atser} while () do {} while () LO do MOVB #0,HexDisp atser JA Villkor? NEJ UNTIL LDAB Dipwitch CMPB #0 BH do Eterm Emulera terminal Målsystem MC2 o borrmaskinlabbet COMport do { HexDisp = 0; }while (Dipwitch >= 0); Test av tal utan tecken BH Villkor: RM C=0 Digital o Datorteknik fo 6 23 MC2 o dbg2 M fo0 24 6
Borrmaskinlabbet Lab,2, 3 och 6- En Robot - I/O och avbrott och två processer Assembler och C TART Init Borrmaskinen 57 KEYB Tangentbord för borrkommando Operatör COMMAND COMMAND para registerinnehåll på stacken Avkoda (A) Inparameter: Kommandonummer i register A Mikrodator Anpassningselektronik Borrmaskin A=0 UB0 (TART) A= UB (T) A=2 UB2 (DOWN) UB3 (UP) A=3 UB4 (TEP) A=4 A=5 A=6 A=7 UB5 (DRILL) UB6 (REFPO) UB7 (AUTO) A>7 Klocka Återställ registerinnehåll från stacken M fo0 25 RT M fo0 26 tyrord till borrmaskinen 50 Utport: Drill Control 7 6 5 4 3 2 tatusord från borrmaskinen Inport: Drill tatus 7 6 5 4 3 2 0 0 Etta : Aktiv styrsignal Nolla : Passiv styrsignal stegpuls fram/back borrmotor solenoid larmsummer Nolla: Passiv statussignal Etta: Aktiv statussignal referensposition borr uppe borr nere M fo0 27 Användning av UE-direktivet * Filen DRILLDEF.s2 Inport EQU $600 Dip witch Input DCtrl EQU $400 Drill Control Output Dtatus EQU $40 Drill taus Input Outport EQU $40 Lysdioderna * Filen DTET.s2 UE DRILLDEF.s2 ORG $000 Loop ldaa Inport Läs strömbrytarna staa DCtrl kriv till borrmaskinen ldab Dtatus Läs statusregistret stab Outport Visa statusregistret bra Loop M fo0 28 49 7
TART RefPos Borra Vrid3 Borra Vrid Larm Övergripande specifikation av inledande borrmaskinuppgift: a) Arbetsstycket vrids till referensposition b) Ett hål borras c) Arbetsstycket vrids medurs tre steg d) Ett hål borras e) Arbetsstycket vrids medurs ett steg f) En larmsignal ges som indikation på att uppgiften är klar. 5 * ubrutin OUTZERO. Läser kopian av * borrmaskinens styrord på adress DCCopy. * Nollställer en av bitarna och skriver det * nya styrordet till utporten DCTRL samt * tillbaka till kopian DCCopy. * Biten som nollställs ges av innehållet i * B-registret (0-7) vid anrop. * Om (B) 7 utförs ingenting. * * Anrop: LDAB #bitnummer * JR OUTZERO * * Bitnumrering framgår av följande figur. 7 6 5 4 3 2 0 * Utdata: Inga * Registerpåverkan: Ingen * Anropade subrutiner: Inga OUTZERO.s2 53 T M fo0 29 M fo0 30 *************************************** * UBRUTIN DELAY * Beskrivning: kapar en fördröjning om ANTAL x 500 ms. * * Anrop: LDAA #6 Fördröj 6*500ms= 3s * JR DELAY * * Indata: Antal intervall,om 500 ms i A * * Utdata: Inga * Register-påverkan: Ingen * Anropad subrutin: Ingen. ************************************** DELAY PHA PHX TTA BEQ DExit Fördröjningsvärde noll * Konstanten 'Konst' måste bestämmas ALO LDX #Konst 55 Realtid Fördröjningar forts XLO LEAX -,X 2 cykler N cykel X #0 2 cykler BNE XLO 3 cykler DECA BNE ALO * Ytterligare fördröjning DExit PULX PULA M fo0 3 RT Tangentbord o Borrmaskin 56 7 DAV 6 0 Bit 7, DAV: Data Valid; tatusbit som anger nedtryckt tangent b 7 =: Ingen tangent är för tillfället aktiverad på tangentbordet. b 7 =0: En tangent är aktiverad Bit 6-4, 0: Används ej. Bit 3-0, B3-B0: Tangentnummer; Anger aktuell tangentnedtryckning. 5 0 4 0 3 B3 M fo0 32 2 B2 B 0 B0 8
Tangentbord o Borrmaskin 56 TART KEYB Läs tangentbord LAB Klockan (Uppgift 62-73) ML5_PO tyr vilken sifferindikator som skall tändas ML5_EG tyr vilka segment som skall tändas på 8. 8. 8. 8. 8. 8. sifferindikatorerna Init N Tangent nere J KEYB COMMAND Läs tangentbord N Tangent uppe J Reg Y LDAB,Y+ Adress Data Kommentar Clock 02 Timmar 04 Tiominuter 00 Minuter 0 Tiosekunder 09 ekunder 06 Tiondelar 2.40.9.6 Reg X LDAB B,X Adress Data egmentkod för egtab 77 Noll 24 Ett 5D Två 6D Tre 2E Fyra etc RT Clock fcb 2,4,0,,9,6 egtab fcb $77,$24,$5D,etc M fo0 33 M fo0 34 Fö 2: Adressavkodning Minnen Bussar generellt Processorns anslutningar Timing Adressavkodning Fullständig Adr Avk Ofullständig Adr Avk Processorns adressrum VMA Valid Memory Adress Processor - Bussar Minne krivare Mus etc M fo07 35 Lite om Minnen RAM Random Access Memory RWM Read Write Memory RAM tatiskt RAM DRAM Dynamiskt ROM Read Only Memory PROM Programmable ROM EPROM Erasable PROM EEPROM Electrically EPROM FLAH M fo07 36 9
Dataväg LD MA Reg MA Adressbuss Adress LD A Reg A LD B Reg B 0 C D Funkt 0 M U 2 X C in LD T ALU U Reg T E Flaggor g 2 LD X 0 MUX Reg X Inc Dec LD IncPC LD PC PC MR MW Minne Kontrollbuss C 3 2 g g 0 LD R Reg R LD CC Reg CC Data ut Data in OE A OE B OE R OE CC OE X OE OE PC MR LD I Adressbuss Databuss Databuss Reg I Reset 30 st styrsignaler från styrenhet -kod tyrenhet Flaggor Processor Klocka Processor (U2) Inenhet Utenhet Minne M fo07 37 M fo07 38 Klocka Adr. buss trobe Data buss ACK trobe Här är adressen Adressbuss Processor Databuss ACK Här är data Minne Klocka Asynkront Bussprotokoll Klocka Adressbuss Processor Databuss Minne Klocka Eclk Buss Adr Data Busscykel HC2 Eclk Adr Data Busscykel Adress och databuss Adr Busscykel Klocka Adr. buss Data Multiplexad Buss Adr Adr Adr MC2 eller någon processor Adr Adr Adressbuss Databuss Adr ynkront Bussprotokoll Adr. buss Data buss En busscykel M fo07 39 Data buss Data Data Busscykel Busscykel Busscykel Data Icke Multiplexad Buss Data Data Data M fo07 40 0
MC2: anslutningar MC2 s-timing Maskincykel +5V Eclk Adressbuss (6) tyrsignaler REET Mikrodator MC2 Klockkristall Databuss (8) tyrsignaler Adress bussen Data buss Processorn lägger ut giltig adress Minnet lägger ut data på bussen Här laddas (latchas) data in till processorn 0 250 500 t (ns) GND M fo07 4 VALID MEMORY ADRE; VMA M fo07 42 Adressavkodningslogik för en utport (Chip elect logik; C-logik) Adressavkodning LD C Databuss (8) Register (8) Till omgivningen Data (8) TAA $C5A0 TAA UTPORTADRE M fo07 43 Processor (U) Adress - avkodning Inenhet Utenhet TAA $C5A0 TAA UTPORTADRE C Minne LD Databuss (8) Utport $C5A0 Register (8) Till omgivningen Data (8) M fo07 44 C
Ut0 Ut Ut2 Ut3 In0 In In2 In3 på adress $C5A0 på adress $C5A på adress $C5A2 på adress $C5A3 på adress $C5A4 på adress $C5A5 på adress $C5A6 på adress $C5A7 Adressavkodning Om vi behöver flera I/O-portar Fixas med 8 st NAND-grindar eller??? Ut0 Ut Ut2 Ut3 In0 In In2 In3 på adress $C5A0 på adress $C5A på adress $C5A2 på adress $C5A3 på adress $C5A4 på adress $C5A5 på adress $C5A6 på adress $C5A7 CIO A 2 A A 0 DATA I/O-modul Adressavkodning Intern adressavkodning 8 I/O-portar 8 8 8 8 Out0 Out In2 In3 M fo07 45 M fo07 46 A 5 A 4 A 3 A 2 A A 0 A 9 A 8 A 7 A 6 A 5 A 4 A 3 E CIO CIO A 2 A A 0 CIO A 2 A A 0 VMA = E (Valid Memory Address) Adressavkodning C_Out0 C_In0 CIO A 2 A A 0 (kilja på ut och inportar) CIO A 2 A A 0 M fo07 47 C_Out C_In3 A 0 A A 2 A 0 C C 0 C C 2 C 2047 Read Write En minnesmodul 2 Kbyte RWM-modul C 0 Write C 2047 Write C 0 Read C 2047 Read Databuss utanför minnesmodulen, ansluts till processorns databuss C Register (8) C Register (8) OE 0 OE 2047 D 7 -D 0 2kByte RWMmodul C M fo07 48 Adressbuss A 0 -A 0 Databuss D 7 -D 0 2
Att ansluta en 2-kbyte RWM- modul med startadress $4000 Att ansluta en 2-kbyte RWM- modul Adressbuss A 5 -A 0 2kByte RWMmodul C Adressbuss A 0 -A 0 Databuss D 7 -D 0 Arbetsgång: Tolka beskrivningen av minnesmodulen Rita tabell Ange modulens första adress Ange modulens sista adress Märk ut konstanta resp varierande adressledningar Rita adressavkodningslogiken E/EClk MC2 A 5 -A A0 -A 0 C-logik för 2kByte RWM CRWM 2kByte RWMmodul C Databuss D 7 -D 0 M fo07 49 M fo07 50 E/EClk MC2 Att ansluta en 8-kbyte ROM- modul till ett befintligt system C-logik för RWM Och ROM Adressbuss A 5 -A 0 A 5 -A A0 -A 0 CRWM CROM 2kByte RWMmodul C C 8kByte ROMmodul A 2 -A 0 Processorns adressrum Beskrivande figur över hur minnesmoduler och IO-portar är placerade i minnet Adr 0000 4000 4800 C5A0 E000 Tomt RWM Tomt Tomt IO-port Databuss D 7 -D 0 M fo07 5 D 7 -D 0 ROM M fo07 FFFF 52 3
Uppgift Uppgift Konstruera adressavkodningen för följande: 4 kbyte RWM från adress 0 8 kbyte ROM på de högsta adresserna En I/O-area på 256 Byte med start på adress $6000 Du har tillgång till 8 kbyte ROM-modul 4 kbyte RWM-modul Använd fullständig adressavkodning om förra. men använd ofullständig adressavkodning! Konstruera adressavkodningen för följande: 4 kbyte RWM från adress 0 8 kbyte ROM på de högsta adresserna En I/O-area på 256 Byte med start på adress $6000 Du har tillgång till 8 kbyte ROM-modul 4 kbyte RWM-modul M fo07 53 M fo07 54 Uppgift Att ansluta en Xk Byte Minnes- modul med startadress $zzzz Konstruera adressavkodningen för följande: En I/O-area på 52 Byte med start på adress $0000 RWM från I/O-areans slut till adress $FFF ROM från adress $2000-$FFFF Du har tillgång till 64 kbyte ROM-modul 8 kbyte RWM-modul Xk Byte RWMmodul C Adressbuss A yy -A 0 Databuss D 7 -D 0 Arbetsgång: Tolka beskrivningen av minnesmodulen Rita tabell Ange modulens första adress Ange modulens sista adress Märk ut konstanta resp varierande adressledningar Rita adressavkodningslogiken M fo07 55 M fo07 56 4
I DAG Fö 3 Fullständig resp Ofullständig Adressavkodning tudera HDW/W för en yttre enhet som ansluts till systemet (yfte med avsnitt 2) Vi konstruerar en Printer-Port för att studera: ynkroniseringsproblem och överföringsmekanismer (HDW/W) Villkorlig / ovillkorlig överföring Busy Wait och Polling Handskakningssignaler Avbrott M fo07 57 M fo 3 58 Printerport 23 Befintligt system tart Adressbuss A 5 - A 0 MC2- system krivare Kvartskristall 8MHz MC2 Timingsignal E R/W (Läs/kriv) Databuss D 7 - D 0 Adressrum M Förutsättningar för MC2-systemet: Befintlig Chip elect-signal som vi kan utnyttja i expansionssammanhang M fo 3 59 M fo 3 60 5
Adressavkodning för skrivarporten Adr $0000 23 Printerport - forts s Vi måste ge vissa förutsättningar för skrivaren. $0800 $0803 I/O Vår skrivare är från början en "dum" skrivare: Den kan endast arbeta med ett tecken i taget. Block (i MC2- systemet) IOEL Block 2 $FFFF CHIP ELECT (till skrivar-porten) (hämtar ett tecken - skriv ut - hämta nästa) Det finns inledningsvis inga handskaknings-signaler Max utskriftshastighet: 4 tecken per sekund. BA-adressen M fo 3 6 M fo 3 62 Printerport v.0 s23 Printerport v.0 s24 C_Printer R/W Processorns databuss Anslutning mot MC2- systemet Adress avkodning C_Pri Regiser (8) C krivarbuss Anslutning mot skrivaren org $2000 ldx #Text Pekare till textsträng Loop ldaa,x+ Läs tecken o peka på staa PRINTER kriv ut bra Loop Text fcs "Hej Du Kalle!" Textsträng Adr: Text H e j D u K a l l e! ACIIkoder för text- sträng M fo 3 63 M fo 3 64 6
* Printer V. PRINTER EQU $0800 EOT EQU 04 Printerport v. 24 ORG $2000 LDX #Text Pekare till textsträng Villkorlig överföring 25 Loop LDAA,X+ Läs tecken o peka på nästa CMPA #EOT BEQ top TAA PRINTER kriv ut BRA Loop top N BRA top Text: FC "Hej Du Kalle!" FCB EOT lutmarkering Mottagaren Redo? J änd Data till mottagaren Busy Wait N Mottagaren Redo? J änd Data till mottagaren Polling N M fo 3 65 M fo 3 66 Printerport v2 - med register och READY-signal Villkorlig överföring s26 Printerport v2.0 s26 C Adress avkodning C_tat READY Läs tatus Är skrivaren upptagen? Ja MC2- system READY krivar buss krivare A 0 R/W Anslutning mot Processorns bussar Processorns databuss C_Pri b 2 Register (8) C krivarbuss Anslutning mot skrivaren Nej Överför data M fo 3 67 Printer gränssnitt V2 M fo 3 68 7
* Printer V2.0 Printer equ $800 Ptatus equ $80 org $2000 Printerport v2.0 Printer Data Printer tatus PrinterV2_0 Init Läs nästa tecken s26 Printerport v2. ldx #Text Pekare till textsträng Loop ldaa,x+ Läs tecken cmpa #EOT ista? beq top s27 ldx #Text Pekare Loop ldaa,x+ Läs tecken cmpa #EOT ista? beq top NotRDY ldab Ptatus Läs tatus bitb #Ready. och invänta beq NotRDY.. redo skrivare staa Printer bra Loop top bra top kriv ut Tecken= EOT? Läs tatus READY=? Överför Data till krivaren M fo 3 top 69 J N J N NotRDY ldab Ptatus Läs tatus bitb #Ready. och invänta beq NotRDY.. redo skrivare staa Printer kriv ut RDY ldab Ptatus Läs tatus bitb #Ready. och invänta bne RDY.. upptagen skrivare bra Loop top bra top M fo 3 70 Printerport v3 med READY o DAV 28 Printerport v3 s29 Datorsystem Bit 7 READY DAV krivarbuss tyrregister DAV krivare DAV = (Hög nivå) indikerar för skrivaren att giltigt tecken finns att hämta på skrivarbussen. DAV = 0 (Låg nivå) indikerar för skrivaren att skrivarbussen har ett ogiltigt värde. 0 M fo 3 7 A A 0 R/W C Anslutning mot MC2 Adress avkodning C_Ctrl Processorns databuss b Register () C C_tat C_Pri Printer gränssnitt V3 b 2 Register (8) C READY krivarbuss DAV Anslutning mot skrivaren M fo 3 72 8
Printerport v4 s29 Villkorlig överföring BUY WAIT s Läs tatus READY Är skrivaren upptagen? Ja MC2- system DAV krivar buss krivare Nej M fo 3 73 Överför data POLLING M fo 3 74 Polling * HUVUDPROGRAM Olika initieringar Loop Annat arbete som processorn utför Avbrott Verkligt "arbete" s30 Pågår utskrift? Nej tst PFlag Pågår utskriftsrutin? beq NoPrint.. hoppa om NEJ DAV Är skrivaren Redo? Nej brclr Ptatus,#Ready,NoPrint Läs tatus m s Processorn väntar på DAV skall gå hög 250 ms m s kriv nästa tecken jsr Printchar kriv ut ett tecken NoPrint BRA Loop Pflag rmb Flagga:Pågår utskrift? M fo 3 75 Processor Datorsystem Avbrott (Redo) Här är data Yttre enhet M fo 3 76 9
Printchar Avbrott - forts HITILL: Programmeraren (DU) bestämmer när: JR Printchar kriv ett tecken VID AVBROTT: krivaren bestämmer när: kriv ett tecken VAD KRÄV? spara undan sin PC starta en rutin som skriver ut ett tecken till skrivaren för att sedan återstarta huvudprogrammet M fo 3 77 s Huvudprogram Avbrott 2 5 6 Minnet Adress $FFF2 tartadress för Avbrottsrutin 3 Betjäna avbrottet 4 RTI Avbrott - forts $FFF3 avbrottsrutin M fo 3 78 s3 ) Huvudprogram exekveras när ett avbrott aktiveras 2) Hopp till avbrottsrutin 3) Avbrottsrutin startar 4) Avbrottsrutin avslutas med en speciell instruktion, return from interrupt (RTI) 5) Återhopp till huvudprogram 6) Huvudprogrammet fortsätter. 20