Home

Systemunterlagen

image

Contents

1. AH 0Dh_ lesen eines Grafikpunktes 22 AL zu schreibendes Zeichen ASCII BH Bildschirmseite nur Textmodi BL ZeichenFarbe Grafik CX Wiederholungsfaktor BH Nummer der Farbpalette 0 7Fh BL Farbwert f r diese Farbpalette bei CGA nur Modus 4 DX Zeilen Nr Y Koordinate CX Spalten Nr X Koordinat AL Farbe Bitstelle 0 bis 6 Bit b7 1 Exklusiv ODER Verkn pfung mit der aktuellen Pixelfarbe BH 0 Bildschirmseite DX Zeilen Nr BH 0 Bildschirmseite CX Spalten Nr Prof Komar Hardware Programmierung keine der Wiederholungsfaktor gilt nur f r laufende Zeile kein Zeilenumbruch Cursor mu separat bedient werden Fktn 2 Attribute werden nicht ver ndert Keine ist BH 0 so enth lt BL die Hintergrund Randfarbe 00 OF h BH 01h BL enth lt die Paletten Nr 0 1 Keine ber die XOR Verkn pfung kann eine Bildung der komplement ren Farbe erreicht werden AL Farbe des gew hlten Punktes AH 0Eh Zeichenausgabe mit AL auszugebendes Zeichen Keine eiterpositionierung BL Zeichenfarbe des Cursors Abfrage des aktuellen Bildschirmstatus AH 0Fh AH 13h Ausgabe einer Zeichenkette Aufbau des Text Attributes Mischfarben auch f r den Text Bildspeicher Farbwerte f r Pixelgrafik mit Helligkeitsbit schwarz blau grun t rkis rot fuchsin braun hellgrau AL Ausgabemodus CX Anzahl Zeichen BH Bildschirmseite BL Attribut Byte DX Zeile Spalte
2. 09h Anpassung fremder Laufwerke 0Ah Erweitertes Lesen 0Bh Erweitertes Schreiben OCh Schreib Lesekopf bewegen 0Dh Reset OEh Controller Lese Test PS 2 OFh Controller Schreib Test PS 2 10h Ist das Laufwerk bereit 11h Rekalibrieren des Laufwerks 12h Controller RAM Test PS 2 13h Laufwerk Test PS 2 14h Controller Diagnose 15h Feststellung des Laufwerktyps Interrupt 14h Serielle Schnittstelle 00h Initialisierung Olh Zeichen ausgeben 02h Zeichen einlesen 03h Status erfragen Interrupt 15h Alter Kassetten Interrupt 83h Flag nach Zeitintervall setzen 84h 00h Abfrage des Status der Feuerkn pfe der Joysticks 84h Olh Abfrage der Stellung der Joysticks 85h SysReq Taste bet tigt 86h Warten 87h Speicherbereiche verschieben 88h Speichergr e ber 1 MByte ermitteln 89h Umschaltung in den Protected Mode Interrupt 16h Tastatur 00h Zeichen auslesen Olh Zeichen vorhanden 02h Status der Tastatur erfragen 03h Wiederholrate einstellen 05h Tastendruck simulieren 10h Tastaturabfrage f r erweiterte Tastaturen 11h Tastaturabfrage f r erweiterte Tastaturen Interrupt 17h paralleler Drucker 00h Zeichen ausgeben Olh Drucker initialisieren 02h Status des Druckers erfragen Interrupt 18h ROM BASIC Interrupt 19h Booten des Rechners Interrupt 1Ah Datum und Zeit 00h Zeit Z hler auslesen Olh Zeit Z hler setzen 02h Auslesen der Echtzeit Uhr 03h Setzen der Echtzeit Uhr 04h Auslesen des Datums aus der Echtz
3. JLE cb JMP cb JMP FAR JMP NEAR JNA cb JNAE cb JNB cb JNBE cb JNC cb JNE cb JNG ch JNGE cb JNL cb JNLE cb JNO cb JNP cb JNS ch JNZ ch JO ch JP ch JPE ch Funktion ASCII adjust AL for addition ASCII adjust for division ASCII adjust for multiply ASCII adjust for subtraction Add with carry Addition Logical AND CALL im Segment CALL ber Segmentgrenzen Convert byte in word Clear carry flag Clear direction flag Clear interrupt enable flag Complement carry flag Compare Compare Strings Convert word to doubleword Decimal adjust AL after addition Decimal adjust AL after subtraction Decrement Unsigned divide Halt Signed divide Signed multiply Input byte word from port Increment Xl um 1 Interrupt 3 Interrupt xx Interrupt on overflow Interrupt return Jump short if above CF 0 and ZF 0 Jump short if above or equal CF 0 Jump short if below CF Jump short if below or equal CF 1 or ZF Jump short if carry CF 1 Jump short if CX register is zero Jump short if equal ZF Jump short if greater ZF 0 and SF OF Jump short if greater or equal SF OF Jump short ifless SF OF Jump short if less or equal ZF 1 or SF OF Jump short Jump far 4 byte address Jump near Jump short if not above CF 1 or ZF Jump short if not above or equal CF Jump short if not below CF 0 Jump short if not below or equal CF 0 and ZF 0 Jump short if not carry CF 0 Jum
4. Monat BCD CY 1 gt Fehler INT lah Datum setzen Echtzeituhr AH 05 CY 1 gt Fehler BIOS CL Jahr BCD CH Jahrhundert BCD DL Tag BCD DH Monat BCD INT lah Alarmzeit setzen Echtzeituhr AH 06 CY 1 gt Fehler BIOS bei Erreichen der Alarmzeit wird ein CL Minute Interrupt 4ah ausgel st CH Stunde DH Sekunde INT lah Alarmzeit l schen Echtzeituhr AH 07 CY 1 gt Fehler BIOS vor Setzen einer neuen Alarmzeit Wartezeit setzen AH 83h AH 00 nn 5h nach Ablauf der Wartezeit l st Echtzeituhr AL 00 AL Statusregister B Interrupt aus Zeiten in usec CX Zeitintervall high zeitliche Aufl sung aber bei 1 1024 Hz DX Zeitintervall low CY 1 gt Fehler Bit 7 des Zielbyte wird nach Ablauf der BX Offset des Zielbytes Wartezeit gesetzt ES Segment des Zielbyte INT 15h Wartezeit l schen AH 83h BIOS AL 0Ih INT 15h Zeitintervall abwarten AH 86h CY 1 gt Fehler BIOS nach Ablauf des Intervalls wird die Aus CX Zeitintervall high f hrung des aufrufenden Programmes DX Zeitintervall low fortgesetzt Zeitin psec PC als MVUS Teil2 Systemunterlagen 25 Prof Komar Hardware Programmierung DOS Application Program Interface Zu den sogn DOS Interrupts z hlen die Interrupt Nr 20 h 2F h Der wichtigste ist der INT 21 h Aufruf einer DOS Funktion ber den Interrupt 21h k nnen mehr als 100 Funktionen erreicht werden die das DOS einem Programm zur Verf gung stellt und
5. D J W EEE D AY L gt Konsole ausgeben ausgeben r lf AL gt Konsole ausgeben AL lt Konsole mit warten ohne Echo AL lt Konsole mit warten und Echo DS AX Stringadresse bis 0 ausgeben DS AX Stringadresse bis cr lesen AL 0 kein Zeichen AL 1 abholen AL gt 8 Bin rziffern ausgeben AX lt 4 Hexaziffern lesen AL gt 2 Hexaziffern ausgeben AL gt linkes Nibble ASCII codiert ausg AX gt 4 Hexaziffern ausgeben AX lt Dezimalzahl lt 65536 lesen AX gt Dezimalzahl ausgeben AL gt ASCII decodieren C 1 Nicht Dezi DX AX gt dezimal ohne f hrende Nullen AX alt gt AX neu BX bereich gt BX lt bereich AX lt 40h 6ch Timer Tic Variable AL 0 kein Zeichen wie kbhit Grafikbildschirm ohne Parameter Maus initialisieren ohne Parameter AX X Pos BX Y Pos linke Maustaste Maus schlie en ohne Parameter PC als MVUS Teil2 9 Prof Komar Systemunterlagen Hardware Programmierung Beispielprogramm f r Bibliotheksfunktionen mopueb asm MOP bung externe Uprogramme in iolib LIB einaus LIB INCLUDE einaus inc Deklarationen extrn f r iolib LIB DOSSEG Segmente f r DOS MODEL small 1 Datensegment 1 Codesegment 486 voller Befehlssatz ab 486 STACK 256 Stapelsegment 256 Bytes DATA Datensegment text DB 10 13 Eingabe bis Esc gt 0 ende DB 10 13 Auf Wiedersehen gt 0 CODE Code
6. Werte dual setzen DH Monat DL Tag AL 255 gt unplausibel Uhrzeit abfragen AH 2Ch CH Stunde CL Minute Werte dual DH Sekunde DL 1 100 Sekunde Uhrzeit setzen AH 2Dh CH Stunde Werte dual CL Minute DH Sek AL 255 gt unplausibel DL 1 100 Sekunde PC als MVUS Teil2 30 Prof Komar Systemunterlagen Hardware Programmierung DOS Funktionen f r Verwaltung des Arbeitsspeichers RAM Aufruf INT 21h Mit dem DOS Befehl mem d more l t sich die Speicherbelegung darstellen R ckgabe Reservieren von Arbeits AH 48h CY 0 erfolgreich speicher BX ben tigte Speichergr e in AX Anfangssegment Allocate Memory Paragraphen 16Byte CY 1 AX Fehlernummer BX Gr e des gr ten verf gbaren Speicherblocks Freigeben von reserviertem AH 49h CY 0 o k Arbeitsspeicher Free ES Segment des Blockes der freigegeben CY 1 AX Fehlernummer Allocate Memory werden soll 07 gt MCBs zerst rt reserviert zuvor mit 48h Ver ndern des reservierten AH 4Ah CY 0 o k Speicher blocks BX neue angeforderte CY 1 AX Fehlernummer SETBLOCK Blockgr e in Paragraphen BX Gr e des gr ten ES Segment des Speicherblocks verf gbaren Speicherblock Pr fen Ver ndern der AH 58h AL 0 Pr fen AL 1 Ver ndern CY 0 ok AX Strategiecode Speicher BX Strategiecode 00 Tiefenanpas CY 1 AX Fehlernummer Reservierungsstrategie 01 beste Anpassung 01 ung ltiger 02 Hochanpassung Funktionscode Speich
7. mov ax 0 mov es ax mov es 20h offset TIMERO ISR poke 0x00 0x20 FP_OFF TIMERO 0x100 mov es 22h cs poke 0x00 0x22 FP_SEG TIMERO pop es Im PC kann das Setzen des Interrupt Vektors einfacher durch die DOS Funktion 25h INT 21h erfolgen mov ah 25h mov al 08 Beispiel einer Interrupt Vektor Nummer mov dx offset TIMERO DS DX FAR Zeiger auf ISR gt mov cx cs mov ds cx int 21h da f r COM Programme DS CS f r den Fall da ein existierender Interrupt Vektor auf eine neue ISR verbogen werden und nach Abarbeitung der neuen ISR zur alten ISR verzweigt werden oder vor Beendigung des Programms der alte Vektor wiederhergestellt werden soll kann der alte Interrupt Vektor mittels der DOS Funktion 35h INT 21h gelesen und gerettet werden mov ax 3508h int 21h mov INTRO8 old bx gelesenen Intr Vektor speichern mov INTRO8 old 2 es Beispiel einer Wiederherstellung vor Programmende mov dx INTRO8 old mov ax INTRO8 old 2 mov ds ax mov ax 2508h int 21h selektive Freigabe der aktiven Interruptquelle im PIC 8259 bzw bei Beendigung des Programms selektiv sperren in al 2lh Maskenregister outp 0x21 inp 0x21 amp Oxfd and al 11111110b IMR 0 l schen gibt IRQO frei out 21h al generelle Freigabe des INTR Eingangs des 80x86 durch den Befehl STI gt I Flag 1 enable bzw vor Programmbeendigung die generelle Sperre durch CLI gt I Flag 0 disable generelle Freigabe des INTR Eingangs ist i
8. nicht lokal sondern global oder static anlegen Funktionen vor main als Prototyp deklarieren und nach main definieren Funktions Prototyp Kopfzeile main 3 Funktions Definitionen hinter main Assembler C Programmierung Hex Zahlendarstellung out 60H AL Port Wert ODER Je ala c e A oo a oo Die Rotierfunktionen sind vordefiniert in lt stdlib h gt PC als MVUS Teil2 45 Prof Komar Systemunterlagen Hardware Programmierung Wichtige DOS Betriebssystemfunktionen in dos h zuordnen mit include lt dos h gt ax int86 Nr amp Ein amp Aus BIOS Interrupt mit Nummer 0 255 amp Ein amp Aus Zustand Prozessorregister vor nach dem Aufruf DOS Interrupt 0x21 ___ setveet Nr Funktion setzt Interruptvektor auf Funktion Ss geninterrupt Nummer l st Interrupt 0 255 getdate amp Datum Datum nach vordef Strukturtyp date da_year da_day da mon gettime amp Uhrzeit Zeit nach vordef Strukturtyp time D mm hour hund sec delay Millisekunden Wartezeit in ms unsigned int sleep Sekunden LWageset in sek unsigned int sound Frequenz Lautsprecher ein unsigned int nosound disable SINT R Intervupt sperren fenable CIN R Interrupt feschen O Vordefinierte DOS Betriebssystemfunktionen in lt dos h gt F r die Prozessorregister definiert dos h eine union REGS die aus den beiden Strukturen x Wortregister ax di cflag flags
9. und h Byteregister al dh Beispiel Ermittlung von Datum und Uhrzeit mit DOS Interrupt 0x21 union REGS reg REGS in dos h vordefiniert reg h ah 0x2A ah 0x2A Datum auslesen int86 0x21 amp reg amp reg 0x21 mit BIOS Funktion printf n u Yu u reg h dl reg h dh reg x cx reg h ah 0x2C ah 0x2C Uhrzeit auslesen intdos amp reg amp reg 0x21 mit DOS Funktion printf n u u u reg h ch reg h cl reg h dh Aufgabe bioscom Komm Byte Port Int 0x14 serielle Schnittstelle biosprint Komm Byte Port int 0x17 Druckerschnittstelle biostime Kommando Wert Int 0x1A Timer Tic Variable biostime 0 0 liefert long int Z hlerstand bioskey Kommando Int 0x16 Tastaturabfrage bioskey 0 liefert Scan und ASCII Code bioskey 1 liefert 0 wenn keine Taste bioskey 2 liefert Modifizierer Tasten Vordefinierte BIOS Betriebssystemfunktionen in lt bios h gt PC als MVUS Teil2 46 Prof Komar Systemunterlagen Hardware Programmierung Einbinden von Assembler in die Hochsprachen C bzw C F r das direkte Ansprechen von Hardware oder auch f r zeitkritische Teile werden Assembler Routinen bzw Sequenzen auch in h here Programmiersprachen eingebaut Mit Hilfe des in Borland C 3 0 integrierten Inline Assemblers BASM lassen sich ohne separate Assemblierung Compilierung ganze Assembler Sequenzen in C C Programme einbinden Ein Befehl in Assemblersprac
10. 30 0 61 3d 129 81 NUL B 12 Oc 225 ei E 6 3f 7 28 ic 130 82 NUL Le 13 Od 39 27 96 60 fi 131 83 NUL BKSP 14 0e 8 08 8 08 12r TF 14 De NUL TAB 15 Of 9 09 15 Of 148 94 NUL 165 a0 NUL Q 16 10 kk Oe e RES 81 51 Q AZ TH 20 16 10 NUL Ww 17 41 119 77 w 87 57 w 23 17 W 17 11 NUL E 18 12 101 65 e 69 45 E 5 05 SP 18 12 NUL R 19 13 114 gt 72 r 82 52 R 18 12 R 19 13 NUL T 20 14 116 74 t 84 54 A 20 14 u 20 14 NUL Z 21 15 122 7a Z 90 5a Z 26 1a TL 44 2c NUL U 29 A6 117 75 u 8 55 U 21 is SU 22 16 NUL l 23 17 105 69 i 73 49 I 9 09 I 23 17 NUL oO 24 18 111 St ro 79 4f 0 LS 2068 60 24 18 NUL P 25 19 112 70 p 80 50 P 16 10 P 25 19 NUL 26 da 129 81 154 9a m 27 1b 26 1a NUL 27 1b 43 2b 2 2a 29 1d 27 1b NUL ENTER 28 Ic 13 Od 13 Od 10 Oa 28 1c NUL ENTER2 28 Ic 13 0d 13 Od 10 Oa 28 ic ERW Strg li 29 1d 2 Strg re 29 1d A 30 de 97 61 a 65 41 A 1 T SA 30 je NUL S 31 1f 115 73 S 83 53 S 19 13 31 1f NUL D 32 20 100 64 d 68 44 D 4 04 SO 32 20 NUL F 33 21 102 66 f 70 46 F 6 06 SE 33 21 NUL G 34 22 103 67 g 71 47 G 7 07 SG 34 22 NUL H 35 23 104 68 h 72 48 H 8 08 H 35 23 NUL J 36 24 106 6a j 744 4a J 10 Oa 1 75 36 24 NUL K 37 35 107 6b k 75 4 K 11 Ob K 37 25 NUL L 38 26 108 6c l 76 4c L 12 Oc Sek 38 26 NUL 39 27 148 94 153 9 f 39 27 NUL 40 28 132 84 f 142 8e 40 28 NUL SE 41 29 94 5e 248 f8 41 29 NUL Umsch li 42 2a 43 2b 35 23 39 27 43 2b NUL Y 44 2c EN DR CDN 89 59 Y Delta SKS 21 15 NUL v AR
11. Bei einem Aufruf mu diese 2Fh ISR als erstes durch Vergleich des AH Registers mit dem MUX Code feststellen ob das eigene oder ein anderes Programm gemeint ist Bei einem Treffer wird die in den anderen Registern parametrisierte Funktion ausgef hrt und das Programm mit einem IRET beendet Anderenfalls wird zur n chsten MUX ISR in der Multiplexer Kette verzweigt PC als MVUS Teil2 32 Prof Komar Systemunterlagen Hardware Programmierung Anwendungsprogramm ruft INT 2Fh auf UX Handler Funktion ausf hren 2 MUX Handler Funktion ausf hren Funktion 3 MUX Handler Funktion ausf hren rspr nglicher MUX Handler IRET Aufruf INT 2Fh AH COh FFh Frei f r Anwendungen R ckmeldung Installations AL 00 AH MUX Code AL 00 AH MUX Code zustand Pr fung ob Multiplexer ISR bereits noch nicht installiert Installationscheck installiert bzw ob MUX Code bereits AL MUX Code vergeben bereits installiert Segmentadresse der MUX AL 01 AH MUX Code ISR TSR Anwenderprogramme die den Multiplexer 2Fh nutzen sollten die beiden Unterfunktionen AL 00 fiir den Installationscheck und AL 01 f r die R cklieferung der ISR Segmentadresse aufweisen Bei 00 Installationscheck werden AH und AL vertauscht zuriickgeliefert und damit dem Aufrufer signalisiert da eine MUX ISR mit dem in AH gelieferten MUX Code bereits installiert ist Die zur ckgelieferte Segmentadresse der Funktion 01 wird z B f r die Deinstallation ben tig
12. Bild ob 73 49 73 49 NUL 57 39 9 132 84 NUL Bild ob 73 49 73 49 ERW 73 49 ERW 132 84 ERW 153 99 ERW EI 74 4a 45 2d 45 2d Cursor li 75 4b 75 4b NUL 52 34 4 115 73 NUL Cursor li 75 4b 75 4b ERW 7 4b ERW 115 73 ERW 155 9b ERW 58 76 4c 53 35 5 143 8f NUL Cursor re 77 4d 77 4d NUL 54 36 6 116 74 NUL Cursor re 77 4d 77 4d ERW 77 Ad ERW 116 74 ERW 157 9d ERW 8 78 Ae 43 2b 43 2 144 90 NUL 78 Ae NUL Ende 79 4f 79 Ar NUL 49 31 1 117 75 NUL Ende 79 4f 79 4f ERW 79 4f ERW 117 75 ERW 159 9f ERW Cursor un 80 50 80 50 NUL 50 32 2 145 91 NUL Cursor un 80 50 80 50 ERW 80 50 ERW 145 91 ERW 160 a0 ERW Bild un 81 51 81 51 NUL 51 33 3 118 76 NUL Bild un 81 51 81 51 ERW 81 51 ERW 118 76 ERW 161 al ERW Einfg 82 52 82 52 NUL 48 30 0 146 92 NUL Einfg 82 52 82 52 ERW 82 52 ERW 146 92 ERW 162 a2 ERW Entf 83 53 83 53 NUL 44 2 147 93 NUL Entf 83 53 83 53 ERW 83 53 ERW 147 93 ERW 163 a3 ERW zu 86 56 60 3c lt 62 62 gt F11 87 57 133 85 ERW 135 87 ERW 137 89 ERW 139 8b ERW F12 88 58 134 86 ERW 136 88 ERW 138 8a ERW 140 8c ERW 1 alphanumerischer Block nur MF II mit Vorsatzbyte Oeh 2 numerischer Block nur MF II mit Vorsatzbyte Oeh 3 im abgesetzten Steuerblock bei MF Il 4 Bildschirmausdruck ber INT 05h unter DOS 5 SysReq entsprechend INT 15h Funktion 85h 6 MF II mit Vorsatzbyte eOh 7 nur MF II mit Vorsatzbyte eth numerischer Block Tastencodes deutsche Tastaturbelegung PC als MVUS Teil2 40 Prof Komar Systemunt
13. ES BP Pufferzeiger dunkelgrau hellblau hellgr n hellt rkis Aufbau des Text Bildspeichers im Segment 0B800h 1 Spalte ende Lama Code atribu 24 Zeile 3680 3681 3682 3683 25 Zeile 3840 3841 3842 3843 2 Spalte AL Bildschirmmodus wie Funktion AH 0 AH Zahl der Bildschirmspalten 40 o 80 BH aktuelle Bildschirmseite Modi 0 Attribut BL Cursor beibehalten 1 Attribut BL Cursor aktualisiert 2 Attribut Puffer Cursor beibehalten 3 Attribut Puffer Cursor aktualisiert f r Grafik Modus 12h 640x480 16 farbig 80 Spalte 0158 0159 0318 0319 3838 3839 3998 3999 PC als MVUS Teil2 23 Systemunterlagen Prof Komar Hardware Programmierung Interrupt Routinen f r die Maus Aufruf int 33h Funktion AX 0 Status lesen AX 1 Maus Zeiger ein Riickgabe AX Maus vorhanden FFFF h gt ja BX Zahl der Tasten 0000 h gt nein Standard Textmode gt Softwarezeiger Block Mauszustand aktueller Status der Tasten und Position des Mauszeigers AX 4 Mauszeigerposition festlegen AX 5 Taste gedr ckt Bet tigungen einer Maustaste und letzte Mauszeigerposition AX 6 Freigeben einer Maustaste Taste gel st und letzte Mauszeigerposition AX 7 Horizontalbereich einstellen Vertikalbereich einstellen Mauszeiger im Grafik modus definieren AX 0ah Mauszeiger im Text modus definieren A
14. Modus mit dem diese beim letzten Schreiben des Steuerregisters des betreffenden Z hlers geladen worden sind Bit 4 5 enth lt Wert von RW Read Write mit dem diese beim letzten Schreiben des Steuerregisters geladen worden sind 1 Z hlelement noch nicht mit Anfangswert geladen Z hler nicht lesbar 1 Status des OUTx Pins ist high Pegel 0 low Pegel Im obigen Beispiel k nnte im PC das zur ckgelieferte Modusbyte wie folgt aussehen Statusregister 0 0 110100 INT 08h Systemuhr gt OUT Pin auf 0V gt Anfangsz hlwert geladen gt Lesen Schreiben beider Byte gt Z hlermodus 2 per Ratengenerator gt duale Z hlung PC als MVUS Teil2 43 Prof Komar Systemunterlagen Hardware Programmierung Der Uhrenbaustein RTC Byte Adresse Inhalt Byte Adresse Inhalt o 00h Sekunde 22 16h Basisspeicher h herw Byte 1 01h Alarmsekunde 23 17h Extended Memory niederwert 2 02h Minute Byte laut SETUP 3 03h Alarmminute 24 18h Extended Memory h herwert 4 04h Stunde Byte laut SETUP 5 05h Alarmstunde 25 19h Erweiterungsbyte 1 Festplatte 6 06h Tag der Woche 26 1ah Erweiterungsbyte 2 Festplatte 7 07h Tag des Monats 27 31 1bh 1fh reserviert 8 08h Monat 32 39 20h 27h Parameter Festplattentyp 48 9 09h Jahr 40 45 28h 2dh reserviert 10 Oah Statusregister A 46 2eh Pr fsumme niederw Byte 11 Obh Statusregister B 47 2fh Pr fsumme h herw Byte 12 Och Statusregister C 48 30h Extended Memory niederwe
15. P K hn PC System Programmierung VDE Verlag Berlin Offenbach 1995 in Assembler unter DOS 13 T Langenkamp Hardware und System Programmierung te wi Verlag 1994 Assembler und C sehr ausf hrlich VGA Programmierung PC als MVUS Teil2 2 Prof Komar Systemunterlagen Hardware Programmierung 14 BORLAND C 3 0 Programmier Handbuch u Benutzer Handbuch Borland 1992 insbesondere auch Inline Assemblierung 15 Turbo Assembler 3 0 Benutzerhandbuch Borland 1992 insbesondere Schnittstelle zu Borland C 16 Frank van Gilluwe The undocumented PC Addison Wesley 1994 alles ber BIOS DOS und Hardware 17 Tom Hogan Die PC Referenz f r Programmierer Systhema Verlag 1992 reines Nachschlagewerk PC als MVUS Teil2 3 Prof Komar Systemunterlagen Hardware Programmierung Programmiermodell des INTEL 8086 Prozessors Real Mode enth lt die Register mit ihren symbolischen Namen die f r den Programmierer erreichbar sind Bit Nummer AX Arbeitsregister allg Arbeitsregister 16 Bit breit auch als zwei 8 Bit Register verwendbar BX H gt High h herwertiges L gt Low niederwertiges Byte CX DX Offsetregister SI Indexregister SI gt Source Index Quellindex DI DI gt Destination Index Zielindex SP Stapelzeigerregister SP gt Stackpointer zeigt auf den aktuellen Eintrag im Stack Stapel BP BP gt Basepointer CS Segmentregister CS gt Codesegment zeigt auf Speicher segment mit aktuellem Programmcode DS DS gt Datense
16. die deshalb als Application Program Interface DOS API bezeichnet werden bersicht der Funktionen des Interrupts 21h Zeicheneingabe Olh Zeicheneingabe mit Ausgabe 03h Empfang eines Zeichens von der seriellen Schnittstelle 06h Direkte Zeichenein ausgabe 07h Direkte Zeicheneingabe ohne Ausgabe 08h Zeicheneingabe ohne Ausgabe 0Ah Eingabe einer Zeichenkette 0Bh Lese Eingabestatus OCh L sche Eingabepuffer und rufe Eingabefunktion auf Zeichenausgabe 02h Ausgabe eines Zeichens 04h Ausgabe eines Zeichens auf die serielle Schnittstelle 05h Ausgabe auf parallele Schnittstelle 06h Direkte Zeichenein ausgabe 09h Ausgabe einer Zeichenkette Programmbeendigung 00h Programm beenden 31h Programm beenden aber im Speicher belassen 4Ch Programm mit Ende Code beenden Zugriff auf Unterverzeichnisse 39h Unterverzeichnis erstellen 3Ah Unterverzeichnis l schen 3Bh Aktuelles Verzeichnis setzen 47h Aktuelles Verzeichnis ermitteln RAM Speicher Verwaltung 48h 49h 4Ah 58h 00h 58h 01h 58h 02h 58h 03h RAM Speicher reservieren RAM Speicher freigeben Gr e eines Speicherbereichs ndern Konzept der Speicherverteilung lesen Konzept der Speicherverteilung setzen Einbindung der UMBs abfragen Einbindung der UMBs festlegen Zugriff auf Ger tetreiber 44h 00h IOCTL 44h 01h IOCTL 44h 02h IOCTL 44h 03h IOCTL Lesen des Ger te Attributs Setzen des Ger te Attributs Daten von einem Zeichentreiber empfangen Daten a
17. k nnen Ladesegment und Startsegment gleichbleiben Nach Laden des Overlays kann das geladene Programm durch einen FAR Call aufgerufen werden und es gilt COM Progr FAR CALL nach Ladesegment 10h 100h EXE Progr FAR CALL nach Ladesegment Startadresse EXE Progr Der Inhalt der Register BX CX DX SI DI BP CS DS SS und ES wird durch diese Funktion nicht ver ndert Interrupt 21h Funktion 4Bh 05h DOS Eigene EXECs anpassen Applikationen die andere Programme oder Overlays unter Umgehung der DOS Exec Funktion einladen m ssen sich ab der DOS Version 5 0 dieser Funktion bedienen um Probleme beim Nachladen der Programme und Overlays zu vermeiden Eingabe AH 4Bh AL 05h DS DX FAR Zeiger auf die Exec State Struktur Ausgabe Carry Flag 0 o k Carry Flag 1 Fehler in diesem Fall AX Fehler Code siehe Funktion 4Bh 00h Der Aufruf dieser Funktion mu zwischen dem Einladen des Programms oder Overlays und dessen Ausf hrung angesiedelt werden Zwischen dem Aufruf dieser Funktion und dem Start des Programms bzw Overlays d rfen dabei weder DOS oder BIOS Funktionen noch irgendwelche anderen Software Interrupts aufgerufen werden In der ExecState Struktur werden Informationen ber das Overlay bzw Programme zusammengefa t Adr Inhalt Typ 00h Reserviert mu 0 enthalten 1 WORD 02h 1 EXE Programm 1 WORD 2 Overlay 04h Zeiger auf einen ASCH String mit dem Namen des 1 PTR Programms bzw Overlays Pfadangaben sind i
18. oA 4190 78 x 88 58 x 24 18 X 45 2d NUL PC als MVUS Teil2 39 Prof Komar Systemunterlagen Hardware Programmierung cC 2 46 2e 99 63 c 67 43 C 3 03 C 46 2e NUL vV 47 2f 118 76 v 86 56 V 22 16 Vv 47 2f NUL B 48 30 98 62 b 66 42 B 2 02 RB 48 30 NUL N 49 31 110 6e n 78 Ae N 14 Oe N 49 31 NUL M 50 32 109 6d m We 4d M 13 Od NM 50 32 NUL er EN 33 44 2c A 59 3b 51 33 NUL Br 52 34 46 2e d 58 3a 52 34 NUL a 53 35 45 2d 95 5f 2 31 TF 53 35 NUL 2 53 35 aT Off a r 4 149 95 ERW 164 a4 ERW Umsch re 54 36 Druck 55 37 42 2a gt INT 5h4 SysReg5 x2 55 37 42 2a 42 2a 150 96 ERW 55 37 NUL Alt li 56 38 Alt re 56 38 leer 57 39 32 20 SPC 32 20 SPC 32 20 SPC 32 20 SPC CAPS Lock 58 3a F1 59 3b 59 3 NUL 84 54 NUL 94 Se NUL 104 Se NUL F2 60 3c 60 3c NUL 85 55 NUL 95 5f NUL 105 Sf NUL F3 61 3d 61 3d NUL 86 56 NUL 96 60 NUL 106 60 NUL F4 62 3e 62 3e NUL 87 57 NUL 97 61 NUL 107 61 NUL F5 63 3f 63 3f NUL 88 58 NUL 98 62 NUL 108 62 NUL F6 64 40 64 40 NUL 89 59 NUL 99 63 NUL 109 63 NUL F7 65 41 65 41 NUL 90 5a NUL 100 64 NUL 110 64 NUL F8 66 42 66 42 NUL 91 5b NUL 101 65 NUL 111 65 NUL F9 67 43 67 43 NUL 92 5c NUL 102 66 NUL 112 66 NUL F10 68 44 68 44 NUL 93 5d NUL 103 67 NUL 113 67 NUL NUM Lock 69 45 NUM Lock 69 45 Pause 69 45 Scroll 70 46 POS 1 7A aT 71 47 NUL 55 3 7 119 77 NUL Pos 1 IE 47 71 47 ERW 71 47 ERW 119 77 ERW 151 97 ERW Cursor ob 72 48 72 48 NUL 56 38 8 Cursor ob 72 48 72 48 ERW 72 48 ERW 141 8d ERW 152 98 ERW
19. schliessen Cy 1 Dateifehler gt AX einem Verzeichnis Cy 1 Dateifehler gt AX AH 43H Bestimmen Setzen DS DX Adresse des Pfadnamens Cy 0 kein Fehler dann Dateiattribut AL 0 Bestimme Attribute CX aktuelles Attribut AL 1 Setze Attribute CX B3 0 Cy 1 Dateifehler dann AX Fehlernummer AH 56H Umbenennen einer Datei DS DX Adresse alter Pfadnamen Cy 0 kein Fehler ES DI Adresse neuer Pfadnamen Cy 1 Fehler gt AX Fehlernr Aufbau des Dateiattributes in CX EIERE 1 Nur Lese Datei 1 versteckte Datei 1 Systemdatei CON Tastatur und Bildschirm Die zwingend vorgegebenen Namen der AUX Serielle Schnittstelle Ein und Ausgabeger te COM1 COM2 Serielle Schnittstellen PRN Parallele Schnittstelle Drucker LPT1 LPT2 LPT3 Parallele Schnittstellen Drucker NUL Imagin res Ger t das Daten verschluckt Standard Eingabeger t CON Standard Ausgabeger t CON Die Standard Handles Standardgerat zur Ausgabe von Fehlermeldungen CON Serielle Schnittstelle AUX Standard Drucker PRN hRwWNF e PC als MVUS Teil2 36 Systemunterlagen Prof Komar Hardware Programmierung Hex 0 1 2 3 4 5 6 7 h herwertiges Halbbyte 0000 0001 0010 0011 0100 0101 0110 011l 0 0000 NUL DLE S 0 P p 1 0001 SOH DCI 1 Q a q 2 0010 STX DQ 2 B R b r 3 0011 ETX DC 3 6 S c s 4 0100 EOT DC4 4 D T d t 5 0101 ENQ NAK 5 E U e u 6 0110 ACK SYN amp 6 F V f v 7 0111 BEL ETB 7 G w g
20. unspezifischen EOI Befehl 20h MOV AL 20h EOI Befehl OUT 0AOh AL an Slave OUT 20h AL an Master PC als MVUS Teil2 42 Prof Komar Systemunterlagen Hardware Programmierung Der Timerbaustein PIT 8254 Die Anschl sse Clk Gate und Out sind im PC mit dem Takt und der Gate Steuerung 5 V fest verbunden Aufbau des Steuerbytes fiir den Steuerport 43h Timerauswahl Reihenfolge Betriebsart Z hlung 00 Timer O 01 nur Low 000 warten Befehl 0 dual 01 Timer 1 10 nur High 001 warten Gate 1 BCD 10 Timer 2 11 Low High x10 periodische Impulse 1 Zahler Status 00 Z hlerstand x11 Frequenzteiler r cklesen festhalten 100 Einzelimpuls Befehl 101 Einzelimpuls Gate manner Format des Read Back Befehls f r mehrere Z hler gleichzeitig immer 0 1 Z hler 0 ausgew hlt 0 nicht ausgew hlt 1 Z hler 1 ausgew hlt 0 nicht ausgew hlt 1 Z hler 2 ausgew hlt 0 nicht ausgew hlt 1 Status des ausgew hlten Z hlers nicht ermitteln 0 ermitteln 1 Z hlerwert des ausgew hlten Z hlers nicht ermitteln 0 ermitteln gt immer 2 d immer 1 Beispiel Modus des Z hlers 0 MOV AL 11100010b Read Back nur Modus ermitteln OUT 43h AL an Steuerregister IN AL 40h Modus f r Timer 0 ein 7l6 5 als 2 la Format des Statusbytes 1 BCD Z hlmodus 0 duale 16 Bit Z hlung geladenes Z hlformat Bit 1 3 enthalt Wert von
21. AL Interrupt Nummer DS DX Zeiger Seg OTT auf ISR 35h Holen eines AH 35h ES BX Vektoradresse Interrupt Vektors AL Interrupt Nummer Segment Offset der ISR DOS Funktionen f r Programm Beendigung Aufruf INT 21h Eingabedaten Kommentar Ausgabedaten Kommentar Programm beenden aber AH 31h AL Ende Code keine Ausgabe im Speicher belassen DX Anzahl reservierende Paragraphen f r TSR Programme 16 Byte einschlie lich PSP Terminate and stay resident 4Ch Programm mit Ende Code AH 4C h Keine Ausgabe beenden AL Ende Code Zuverlassigste Beendigung Undokumentierte Funktionsaufrufe Aufruf INT 21h Holen Programmsegment AH 62h BX Segmentadresse des aktuellen PSP Prafix Adresse PSP Setzen Programmsegment AH 50 h BX Segment keine Prafixadresse PSP adresse neuer PSP DOS Infoblock ermitteln AH 52h ES BX Zeiger auf DOS Infoblock Holen des Reentry Flags ES BX Byte Adresse des INDOS Flags INDOS Flag 0 keine DOS Funktion aktiv 0 DOS Funktion in Ausf hrung Aufbau des DOS Info Blocks DIB adresse Bytes omn a mm Cep 08h 0Ch E E Zeiger auf Dateitabelle DOS Funktionen f r Datum und Uhrzeit im PC DOS interne Systemuhr INT 21h Funktion R ckgabe Datum abfragen Werte dual zur ckgeliefert AH 2Ah AL Tag der Woche Wochentag 0 Sonntag 1 Montag CX Jahr DH Monat DL Tag oon oan 0 ion rah Datum setzen AH 2Bh CX Jahr AL 0 gt ok
22. ARALLEL PRINTER GRAPHIC 80286 BIOS GET EQUIPMENT LIST 80486 BIOS GET MEMORY SIZE LAUFWERKSFUNKTIONEN EIN AUSGABE SERIELLE SCHNITTSTELLEN CASSETTEN RECORDER 8088 erweiterte Auf rufe KEYBOARD EIN AUSGABE PRINTER EIN AUSGABE DISKLESS BOOT HOOK START CASSETTE BASIC diverse Funktionen ROM BASIC SYSTEM BOOTSTRAP LOADER TIMER EIN AUSGABE PCI I O KEYBOARD CONTROL BREAK HANDLER TIMER SYSTEM TIMER TICK SYSTEM DATA GRAPHIC PARAMETERS SYSTEM DATA DISKETTE PARAMETERS SYSTEM DATA 8x8 GRAPHICS FONT YS Te DOS TERMINATE PROG RAM DOS FUNCTION CALLS DOS PROGRAM TERMINATION ADDRESS DOS CONTROL C CONTROL BREAK HANDLER DOS CRITICAL ERROR HANDLER DOS ABSOLUTE DISK READ DOS ABSOLUTE DISK WRITE DOS TERMINATE AND STAY RESIDENT DOS DOS IDLE INTERRUPT DOS FAST CONSOLE OUTPUT DOS CRITICAL ERROR NETBIOS DOS RESERVED DOS PASS COMMAND TO COMMAND INTERPRETER DOS MUTLIPLEXER DOS FAR JMP INSTRUCTION MOUSE FLOATING POINT EMULATION PC als MVUS Teil2 14 Prof Komar Systemunterlagen Hardware Programmierung Interrupt Beschreibung Anwender 40h DISKETTENFUNKTIONEN umpgeleiteter Interrupt 13 41h SYSTEM DATA HARD DISK 0 PARAMETER TABLE 42h GRAPHIC SERVICES EGA VGA umgeleiteter Interrupt 10 43h GRAPHIC DATA EGA MCGA VGA 44h GRAPHIC EGA CHARACTERS NOVELL NETWARE 46h SYSTEM DATA HARD DISK 1 DRIVE PARAMETER TABLE 47h 4Eh Diverse Funktionen 4Fh SCSI Common Access Method 50h Umgeleit
23. Break oder Reset Taste F8 Debug Meldung Program has no symbol table mit OK ignorieren CPU Fenster auf Bildschirmgr sse erweitern F7 Trace im Einzelschritt jeden Befehl ausf hren F8 Step im Einzelschritt Unterprogramme bergehen nach Ausf hrung von STARTUP Men View CPU gibt DS Datensegment F9 Run Programm schnell ausf hren Neustart Men Run Program reset 32 bit Register einblenden das Registerfeld anklicken lokales Men Alt F10 Registers 32 bit No mit cr umschalten Floating Point Register NCP einblenden View Numeric processor NCP Fenster einblenden ausblenden Programm Abbruch in Notf llen Strg C nur wenn DOS Eingabefunktion wartet oder Strg Break 2x oder Reset Taste Ende des Debuggers mit File Quit Alt X F7 List bersetzungsliste LST ausgeben F9 DOS kopieren mit gt copy Quelle ASM Ziel ASM Kopie mit F2 Datei zur Arbeitsdatei machen zur ck nach MOPSOS mit gt EXIT F10 Ende oder Escape Taste zur ck nach D MOPSOS gt PC als MVUS Teil2 Systemunterlagen 8 Prof Komar Hardware Programmierung Testprogramm mit Datei speichern unter nach name ASM kopieren und mit F2 Datei zur Arbeitsdatei machen noname asm bung escape prompt schleife ausgang hier m ssen di EQU DOSSEG MODEL 486 STACK DATA DB DB CODE STARTUP mov mov int mov int cmp je jmp EXIT Muster f r exe Programmrahmen mit TASM Endemarke definie
24. OS Funktionen Interrupt 10h Bildschirm 00h Setzen des Video Modus Olh Definition des Erscheinungsbildes des Cursors 02h Positionierung des Cursors 03h Auslesen der Cursor Position 04h Auslesen der Lichtstiftposition 05h Auswahl der aktuellen Bildschirmseite 06h Textzeilen nach oben schieben scrollen 07h Textzeilen nach unten schieben scrollen 08h Auslesen eines Zeichens Farbe 09h Schreiben eines Zeichens Farbe 0Ah Schreiben eines Zeichens OBh 00h Auswahl der Rahmen Hintergrundfarbe 0Bh Olh Auswahl der Farbpalette OCh Schreibe Grafikpunkt 0Dh Lese Grafikpunkt OEh Schreiben eines Zeichens OFh Auslesen des Video Modus 13h Ausgabe einer Zeichenkette Interrupt 11h Feststellung der Konfiguration Interrupt 12h Feststellung der Speichergr e Interrupt 13h Diskette 00h Reset Olh Status Lesen 02h Lesen 03h Schreiben 04h Verifizieren 05h Formatieren 06h Festplatte 07h Festplatte 08h Format abfragen 09h Festplatte 0Ah Festplatte 0Bh Festplatte OCh Festplatte 0Dh Festplatte OEh Festplatte OFh Festplatte 10h Festplatte 11h Festplatte 12h Festplatte 13h Festplatte 14h Festplatte 15h Feststellung des Laufwerktyps 16h Feststellung eines Diskettenwechsels 17h Diskettenformat festlegen 18h Diskettenformat festlegen PC als MVUS Teil2 18 Systemunterlagen Interrupt 13h Festplatte 00h Reset Olh Status lesen 02h Lesen 03h Schreiben 04h Verifizieren 05h Formatieren 08h Format erfragen
25. PC als MVUS Teil2 1 Prof Komar Systemunterlagen Hardware Programmierung Systemunterlagen Literatur 1 G nter Schmitt Mikrocomputertechnik mit dem 16 Bit Prozessor 8086 Oldenbourg 1986 MIC Grundlagen und Assembler Programmierung 2 Hans Peter Messmer PC Hardwarebuch Addison Wesley 2000 Hardware Standardwerk 3 Michael Tischer PC Intern 5 Systemprogrammierung DATA Becker 1995 Standardwerk der Systemprogrammierung 4 Oliver Miller Assembler Referenz Franzis 2000 insbesondere Assembler unter Windows und Einbindung in C C 5 E W Dieterich Assembler Grundlagen der PC Programmierung Oldenbourg 2000 insbesondere Verbindung von Assembler und C C 6 Brors Isa Maschinensprache des IBM PC AT Hiithig 1992 Assembler Systemprogrammierung n tigste an Hardware 7 Thomas Little Das PC Buch Systhema Verlag 1992 Hardware Systemprogrammierung wenig Assemblerprogrammierung 8 Wolfgang Link Assembler Programmierung Einf hrung unter MS DOS Franzis Verlag 1992 Assembler Programmierung 9 Holger Sch kel Maschinensprache Einsteiger DATA Becker 1992 insbesondere auch TSR und Treiberprogrammierung 10 H Weber Mikrorechnertechnik Die Intel Mikroprozessorfamilie R Oldenburg M nchen Wien 1994 Hardware nicht nur PC spezifisch und Assemblerprogrammierung 11 G Schmitt C Kurs technisch orientiert R Oldenbourg Verlag M nchen Wien 1999 insbesondere Hardware Zugriffe unter DOS 12 F Bollow K
26. PC als MVUS Teil2 47 Prof Komar Systemunterlagen Hardware Programmierung Richtlinien f r Interruptfunktionen in C Interruptfunktionen sind far und erhalten den Spezifizierer interrupt bei der Prototyp Deklaration und bei der Definition hinter main Sie bernehmen keine Parameter void und liefern kein Ergebnis R ckgabewert void Beispiel void interrupt taste void bergabe von Daten zwischen main und der Interruptfunktion nur ber globale Variablen diese globalen Variablen vor main anlegen Interrupt Vektortabelle Die Hauptfunktion main tr gt die Adresse der Interruptfunktion mit der Funktion poke in die Vektortabelle ein Man beachte den Abstand 0x100 vom Segmentanfang COM Programme Eintragen von Interruptfunktionen in die Vektortabelle mit poke 0 vektor FP_OFF funktion 0x100 poke 0 vektor 2 FP_SEG funktion Beispiel poke 0x0 IRQ7VEK FP_OFF taste 0x100 Offset poke 0x0 IRQ7VEK 2 FP_SEG taste Segment Interrupt Kontrolle Die Funktion enable gibt den IRQ Interrupt frei I Bit 1 INTR Freigabe und die Funktion disable sperrt den IRQ Interrupt I Bit 0 generelle Sperre Freigabe aller am INTR Eingang tiber PIC hangender Interruptquellen Freigabe und Sperre des Interrupts im Maskenregister des PIC durch die Hauptfunktion main mit inp und outp selektive Sperre Freigabe des jeweiligen Interrupts Best tigung des Interrupts im Freigaberegister de
27. PE PO Carry yes no CY NC Prof Komar Hardware Programmierung Format a Adresse c Bereich Adr d Adr oder d Bereich e Adr Liste f Bereich Muster g Adr Adrl Adr2 h Wert Wert i Portadresse l Adr Laufw Sek Sek m Bereich Adr n d Pfad Name erw o Portadresse Byte p Adr Wert q r Reg s Bereich Liste t Adr Wert u Adr oder u Bereich w Adr Laufw Sek Sek PC als MVUS Teil2 6 Prof Komar Systemunterlagen Hardware Programmierung Softwareentwicklung mit Borland TASM TLINK TD TLIB Der Assembler Quelltext name ASM soll mit einem ASCH Text Editor Text darf nur ASCH Zeichen enthalten erstellt werden z B DOS EDIT oder WORD im Nur Text Modus Der symbolische Assembler bersetzt den Quelltext in den sogn Objectcode und erzeugt eine Object Datei name OBJ Aufruf TASM lt name gt falls keine Endung angegeben wird sucht der Assembler nach name ASM und falls eine Listing Datei name LST mit der Auflistung von Quell Maschinencode und Fehlermeldungen gew nscht wird Aufruf TASM IJ lt name gt und falls mit dem Turbodebugger auf Quelltextebene debuggt werden soll Aufruf TASM zi lt name gt Der Binder Linker hat die Aufgabe eine oder mehrere Objectdateien zusammenzuf gen und in die Betriebssystem umgebung einzubinden und dabei ist die Erstellung einer Reloctionstabelle n tig In dieser Tabelle sind alle Positionen im Programm enthalten deren In
28. Programmierung deutsch F llzeichen Anfang des Kopfes Anfang des Textes Ende des Textes Ende der bertragung Stationsaufforderung Positive R ckmeldung Klingel R ckw rtsschritt Horizontal Tabulator Zeilenvorschub Vertikal Tabulator Formularvorschub Wagenr cklauf Dauerumschaltung R ckschaltung Daten bertragung Umschaltung Ger testeuerung 1 XON Ger testeuerung 2 Ger testeuerung 3 XOFF Ger testeuerung 4 Negative R ckmeldung Synchronisierung Ende des bertragungs Blocks Ung ltig machen Ende der Aufzeichnung Substitution Umschaltung Hauptgruppen Trennung Gruppen Trennung Untergruppen Trennung Teilgruppen Trennung Zwischenraum Leerschritt L schen Bedeutung der Sonderzeichen im ASCII Code nach DIN 66003 PC als MVUS Teil2 38 Prof Komar Systemunterlagen Hardware Programmierung Tastencodes deutsche Tastaturbelegung ee eS Taste Scancode ASCli erweitert ASClil erweitert ASCil erweitert ASCii erweiter mit Umschalt mit Strg mit Alt Dez Hex Dez Hex Zeich Dez Hex Zeich Dez Hex Zeich Dez Hex Zeicl Sire ne ER ne et Sn Ne Oe ESC 1 01 27 Ab 27 1b 27 1b 1 01 NUL 1 2 02 49 31 1 it ema E 120 78 NUL 2 3 03 50 292 79 17 22 3 03 NUL 121 79 NUL 38 4 04 51 33 3 21 15 9 122 7a NUL 4 5 05 52 34 4 36 24 123 7b NUL 5 6 06 53 35 5 37 25 124 7c NUL 6 amp 7 07 54 36 6 38 26 A 125 7d NUL 71 8 08 55 37 7 47 2f 126 7e NUL 8 9 09 56 38 8 40 28 127 7f NUL 9 10 0a 57 39 9 41 29 128 80 NUL 11 Ob 48
29. Repeat REPE prefix Repeat equal REPNE prefix Repeat not equal REPNZ prefix Repeat not zero REPZ prefix RETF RET ROL xx 1 ROR xx SAHF SAL xx l SAR zx l SBB XI X2 SCAS SHL xx l SHR xx l STC STD STI STOS xx SUB X1 X2 TEST XI X2 XCHG XI X2 XLAT xx XOR XI X2 Repeat zero Return far Return near Rotate left Rotate right Store AH into flags Shift arithmetik left Shift arithmetik right Subtract with borrow Compare Strings Shift left Shift right Set carry flag Set direction flag Set interrupt enable flag Store String Subtract Test Exchange Translate Exclusive OR PC als MVUS Teil2 13 Prof Komar Systemunterlagen Hardware Programmierung Software Interrupts Interrupt BIOS 00h Olh 02h 03h 04h 05h 06h 07h 08h 09h 0Ah OBh OCh 0Dh OEh OFh 10h 1th 12h 13h 14h 15h 16h 17h 18h 19h 1Ah IBh 1Ch IDh IEN 1Fh DOS 20h 21h 22h 23h 24h 25h 26h 27h 28h 29h 2Ah 2Bh 2Dh 2Eh 2Fh 30h 33h 34h 3Fh Beschreibung DIVIDE ERROR Division durch 0 SINGLE STEP 80386 DEBUGGING NON MASKABLE INTERRUPT BREAKPOINT CPU INTO DETECTED OVERFLOW CPU Obenauf PRINTSCREEN INVALID OPCODE 80286 PROCESSOR EXTENSION reserviert 80286 IRQO SYSTEM TIMER 80286 IRQ1 KEYBOARD DATA READY 80286 IRQ2 LPT2 EGA VGA IRQ9 80286 IRQ3 COM2 80286 IRQ4 COMI 80286 IRQ5 HARDDISK LPT2 80286 IRQ6 DISC CONTROLLER 80286 IRQ7 P
30. Speicherinhalt MCB 1 Besitzer 623h Programmname Es 0622 0000 4D 23 06 2A 01 00 00 00 43 40 00 00 00 00 00 00 TEST1 COM E L nge des Blocks 12Ah Paragraphen 0623 0000 CD 20 4D 07 00 9A FO FE 1D FO DC 01 39 05 4B 01 0623 0010 39 05 56 01 39 05 39 05 01 01 01 00 02 FF FF FF 0623 0020 FF FF FF FF FF FF FF FF FF FF FF FF 14 06 E2 02 00000 h l Identifikation eines PSP Blocks im Speicher Verwaltung des RAM Bereiches mit MCBs Multiplex Interrupt 2Fh dient zur Festlegung einer Schnittstelle zwischen Prozessen Wird f r die Verwaltung von DOS Befehlen die sich bei ihrem Aufruf als TSR Programme resident im Speicher installieren PRINT ASSIGN SHARE APPEND DOSKEY verwendet und erm glicht gewisserma en bescheidenes Multitasking Um nach dem resident machen mit diesem Programmen noch in Verbindung treten zu k nnen klinken sich diese in den Multiplexer Interrupt 2F h ein der damit f r alle TSR Programme eine Kommunikationsschnittstelle nach au en darstellt um z B bestimmte Parameter in dem TSR Programm zu ver ndern oder das Programm aus dem Speicher zu entfernen Ein Programm das den MUX verwendet mu sich selbst zun chst eine 8Bit Kennummer MUX Code geben wobei die Nummern 00 BFh f r DOS Programme reserviert sind und der Bereich von CO FFh f r Anwender programme genutzt werden kann F r die Kommunikation mit dem TSR Programm mu dieses einen eigenen Interrupt Handler f r den MUX 2Fh installieren
31. X 0bh Bewegungsz hler der Maus lesen AX 0fh Verh ltnis Z hlwert Bildschirmpunkt festlegen AX 10h Mauszeiger bedingt ausschalten AX 13h Schwellenwert f r doppelte Geschwindigkeit definieren CX X Position in Pixel DX Y Position in Pixel BX Tastencode O linke 1 rechte 2 mitte Code je nach Treiber BX Tastencode O linke 1 rechte 2 mitte Code je nach Treiber CX linke Grenze DX rechte Grenze CX obere Grenze DX untere Grenze BX Aktionspunkt horizontal CX Aktionspunkt vertikal ES DX FAR Zeiger BX Mauszeigertyp gt CX Screen Maske UND DX Cursor Maske XOR CX Z hlwert horizontal DX Z hlwert vertikal gt seit letztem Aufruf CX horizontales Verh ltnis DX vertikales Verh ltnis CX X Wert rechte Grenze DX Y Wert untere Grenze SI X Wert linke Grenze DI Y Wert obere Grenze DX Schwellenwert BX Tasten xxxxx mitte 1 rechte 1 linke 1 CX X Position in Pixel DX Y Position in Pixel AX Tasten mitte rechte linke BX Anzahl der Tasten Bet tigungen seit letzter Abfrage CX X Position in Pixel DX Y Position in Pixel Betatigung AX Tasten mitte rechte linke BX Anzahl der Tasten Freigaben CX X Position in Pixel bei letzter DX Y Position in Pixel Freigabe bei letzter Fenster fiir Mauszeiger festlegen z B 0 639 Pixel Fenster fiir Mauszeiger festlegen z B 0 479 Pixel Wertebereich 16 16 Adres
32. alisierungs Interrupt 0 nein ist nicht AF 1 Quelle von IRQ ist Alarm Interrupt 0 nein ist nicht PF 1 Quelle von IRQ ist periodischer Interrupt 0 nein ist nicht IRQ Request 1 mindestens ein Interrupt ist angefordert 0 kein Interrupt angefordert UF AF und PF werden durch die jeweilige Aktivit t gesetzt f r Polling Abfrage und dies ist nicht abh ngig von der Interrupt Freigabe im Statusregister B PC als MVUS Teil2 44 Prof Komar Systemunterlagen Hardware Programmierung Hardware Programmierung in C Wichtige Funktionen und Makros in dos h zuordnen mit include lt dos h gt aus 11 C Funktion Aufgabe unsigned char inp Port liefert Byte vom Eingabeport inportb Port int inport Port liest Wort 16 Bit vom Eingabeport D gabep outp Port Byte schreibt Byte nach Ausgabeport outportb Port Byte Ps outport Port Word schreibt Wort 16 Bit nach Ausgabeport pokeb Segment Offset Byte schreibt Byte nach Speicher Seg Off poke Segment Offset Wort _ schreibt Wort 16 Bit nach Speicher Seg Off _ Hinweise fiir die hardwarenahe C Programmierung Zuordung von Systemmakros mit include lt dos h gt Porteingabe mit inp Port Portausgabe mit outp Port Byte Speicherwort schreiben poke Segm Offs Wert lesen peek Segm Offs keine switch case Auswahl keine Objekte und Klassen keine 32 bit Division fiir Datentyp int vorbesetzte Felder Konstanten
33. chen funktionieren und Ctrl C gt INT 23h 2 Byte enthaelt Anzahl der tats chlich eingegeben Zeichen ohne cr Funktion mit cr beenden cr wird als letztes Zeichen im Puffer eingetragen int 21h AH 0Bh Tastatur Test ohne Warten sofort zur ck AL 0 keine Taste gedr ckt AL 255 Taste gedr ckt Zeichen im Puffer abholen mit AH 1 oder AH 8 int 21h AH 0Ch L sche Tastatur Eingabepuffer und rufe eine Eingabefunktion auf AL Nummer der aufzurufenden Funktion 1 6 7 8 0Ah AL ver ndert int 21h Datei lesen nach Pufferspeicher bei Tastatur mit Echo BX handle 0 handle f r Tastatur CON R ckgabe AX Anzahl gelesener Byte Anzahl der Bytes CY 0 ok Adresse des Pufferspeichers CY 1 Fehler in AX Fehlercode Standard unter DOS ist cooked Mode Steuerzeichen z B lt cr gt aktiv int 21h AH 40h Datei beschreiben aus Pufferspeicher BX handle 1 handle f r Bildschirm R ckgabe AX Anzahl geschriebener Byte CX Anzahl der Bytes CY 0 ok DS DX Adresse des Pufferspeichers CY 1 Fehler in AX Fehlercode int 21h Eingabe einer Zeichenkette mit Echo Ctrl C gt INT 23h FAR Zeiger auf Puffer fuer Zeichenkette 1 Pufferbyte mu max Anzahl der einzugebenden Zeichen enthalten PC als MVUS Teil2 29 Prof Komar Systemunterlagen Hardware Programmierung DOS Funktionen f r Interrupt Vektor Aufruf INT 21h Eingabedaten Kommentar Ausgabedaten Kommentar Setzen eines AH 25h keine Ausgabe Interrupt Vektors
34. cht werden Um eine Batch Datei auszuf hren mu der Kommandoprozessor COMMAND COM mit dem Parameter c gefolgt vom Namen der Batch Datei aufgerufen werden Der Parameterblock mu folgendes Format haben Byte 0 1 Segmentadresse des Environment Blocks Byte 2 3 Offsetadresse der Kommandoparameter Byte 4 5 Segmentadresse der Kommandoparameter Byte 6 7 Offsetadresse des ersten FCB Byte 8 9 Segmentadresse des ersten FCB Byte 10 11 Offsetadresse des zweiten FCB Byte 12 13 Segmentadresse des zweiten FCB Wird als Segmentadresse des Environment Blocks der Wert 0 bergeben so verf gt das aufgerufene Programm ber den gleichen Environment Block wie das aufrufende Programm PC als MVUS Teil2 34 Prof Komar Systemunterlagen Hardware Programmierung Die Kommandozeile enth lt Befehle f r das auszuf hrende Kind Progr und wird von DOS in den PSP des Kind Progr ab Adresse 80h kopiert Die Kommandoparameter m ssen im Speicher in der Art gespeichert sein da zun chst die Anzahl der Zeichen in der Kommandozeile als Byte abgespeichert wird Darauf folgen die einzelnen ASCH Zeichen die durch ein Carriage Return ASCII Code 13 beendet werden Dieses Carriage Return wird allerdings bei der Anzahl der Zeichen nicht mitgez hlt z B PRGPARA DB 9 c DIR 13 Der erste tibergebene FCB wird ab der Adresse 5Ch der zweite ab der Adresse 6Ch in den PSP des aufgerufenen Programms kopiert Entnimmt das aufgerufene Programm diesen beiden FCB
35. eit Uhr 05h Setzen des Datums der Echtzeit Uhr 06h Alarmzeit setzen 07h Alarmzeit l schen Prof Komar Hardware Programmierung PC als MVUS Teil2 19 Prof Komar Systemunterlagen Hardware Programmierung BIOS Interrupt Routinen f r die Tastatur Aufruf int 16h R ckgabe AH 0 Zeichen lesen Tastatur testen Ergebnis 0 Z 1 kein Zeichen im Puffer ohne warten Ergebnis 0 Z 0 Zeichen im Puffer und AX abholen mit Fktn AH 0 wartet auf Taste ohne Echo AH Scan Code AL ASCII Code AH 2 TastaturStatus lesen AL Status der Modifizierertasten 40 17h Bit AL x 1 gt Taste bet tigt bzw Modus ein AH 3 Wiederholungsrate und Verz gerung einstellen Wiederholungsrate 00h 30 Wps bis 1Fh 2 0 Wps Verz gerung 00h 250ms 01h 500ms 11h 1 Sek AH 5 Tastendruck simulieren Scancode in den Tastaturpuffer schreiben durch Schreiben in Tastaturpuffer ASCII Code AL 0 ok AL 1 gt Tastaturpuffer voll AH 10h Zeichen lesen AH Scan Code AL ASCII Code von erweiterter Tastatur entspricht Fktn 00 unterstiitzt erweiterte Tastatur Ergebnis 0 Z 1 kein Zeichen im Puffer Ergebnis 0 Z 0 Zeichen im Puffer und AX entspricht Funktion 01 AH 11h Pufferstatus f r erweiterte Tastatur AH 12h TastaturStatus lesen AL 1 Umschaltstatusbyte der erweiterten Tastatur AH 2 Umschaltstatusbyte lt Zustandstasten Modus lt nur mit anderen Tasten zusammen g
36. eln 59h Erweiterte Fehlerinformationen einholen 60h Dateinamen erweitern 66h 01h Aktuelle Code Page ermitteln 66h 02h Aktuelle Code Page festlegen 67h Anzahl der verf gbaren Handles festlegen 68h Dateipuffer leeren Prof Komar Hardware Programmierung PC als MVUS Teil2 28 Prof Komar Systemunterlagen Hardware Programmierung DOS Interrupt Routinen f r die Ein Ausgabe von Zeichen und Strings auf der Konsole Aufgabe int 21h AH 1 Tastatur Eingabe nach AL mit Warten und Echo Ctrl C gt INT 23h gefiltert gt Steuerzeichen cr If bcksp usw funktionieren Erweiterte Tastaturcodes zuerst 0 erneuter Aufruf gt eigentlicher Code int 21h AH 2 Zeichen aus DL auf dem Bildschirm ausgeben AL wird ver ndert gefiltert dh Steuerzeichen funktionieren int 21h AH 06 Zeichen Eingabe ohne Warten ohne Echo und Zeichen Ausgabe DL 0 254 dieses ASCII Zeichen ausgeben ASCII Code 255 nicht m glich DL 255 Ein Zeichen von Tastatur ohne Warten und ohne Echo nach AL ein Z Flag 1 kein Zeichen bereit Z Flag 0 Zeichen in AL int 21h AH 7 Tastatur Eingabe nach AL mit Warten ohne Echo ungefiltert d h z B Ctrl C keine Wirkung Tastatur Eingabe nach AL mit Warten ohne Echo Ctrl C gt INT 23h gefiltert erweiterte Tastaturcodes zuerst 0 dann eigentlicher Code int 21h Ausgabe einer Zeichenkette Zeichenkettenende mu Zeichen sein FAR Zeiger auf Beginn der Zeichenkette AL wird ver ndert gefiltert Steuerzei
37. en von Zeichen mit Attribut an die Cursorposition Bildschirmseite 0 bis 7 je nach Modus Zahl der Scroll Zeilen Zeilen Spaltenposition des Scroll Fensters links oben Zeilen Spaltenposition des Scroll Fensters rechts unten Bildschirmattribut fiir nachgeschobene Leerzeilen Zahl der Scroll Zeilen Zeilen Spaltenposition des Scroll Fensters CX links oben Zeilen Spaltenposition des Scroll Fensters rechts unten Bildschirmattribut fiir nachgeschobene Leerzeilen Bildschirmseite nur bei Textmodi zu schreibendes Zeichen ASCII BH BL Bildschirmseite nur Textmodi Attribut Textmodi oder Farbe Grafikmodi Wiederholungsfaktor Anzahl Zeichen keine Bei Grafik wird der gesamte Bild wiederholspeicher benutzt daher nur g ltig f r Textmodi keine Die Bildschirmattribute sind auf Seite definiert Bildschirm l schen AL 0 BH Attribut CH 0 CL 0 DH 24 DL 79 keine Die Attributsbits sind kompatibel bei Monochrom Color Adaptern AL gelesenes Zeichen ASCII AH gelesenes Bildschirmattribut nur Textmodi keine der Wiederholungsfaktor gilt nur fiir laufende Zeile kein Zeilenumbruch Cursor mu separat bedient werden Fktn 2 Attribut werden ver ndert PC als MVUS Teil2 Systemunterlagen AH 0Ah AH OBh AH 0Ch Schreiben eines Zeichens an aktuelle Cursorposition Farbpalette festlegen Grafikpunkt schreiben
38. erlagen Hardware Programmierung Die parallele Schnittstelle PIO 8255 MVUS 80535 Nach einem Reset sind alle Ports als Eingang geschaltet die Datenregister sind gel scht A Port Ausgabe LED Eingabe Kippschalter B Port Ausgabe LED Eingabe Kippschalter C Port Ausgabe LED Eingabe Kippschalter und Taster Steuerport nur beschreibbar nicht r cklesbar Steuerbyte der Betriebsart 0 einfache Ein Ausgabe x 0 Cl Port aus 1 Cl Port ein 0 B Port aus 1 B Port ein 0 ji 0 A Port aus A Port ein PC als MVUS Teil2 4 Prof Komar Systemunterlagen Hardware Programmierung Der Interruptsteuerbaustein PIC 8259 im PC Port 21h Master Maskenregister Interruptfreigabe 0 frei 1 gesperrt Port Alh Slave EEE ae eo ee Port 20h Master Bestatigungsregister IRQO xxx 000 bis IRQ7 xxx 111 Port A0h Slave Die beiden Interruptsteuerbaustein PIC 8259 A Master und Slave werden beim Neustart durch das Betriebssystem durch 4 ICWS Initialisierungsworte initialisiert auf steigende Flanke Flankentriggerung mit Bit LTIM 0 im ICH zwei kaskadierte PICs Master Slave mit Bit SNGL 0 im ICWI 8086 Modus gt Controller legt Vektor Nummer Byte auf Datenbus mit Bit uPM 1 im ICW4 Master gt Vektor Nr 08h IRQO bis OF h IRQ7 und mit Bits Off7 Off3 im ICW2 Slave gt Vektor Nr 70h IRQO bis 77h IRQ7 festliegende hierarchische Priorit t Eingang 0 IRQO h chste Eingang 7 IRQ7 niedrigs
39. erverwaltung unter DOS erfolgt mit Hilfe von Speicher Kontrollblocks Memory Control Blocks MCB der Gr e von 16 Byte die dem allokierten Speicherbereich im transienten Programm Bereich TPA vorangestellt werden Struktur eines Speicher Kontrollblocks MCB oO _ I 3 ja s Is 7 Is T1o 1 J 2 J13 1a J s Programmname nicht benutzt L nge in Paragraphen 16 Byte Besitzer Segmentadresse des zugeh rigen PSP nur von Bedeutung bei Umgebung Environment Verkettungszustand M 4Dh gt es folgen weitere MCB Z 5Ah gt letzter MCB Unmittelbar hinter dem Ende des allokierten Speicherbereiches folgt der n chste MCB damit zeigt die Lange auch die Entfernung zum n chsten MCB 1 verkettete Liste an Adresse des ersten MCB im DIB DOS Information Block Mit Funktion 52h undokumentiert kann die Adresse vom DIB im Registerpaar ES BX ermittelt werden Der Pointer 4 Byte des ersten MCB ist an der Adresse ES BX 4 zu finden Der Umgebungsblock Environment enth lt Strings die durch die DOS Befehle SET und PATH definiert werden ASCH String durch Null Zeichen beendet Mit dem DOS Befehl mem d p l t sich die aktuelle Speicherbelegung darstellen PC als MVUS Teil2 31 Prof Komar Systemunterlagen Hardware Programmierung freier Speicher durch letzten MCB verwaltet zus tzlicher Speicher von PROGI angefordert PROG1 EXE Ende des freien RAM Bereiches TPA Adresse
40. ete alternative Puffer kann gr er als 32 Byte sein seine Adresse ist aber auf das Segment 0040h beschr nkt BIOS Datenbereich des Tastaturpuffers BIOS Tastatur Hooks mit INT 15h AH 4Fh User Exit des Int 09h AH 4Fh R ckgabe CY 0 Taste fiir Scancode mit Scancode in AL AL Scancode Manipulation Aufruf INT 15h CY 1 AH 85h Int 09h ruft Funktion auf AH 85h f r Abfangen von wenn Alt SysReq gedr ckt AL 0 SysReq gedr ckt SysReg Taste AL 1 SysReq losgelassen ignorieren CY 1 Taste verarbeiten BIOS Drucker Ausgabe mit INT 17h Eingabe Kommentar Ausgabe Kommentar Zeichen in AL drucken DX log Drucker AH 01 falls kein Druck 00 LPT1 PRN erfolgte 01 LPT2 brigen Bits wie Status 02 LPT3 AL zu druckendes Zeichen AH 1 Druckerschnittstelle DX wie oben AH Status der Schnittstelle C ee eee der Schnittstelle ermitteln Druckerstatus in AH nach Aufruf AH 02 INT 17h Bit 1 wirksam Bestatigung Kein Papier Drucker E A Nicht Nicht Time Out Acknowledge ausgewahlt Fehler verwendet verwendet Fehler PC als MVUS Teil2 Systemunterlagen 21 Prof Komar Hardware Programmierung Bildschirmfunktionen von INT 10h Funktions Bedeutung Eingabedaten Kommentar Ausgabedaten Kommentar Nummer AH 00h Betriebsart w hlen Text 40 x 25 Monochrom Bildschirm wird Text 40 x 25 Color 16 farbig hierbei gel scht Text 80 x 25 Monochrom Text 80 x 25 Color 16 farbig 8 Graf
41. eter IRQO 51h Umgeleiteter RO 52h Umgeleiteter IRQ2 53h Umgeleiteter IRQ3 54h Umgeleiteter IRQ4 55h Umgeleiteter IRQ5 56h Umgeleiteter IRQ6 57h Umgeleiteter IRQ7 58h Umgeleiteter IRQ8 0 59h Umgeleiteter IRQ9 1 5Ah Umgeleiteter IRQ10 2 5Bh Umgeleiteter IRQ1 1 3 5Ch Umgeleiteter IRQ12 4 5Dh Umgeleiteter IRQ13 5 5Eh Umgeleiteter IRQ14 6 5Fh Diverse Funktionen 60h 66h Reserviert f r spezielle Interrupt Verarbeitung und diverse Funktionen 67h LIM EMS diverse Funktionen 68h 6Ch Diverse Funktionen 6Dh On Board VGA 6Eh Netzwerk API 6Fh Novell NetWare 70h IRQ8 CMOS REAL TIME CLOCK 71h IRQ9 umgeleitet vom BIOS zu INTOA 72h IRQIO reserviert 73h IRQ11 reserviert 74h IRQ12 diverse Funktionen 75h IRQ13 MATH COPROCESSOR EXCEPTION 286 76h IRQ14 HARD DISK CONTROLLER 286 77h IRQ15 diverse Funktionen 78h DOS Extender diverse Funktionen 79h Diverse Funktionen 7Ah Novell NetWare diverse Funktionen 7Bh 7Fh Diverse Funktionen 80h FOh Reserviert f r IBM Basic diverse Funktionen Fih FFh Reserviert f r User Interrupt PC als MVUS Teil2 15 Prof Komar Systemunterlagen Hardware Programmierung Interrupt Programmierung mit 80x86 Beispiel Timer 0 IRQO System Uhr Tic im PC inkrementiert BCD Z hler Byte bei jedem durch Timer 0 bewirkten Einsprung in die zugeh rige ISR Interruptcontroller ist im PC bereits initialisiert Interruptvektor setzen f r jede aktive Interruptanforderung push es
42. ezeichnung des aktuellen Laufwerks erfragen 1Bh Informationen ber das aktuelle Laufwerk einholen ICh Informationen ber ein beliebiges Laufwerk einholen 1Fh DPB Zeiger fiir das aktuelle Laufwerk ermitteln 32h Zeiger auf DPB fir ein beliebiges Laufwerk ermitteln 36h Verbleibende Plattenkapazitat ermitteln 53h BPB in DPB umsetzen Zugriff auf den PSP 26h Erstelle neuen PSP 50h Aktiven PSP setzen 51h Aktiven PSP ermitteln 55h Neuen PSP erstellen 62h Adresse des PSP ermitteln Zugriff auf DOS Flags 2Eh Setzen des Verify Flags 33h 00h Lesen des Break Flags 33h 0lh Setzen des Break Flags 34h DOS Zeiger auf das INDOS Flag ermitteln 37h 00h Kennzeichen f r Kommandozeilen Schalter ermitteln 37h 0lh Kennzeichen f r Kommandozeilen Schalter setzen 52h Zeiger auf DOS Info Block ermitteln 54h Verify Flag lesen Zugriff auf Datei Informationen 43h 00h Attribut einer Datei ermitteln 43h 01h Attribut einer Datei setzen 57h 00h Datum und Uhrzeit der letzten Modifikation einer Datei ermitteln 57h 01h Datum und Uhrzeit der letzten Modifikation einer Datei setzen Zugriff auf landesspezifische Parameter 38h Landesspezifische Symbole und Formate ermitteln 38h 00h Landesspezifische Symbole und Formate ermitteln 38h 0lh Land setzen Verschiedene Funktionen 30h DOS Versionsnummer ermitteln 4Bh 00h EXEC anderes Programm ausf hren 4Bh 03h EXEC anderes Programm als Overlay laden 4Bh 05h EXEC eigene EXECs anpassen 4Dh Ende Code ermitt
43. freigeben AL 03 h Unterfkt Laden eines Overlays ohne PSP bergabeparameterblock W Segmentadresse Ladeadresse f r Datei W Relozierungsparameter f r Speicherabbild Interrupt 21h Funktion 4Bh 00h DOS EXEC anderes Programm ausf hren Diese Funktion erm glicht es einem Programm ein anderes Programm ausf hren zu lassen um nach dessen Ausf hrung selbst weiter abgearbeitet zu werden Dazu mu der Funktion neben dem Namen des auszuf hrenden Programms auch die Adresse eines Parameterblocks bergeben werden der die f r die Funktion wichtigen Informationen enth lt Eingabe AH 4Bh AL 00h ES BX FAR Zeiger auf den Parameterblock DS DX FAR Zeiger auf den Puffer mit dem Dateinamen des Programms Ausgabe Carry Flag 0 o k Carry Flag 1 Fehler in diesem Fall AX Fehler Code 1 unbekannter Funktionscode 2 Programm nicht gefunden 3 Programm nicht gefunden 4 zu viele Dateien ge ffnet 5 Zugriff verweigert 8 nicht gen gend Speicherbereich 10 falscher Environment Block 11 falsches Format Der Programmname mu als ASCII String vorliegen der durch ein Ende Zeichen ASCII Code 0 abgeschlossen wird Er darf neben einer Ger tebezeichnung eine komplette Pfadbezeichnung und einen Dateinamen aber keine Wildcards enthalten Fehlt die Ger tebezeichnung oder die Pfadbezeichnung wird auf das aktuelle Ger t bzw auf das aktuelle Verzeichnis zugegriffen Es k nnen nur EXE oder COM Programme zur Ausf hrung gebra
44. gment zeigt auf Daten ES ES gt Extrasegment 2 Datensegment SS SS gt Stacksegment zeigt auf Stapelsegment fiir Zwischenspeicherung IP Befehlszeiger IP gt Instruction Pointer zeigt auf die Speicher adresse mit dem n chsten auszuf hrenden Befehl F Prozessorstatusregister F gt Flagregister die einzelnen Flags Bits weisen auf wichtige interne Prozessorzust nde hin Flagregister Statusregister F 15 14 13 12 11 10 9 8 7 6 4 3 2 1 0 0 NT IO PL O D I T S Z 0 A 0 P 1 C Kurzbez Bezeichnung Debug Bez Bedeutung 1 0 C Carry CY NC C zeigt einen bertrag aus der h chstwertigen Stelle an wird ben tigt bei arithmetischen und logischen Operationen P Parity PE PO Im niederwertigen Byte des Ergebnisses ist die Anzahl der auf even odd 1 stehenden Bits gerade even keine Erg nzung nur Anzeige PC als MVUS Teil2 4 Prof Komar Systemunterlagen Hardware Programmierung A Auxiliary AC NA zeigt einen bertrag von Bit 3 nach Bit 4 an Carry ben tigt f r Dezimalkorrektur beim Rechnen mit BCD Zahlen Z Zero ZR NZ zeigt an ob das Ergebnis einer Operation 0 ist S Sign NG PL zeigt das Vorzeichen eines Ergebnisses an h chstwertiges Bit 0 Overflow OV NV berlauf d h Vorzeichenumkehr berschreiten des Zahlenbereiches vorzeichenbehafteter Dualzahlen Steuerflags D Direction DN UP gibt bei Stringoperationen die Indexrichtung inkrementieren oder dekrementieren an I Interrupt Enable EI DI maskierbare externe In
45. halt zum Zeitpunkt des Ladens durch DOS an die vorgegebene Speicherplatzierung angepa t werden m ssen Aufruf TLINK lt name_1 gt lt name_2 gt lt name gt Bibliothek lib erstellt aus den beiden Objectdateien und den ben tigten Modulen der Bibiliothek eine name_1 EXE Datei Zus tzlich zur EXE datei wird auch noch eine MAP Datei mit Kreuzreferenzen erzeugt Soll eine COM Datei erzeugt werden dann kann dies beim Turbo Linker durch die Option t erreicht werden und es mu nicht wie beim MASM nach dem normalen Linken die Umwandlung nach COM durch das Programm EXE2BIN durchgef hrt werden Umwandlung zu einem ladbaren bin rem Programm Aufruf TLINK t lt name gt erzeugt name COM Datei Mit Option v werden s mtliche symbolischen Debugger Informationen bei der Erstelleung von EXE Dateien mitgelinkt nicht f r COM Dateien damit das Programm mit dem Turbo Debugger auf der Quellcode Ebene untersucht werden kann Die so entstandenen EXE oder COM Programme k nnen unter DOS durch Eingabe von name ausgef hrt werden wobei DOS zuerst nach der name COM Datei sucht und dann erst nach der EXE Datei F r ein komfortables Quelltextdebugging mit allen Symbolen im Gegensatz zum DOS DEBUG steht der Turbo Debugger zur Verf gung Aufruf TD lt name gt Mit TLIB lassen sich Bibliotheken aus obj Dateien bilden deren Unterprogramme mit PUBLIC ffentlich gemacht werden m ssen Im aufrufenden Programm m ssen solche externen P
46. he wird dabei innerhalb eines C Programms mit dem Schl sselwort asm kenntlich gemacht Eine Reihe von asm Anweisungen m ssen in geschweifter Klammer stehen asm pop ax pop ds iret Des weiteren ist zu beachten da C zwischen Gro und Kleinschreibung bei Bezeichnern unterscheidet C Symbole k nnen in asm Anweisungen direkt verwendet werden In asm Anweisungen k nnen keine Labels definiert werden und deswegen m ssen Assembler Sprungbefehle zur Kennzeichnung der Sprungziele goto Labels von C verwenden Beispiele myfunc int x int i int x label dE asm mov x 4 asm jmp label Sprung zu label else e en i 7 CPU Register und Assemblerbefehle in Borland C 3 0 Beispiel c Test CPU Register und Assemblerbefehle in C unsigned Pseudovariablen AX AH _AL usw Unterstrich und gro Spezifizierer asm vor Assemblerzeile oder Assemblerblock keine Assembler Kommentare mit sondern C Kommentare mit Beispiel Schleife B Port gt A Port solange PCO High include lt dos h gt f r inp include ports h Portdeklarationen void main void unsigned char steuer 0x8b C Variable mit Anfangswert lokal auf Stack _AL steuer Register lt C Variable asm out SPORT al Assembler Zeile mit C Kommentar while inp CPORT amp 1 keine Assembler Ausdriicke asm Assembler Block in al BPORT Semikolon am Ende out APORT al oder Zeilenende cr
47. ik 320 x 200 Color Grafik 320 x 200 Monochrom Grafik 640 x 200 Mono 2 Farben Monochrom Bildschirmadapter Grafik 640x480 16 farbig 1Seite AH 01h AH 02h Cursor auf Bildschirm positionieren keine Bit AL 7 1 verhindert beim Aufruf das L schen des Video RAMs Darstellungsart Gr e des Bild schirm Cursors festlegen CH 0 bis IFh b4 bO Cursor Anfangszeile CL 0 bis 1F h b4 b0 Cursor Endzeile keine Die Koordinate 0 0 ist in der linken oberen Bildschirmecke DH Zeilen Nr DL Spalten Nr CH 0 bis OFh Cursor Anfangszeile CL 0 bis OFh Cursor Endzeile AH 0 Lichtstift nicht aktiv AH 1 Folgende Positionskoordinaten sind g ltig DH Zeilen Nr DL Spalten Nr CH Grafikzeilen Nr 0 bis 199 BX Grafikspalten Nr 0 bis 319 639 DH Zeilen Nr entsprechend Text oder DL Spalten Nr Grafik Modus BH Bildschirmseite im Grafikmode BH 0 Position des BH Bildschirmseite bei Grafik BH 0 Cursors bestimmen AH 03h AH 04h keine diese Funktion setzt einen Lichtstift voraus der am Bildschirmadapter angeschlossen ist Position eines Licht stiftes Light Pen mit optischen Sensor ermitteln AH 05h AH 06h AH 07h AH 08h AH 09h Ausw hlen einer Bildschirmseite Fenster auf aktueller Seite nach oben rollen Scrolling Up Fenster auf aktueller Seite nach unten rol len Scrolling Down Bestimmen eines Zeichens mit Attribut an der Cursorposition Schreib
48. keine Informationen k nnen beliebige Werte in die FCB Felder im Parameterblock eingetragen werden Das aufgerufene Programm verf gt ber alle Handles die auch dem aufrufenden Programm zur Verf gung stehen Interrupt 21h Funktion 4Bh 03h DOS EXEC anderes Programm als Overlay laden Diese Funktion erm glicht es einem Programm ein anderes Programm als Overlay in den Speicher zu laden jedoch ohne da dieses Programm automatisch ausgef hrt wird d h es wird die Kontrolle an das aufrufende Programm zur ckgegeben Der Parameterblock mu folgendes Format haben Byte 0 1 Segmentadresse an die das Overlay geladen wird die Offsetadresse dazu ist 0 Byte 2 3 Relokationsfaktor Als Relokationsfaktor sollte bei COM Programmen der Wert 0 bei EXE Programmen die Segmentadresse angegeben werden an die das Programm geladen wird Da kein PSP mitgeladen wird beginnt deswegen bei COM Programmen der Code nicht ab Offset Adresse 100h sondern ab Adresse 00h relativ zum Ladesegment Da sich in COM Programmen aber bestimmte Spr nge und Datenzugriffe auf Codebeginn 100h beziehen mu die Startadresse f r den FAR CALL Sprung angepa t werden Ladeadresse Startadresse CSjaae 00 CStaae 10h 100h gleiche physikalische Adresse Um EXE Overlays problemlos ausf hren zu k nnen sollte in den zu ladenden EXE Programmen der erste auszuf hrende Befehl definiert festgelegt werden z B an den Anfang mit Offset 00h oder auch 100h m glich Dann
49. le I Bit 0 IRQ gesperrt outp PICFREI inp PICFREI IRQ7FRE IRQ7T in PIC sperren void interrupt taste void aufgerufen durch PC7 Taste unsigned char zeichen lokale Hilfsvariable zeichen liste it Zeichen laden if zeichen 0 i 0 zeichen liste i AUSGABE 10 AUSGABE 13 AUSGABE zeichen outp PICBEST IRQ7BES und ausgeben Interrupt bestaetigen
50. m PC Betrieb grunds tzlich gegeben Timer Tastatur Disk usw Interrupt Service Routine ISR f r jeden aktiven Interrupt diese ISR mu alle Register unver ndert zur ckliefern falls Unterbrechung dieser ISR m glich sein soll generelle Freigabe des INTR Eingang mit STI Befehl vor Verlassen der ISR den Interrupt mit EOI Befehl best tigen und die ISR mit einem IRET Befehl beenden PC als MVUS Teil2 16 Prof Komar Systemunterlagen Hardware Programmierung void interrupt TIMERO void A Prototyp void main void Hauptfunktion TIMERO PROC void interrupt TIMERO void push ax sti damit unterbrechbar asm mov al CS Zaehler in al APORT A Beispiel fuer inc al inc al Port Ausgabe daa daa beim MVUS 8088 out CS Zaehler al out APORT al mov al 20h out 20h al unspezifischer EOI fuer Master outp 0x20 0x60 spezifischer EOI pop ax iret return from Interrupt TIMERO ENDP Zaehler DB 0 PC als MVUS Teil2 17 Prof Komar Systemunterlagen Hardware Programmierung BIOS Funktionen ber die Interrupts 10h bis 1Ah k nnen die verschiedenen Funktionen erreicht werden die das ROM BIOS zur grundlegenden Kommunikation zwischen einem Programm und der Hardware zur Verf gung stellt Es ist zu beachten da die verschiedenen Funktionen des Interrupts 13h getrennt nach ihrem Einsatz in Bezug auf Disketten und Festplattenlaufwerke in zwei verschiedenen Abschnitten aufgef hrt werden bersicht der BI
51. n umbenennen FCB 21h Wahlfreies Lesen FCB 22h Wahlfreies Schreiben FCB 23h Lese Dateigr e FCB 24h Setze Datensatznummer 27h Wahlfreies Lesen mehrerer Datens tze FCB 28h Wahlfreies Schreiben mehrerer Datens tze FCB 29h Dateinamen in FCB bertragen Dateizugriff Handle 3Ch Datei erstellen oder leeren Handle 3Dh Datei ffnen Handle 3Eh Datei schlie en Handle 3Fh Datei lesen Handle 40h Datei beschreiben Handle 41h Datei l schen Handle 42h Dateizeiger bewegen Handle 45h Handle verdoppeln 46h Handles angleichen 56h Datei umbenennen oder verschieben Handle 5Ah Tempor re Datei erstellen Handle 5Bh Neue Datei erstellen Handle 5Ch 00h Bereich einer Datei gegen Zugriff sch tzen 5Ch 0lh Freigabe eines gesperrten Bereichs in einer Datei 6Ch Erweiterte OPEN Funktion Netzwerk Aufrufe 5Eh 00h Namen des Rechners im Netzwerk ermitteln 5Eh 02h Initialisierungs String f r Netzwerkdrucker festlegen 5Eh 03h Initialisierungs String f r Netzwerkdrucker ermitteln 5Fh 02h Eintrag aus der Netzwerkliste holen 5Fh 03h Eintrag in der Netzwerkliste definieren 5Fh 04h Eintrag aus der Netzwerkliste entfernen Zugriff auf Interrupt Vektoren 25h Setze Interrupt Vektor 35h Inhalt eines Interrupt Vektors auslesen Prof Komar Hardware Programmierung PC als MVUS Teil2 27 Systemunterlagen Zugriff auf Disketten Festplatten 0Dh Reset der Blocktreiber OEh Auswahl des aktuellen Laufwerks 19h Ger teb
52. n diesem String erlaubt 08h Segmentadresse des PSP des Programms bzw Overlays 1 WORD 0Ah Einsprungspunkt in das Programm bzw Overlay 1 PTR 0Eh Programm bzw Overlay Gr e inkl PSP 1 DWORD L nge 12h 18 Byte Tabelle Aufbau der ExecState Struktur PC als MVUS Teil2 35 Prof Komar Systemunterlagen Hardware Programmierung DOS Interrupt Routinen f r Dateien Aufruf int 21h AH 3DH alte Datei ffnen AL 0 nur lesen AX lt handle AL 1 nur schreiben Cy 0 kein Fehler Datei nicht vorhanden AL 2 lesen und schreiben Cy 1 Dateifehler Cy 1 Dateifehler DS DX Stringadresse fiir Pfad AX Fehlernummer nullterminierter String AH 3CH neue Datei ffnen CX Dateiattribut 0 setzen AX lt handle Datei wird immer neu erstellt Cy 0 kein Fehler vorhandene Datei wird geleert DS DX Stringadresse fiir Pfad Cy 1 Dateifehler gt AX AH 3FH ge ffnete Datei BX handle AX Zahl der geles Bytes lesen CX Anzahl zu lesender Bytes Cy 0 kein Fehler DS DX Pufferadresse der Daten Cy 1 Dateifehler gt AX AH 40H ge ffnete Datei BX handle AX Zahl der geschr Bytes schreiben CX Anzahl der Bytes Cy 0 kein Fehler DS DX Pufferadresse der Daten Cy 1 Dateifehler AH 42H ge ffnete Datei BX handle DX AX neue Position positionieren CX DX Anzahl der Positionen ab BOF Beginn AL 0 ab BOF Beginn Cy 0 kein Fehler AL 1 Ist Position Cy 1 Dateifehler AL 2 ab EOF Ende AX Fehlernummer
53. n einen Zeichentreiber senden 44h 04h 1 IOCTL Daten von einem Blocktreiber empfangen 44h 04h 2 DBLSPC Internen Cache schreiben 44h 04h 3 DBLSPC Internen Cache schreiben und invalidieren 44h 05h IOCTL 44h 06h IOCTL 44h 07h IOCTL 44h 08h IOCTL 44h 09h IOCTL 44h 0Ah IOCTL 44h 0Bh IOCTL 44h 0Ch IOCTL 44h 0Dh IOCTL 44h 0Eh IOCTL 44h OFh IOCTL Daten an einen Blocktreiber tibertragen Eingabestatus abfragen Ausgabestatus abfragen Ist das Medium wechselbar Device Remote Test Handle Remote Test Zugriffswiederholung setzen Kommunikation mit einem Zeichentreiber Kommunikation mit einem Blocktreiber Letzte Laufwerksbezeichnung ermitteln N chste Laufwerksbezeichnung definieren PC als MVUS Teil2 26 Systemunterlagen 44h 10h IOCTL Unterst tzung auf Handle Ebene abfragen 44h 11h IOCTL Unterst tzung auf Ger te Ebene abfragen Uhrzeit und Datum 2Ah Datum abfragen 2Bh Datum setzen 2Ch Uhrzeit abfragen 2Dh Uhrzeit setzen Disketten bertragungsbereich 1Ah Setzen der DTA Adresse 2Fh DTA ermitteln Directory durchsuchen 11h Suche ersten Directory Eintrag FCB 12h Suche nachsten Directory Eintrag FCB 4Eh Ersten Directory Eintrag suchen Handle 4Fh N chsten Directory Eintrag suchen Handle Dateizugriff FCB OFh Datei 6ffnen FCB 10h Datei schlieBen FCB 13h Datei en l schen FCB 14h Sequentielles Lesen FCB 15h Sequentielles Schreiben FCB 16h Erstellen oder Leeren einer Datei FCB 17h Datei e
54. p short if not equal ZF 0 Jump short if not greater ZF 1 or SF OF Jump short if not greater or equal SF OF Jump short if not less SF OF Jump short if not less or equal ZF 0 and SF OF Jump short if not overflow OF 0 Jump short if not parity PF 0 Jump short if not sign SF 0 Jump short if not zero ZF 0 Jump short if overflow OF l Jump short if parity PF Jump short if parity even PF Prof Komar Hardware Programmierung PC als MVUS Teil2 12 Prof Komar Systemunterlagen Hardware Programmierung JPO cb Jump short if parity odd PF 0 JS cb Jump short if sign SF 1 JZ cb Jump short if zero ZF l LAHF Load AH flags LDS X1 X2 Load pointer using DS LEA XI X2 Load effectiv adress LES XI X2 Load pointer using ES LODS Load stringbyte LODSW Load stringword LOOP XX Loop DEC CX jump short if CX 0 LOOPE XX Loop Equal DEC CX jump short if CX 0 and equal ZF LOOPNE XX Loop Not Equal DEC CX jump short if CX 0 and not equal LOOPNZ XX Loop Not Zero DEC CX jump short if CX 0 and ZF 0 LOOPZ XX Loop Zero DEC CX jump short if CX 0 and zero ZF l MOV X1 X2 Move MOVSB Move Stringbyte MOVSW Move Stringword MUL Multipy unsigned NEG Negate NOP No Operation NOT NOT Vergleich OR X1 X2 Logical OR OUT XI X2 Output to port POP XI POP Register from stack POPF Pop Flags PUSH X1 PUSH Register to stack PUSHF PUSH Flags RCL xx l Rotate left carry RCR xx Rotate right carry REP prefix
55. rogrammteile mit EXTRN deklariert sein TLIB lt name gt dateil obj datei2 obj listdat Ist bildet mit bildet mit den obj Dateien eine name lib Bibliotheksdatei Beispiel TLIB IOLIB einaus IOLIB TLINK hauptprog IOLIB linkt alle obj Dateien der Bibliothek in denen sich Unterprogramme befinden die im Hauptprogramm mit EXTRN deklariert wurden hinzu PC als MVUS Teil2 7 Prof Komar Systemunterlagen Hardware Programmierung Einf hrung in die Arbeit mit dem Entwicklungssystem MOPSOS funktioniert problemlos nur unter Windows 98 und Windows ME f r EXE Dateien mit Speichermodell SMALL und hinzulinken der Programmbibliothek IOLIB LIB Aufruf D MOPSOS gt MOPSOS lt c gt Funktion mit Taste F1 bis F10 aufrufen oder mit Cursor lt oder gt anfahren und mit lt cr gt ausf hren F2 Datei Arbeitsdatei Name in linker unterer Ecke einstellen bleibt bis Neueinstellung mit F2 erhalten F3 Edit Quelltext editieren f r neue Datei Datei Speichern unter name ASM Kopie mit F2 Datei zur Arbeitsdatei machen F4 ASM Assemblieren bei Fehlermeldung zur ck nach Editor Funktionen k nnen einer Bibliothek i01ib LIB entnommen werden call name x INCLUDE iolib inc baut Deklarationen ein EXTRN name_x NEAR F5 Link Linken bei Fehlermeldung zur ck nach Editor F6 Go Programm EXE starten zur ck nach System mit Makro EXIT oder Befehl int 20h Abbruch bei Warten auf Konsole INT 21h Strg C oder Strg
56. rt Segmente f r DOS 1 Datensegment 1 Codesegment EXE Programm voller Befehlssatz ab 486 Stapel der Gr e 256 Bytes Datensegment Eingabeprompt dl prompt al escape Hier liegen die Testdaten im Datensegment 0 Codesegment Makro Segmentregister anlegen lt Eingabeprompt unktion Konsolausgabe OS unktion warten auf Konsole mit Echo OS AL lt Zeichen von Konsole Endemarke Escape Taste ja fertig nein Leseschleife bis Endemarke Dono Makro zur ck nach DOS END benutzerdefinierten internen Unterprogramme liegen Ende des Quelltextes Unterprogrammbibliotheken IOLIB LIB bzw EINAUS LIB iolib inc und einaus inc enthalten die EXTRN Definitionen Zuordnung mit INCLUDE iolib inc bzw einaus inc Aufruf mit CALL name EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT EXT Ke e SEET E E EE E LE Ze ZZ ZZ E SE E putch NEAR putblank N putprompt getch NE getche NE puts NEA gets NE kbhit N balau haxei halau ausni haxau daxei daxau dedez d32aus zufall wuerfel taste N grafini mausini lclick N D Do Go D D ee es LGS Pl GGG Pip DP ZME D m E A A A a a p cm cr DI EXT AHRAARAHAARAAAAAZAALAAAHRAARAAR Z Fl m mclose N ar N A A A A A Ai PWD Ee bi m
57. rt 13 Odh Statusregister D Byte laut POST 14 Oeh Diagnosestatus 49 31h Extended Memory h herwert 15 Ofh Shutdown Status Byte laut POST 16 10h Typ der Diskettenlaufwerke 50 32h Jahrhundert 17 11h reserviert 51 33h Setup Informationen 18 12h Typ der Festplattenlaufwerke 52 34h reserviert 19 13h reserviert 53 60 35h 3ch Parameter Festplattentyp 49 20 14h Ger tebyte 61 63 3dh 3fh reserviert 21 15h Basisspeicher niederw Byte blicherweise bin rkodierte Dezimalzahlen 1 Byte A Steuerregister B Steuerregister o ove ov ove Les Les Le ne ne Toe ol oe j 0 nicht umstellen Oszillator und Teler Teter f r SQWund period Interrupt d Li on e 0 24 Stunden Betrieb 0 4 0 ein 0001 3 90625ms 256 Hz 0 24 Stunden Betrieb i 0010 7 8125 ms 128 Hz RR Anzeige 0011 122 070us 8 192 kHz 0 BCD Daten eig 0100 244 141us 4 096 kHz d KE Update Status 0101 488281us 2048 kHz 0 SOW ER 0 kein Update 0110 976 5625us 1 024 kHz Re 1 Update l uft 0111 1 953125ms 512Hz 1 Update inte ca 244 us 1000 3 90625ms 256 Hz 1 Alarm interrupt 1001 7 8125ms 128Hz i 1 Periodischer Interrupt 1010 15 625ms 64Hz 0 Update jede Sekunde 1011 31 25 ms 32 Hz 1 Update gesperrt 1100 625ms 16 Hz 1101 125ms 8 Hz 1110 250ms 4 Hz 1111 500ms 2 Hz 716 5 al3 2 ln Statusregister C Interruptanzeige durch Lesen zur ckgesetzt reserviert reserviert reserviert reserviert UF 1 Quelle von IRQ ist Aktu
58. s PIC mu durch die Interruptfunktion erfolgen PC als MVUS Teil2 Systemunterlagen 48 Prof Komar Hardware Programmierung Beispiel f r Interruptfunktionen in C f r MVUS 8088 nicht PC Programmbeispiel IntBeisp c Taste PC7 include lt dos h gt include ports h define SBYTE 0x8b define IRO7 VEK Ox3c define IRQ7FRE 0x7 define IRQ7BES 0x67 es folgt Makro mit Parameter define AUSGABE Makro mit Parameter und Interrupt Funktion gibt Zeichen aus String auf der Konsole aus zeichen zeichen while inp SIOSTA amp 0x20 7 Ay inp outp poke FP OFF FP_ SEG Portdeklarationen A aus B ein C ein Vektor 0x0f 4 gt 0x3c IRO7 0111 1111 Freigabemaske Bestaetigungscode fuer IRQ 7 outp SIODAT zeichen void interrupt taste void Prototyp Interrupt Funktion unsigned char liste 13 ADAM und EVA Stringkonstante global unsigned int i laufender Index global void main void outp SPORT SBYTE PIO Richtung programmieren AUSGABE 10 AUSGABE 13 neue Zeile i 0 Interrupt vorbereiten poke 0x0 IRQ7VEK FP_OFF taste 0x100 Offset von taste eintragen poke 0x0 IRQ7VEK 2 FP_SEG taste Segment eintragen outp PICFREI inp PICFREI amp IRO7FRE Freigabe in PIC enable I Bit 1 IRQ frei while inp CPORT amp 1 Luafkontrolle mit PCO disab
59. se der Maskenpuffer Screen Cursor 0 Software Mauszeiger UND XOR Maske 1 Hardware Mauszeiger Cursor CX DX Start Endzeile Zeiger Cursor Blocks 1 Z hlwert Mickey 0 13 mm Wertebereich 1 32767 Standard horizontal 8 vertikal 16 definiert ein Fenster innerhalb dessen der Mauszeiger gel scht wird f r erneute Darstellung Funktion 01 legt Schwellenwert in Zahlwerte Mickey sec fest ab dem Mauszeiger mit doppelter Geschwindigkeit auf Bildschirm bewegt wird Standardschwellenwert 64 PC als MVUS Teil2 24 Prof Komar Systemunterlagen Hardware Programmierung BIOS Funktionen f r Datum und Uhrzeit im PC DOS Systemuhr und Echtzeituhr RTC Aufruf Funktion Eingabe R ckgabe INT lah Zeitz hler lesen DOS interne Systemuhr AL 24 Stunden Angabe BIOS Zahl der Timer Ticks seit Einschalten des CX Z hlerstand high PCs 0 00 Uhr gez hlt in 40 6fh 40 6ch DX Z hlerstand low 40 70h 1 gt 24 Std Grenze INT lah Zeitz hler setzen DOS interne Systemuhr AH 01 BIOS Setzen der Timer Ticks seit 0 00 Uhr CX Z hler high DX Z hler low INT lah Uhrzeit lesen Echtzeituhr AH 00 BIOS CL Minute BCD CH Stunde BCD DH Sekunde BCD CY 1 gt Fehler INT lah Uhrzeit setzen Echtzeituhr AH 03 AH 00 BIOS CL Minute BCD CH Stunde BCD CY 1 gt Fehler DL 1 Sommerzeit nen DH Sekunde BCD INT lah Datum lesen Echtzeituhr CL Jahr BCD BIOS CH Jahrhundert BCD DL Tag BCD DH
60. segment STARTUP Makro Segmentregister anlegen schlei lea ax text AX lt String Anfangs Adresse call puts Meldung ausgeben call getch AL lt Zeichen lesen ohne Echo cmp al lbh Ende mit Zeichen Esc je mensa ja Ende der Leseschleif cmp al nein untere Grenze jb aus kleiner ausgeben cmp al z obere Grenze ja aus gr sser ausgeben and al 11011111b maskieren klein gt gross aus call putch AL Zeichen ausgeben call putblank Leerzeichen call balaus AL bin r ausgeben call putblank Leerzeichen call halaus AL hexa ausgeben call putblank Leerzeichen xor ah ah AH 0 call daxaus AX dezimal ausgeben jmp schlei und weiter bis Esc mensa lea ax ende AX lt String Anfangs Adresse call puts Text ausgeben EXIT Makro zur ck nach DOS END Ende des Quelltextes Bibliothek einaus LIB iolib LIB Deklarationen in einaus INC Zuordnung der EXTRN Deklarationen im Quellfile INCLUDE einaus INC PC als MVUS Teil2 10 Prof Komar Systemunterlagen Hardware Programmierung Assembler Operatoren werden vom Assembler zur bersetzungszeit ausgewertet und liefern Werte Direktiven Assembleranweisungen erzeugen keinen Code sondern steuern die bersetzung Operator Direktive Vor und Rechenzeichen I _____________ Segmentvorsatz CS DS ES SS mov ax DS 0000 direkt FAR PTR Sprung Aufruf au erhalb des Segments call FAR PTR getch interseg nicht vorbesetz
61. t PC als MVUS Teil2 33 Prof Komar Systemunterlagen Hardware Programmierung DOS Funktion f r Laden und Ausf hren eines Programms EXEC Aufruf INT 21h EXEC Funktion 4Bh INT 21h zum Laden und Starten anderer Programme wird auch von DOS verwendet der Kommandoprozessor COMMAND COM f hrt durch den Benutzer angegebene Programme mit Hilfe der EXEC Funktion aus und stellt das Vater Programm dar Vater Programm ruft Kind Programm mit 4Bh auf und das Kind Programm erbt alle Betriebsmittel des Vater Programms und R ckgabe von Fehlercodes von Kind auf Vater und deren Abfrage mit Funktion 4Dh Da COM und EXE Programme den gesamten RAM Speicher belegen mu vor dem Ausf hren der Kind Programme der restliche Speicher mit Fktn 4Ah freigemacht werden Laden und AH 4Bh CY 0 alles o k Ausf hren eines ES BX gt Zeiger auf bergabeparameterblock CY 1 AX codierte Fehlernr Programms DS DX gt Zeiger auf Dateispezifikation 01 Funktion ung ltig AL 00h Unterfunktion Laden und Ausf hren 02 Datei nicht vorhanden alle Register bis bergabeparameterblock oder Pfad ung ltig auf CS IP werden W Segmentadresse Umgebungstabelle 05 Zugriff verweigert ver ndert DW Zeiger auf Befehlsparameter Zeichenkette 08 Speicher zu klein wird kopiert in neuen PSP ab Offset 80 h OAh Umgebungstabelle zuerst mit 4Ah DW Zeiger auf ersten FCB bei PSP 5Ch ung ltig Arbeitsspeicher DW Zeiger auf zweiten FCB bei PSP 6Ch OBh Format ung ltig teilweise
62. t Aufbau des 2 Statusbytes 40 18 h der erweiterten Tastatur lt Tasten gedr ckt 1 gt CapsLock Alt links Sug inks 40 96 MF2 Tastatur Tastaturstatusbyte Tastatur erstes Num Lock MF2 Code EO Code El ID Abfrage ID Zeichen Modus wenn Tastatur zuletzt zuletzt l uft empfangen ID MF2 gefunden empfangen empfangen 40 97 MF2 Tastatur allgemeiner Tastaturstatus Fehler aktualisiert Fehler Tastatur empfangen stets0 LED ein LED ein LED ein Bit 1 bedeutet da der entsprechende Modus eingeschaltet bzw die entsprechende Taste gedr ckt ist Die Tastatur Statusbyte des BIOS PC als MVUS Teil2 20 Prof Komar Systemunterlagen Hardware Programmierung Wort im Tastaturpuffer Oberes Byte Normale Taste Scan Code ASCII Code Erweiterte Taste Scan Code Null Eingabe ber die Alt Taste Null ASCII Zeichen Umwandlung eines Make Code durch das BIOS Adresse Gr e Inhalt Bedeutung 40 1la Wort Lesezeiger zeigt auf das n chste zu lesende Zeichen im Tastaturpuffer 40 1c Wort Schreibzeiger zeigt auf die n chste freie Schreibstelle im Tastaturpuffer 40 1e 32 Byte Tastaturpuffer 16 Zeichen gro davon aber nur 15 benutzt 40 80 Wort Beginn des alternativen Tastaturpuffers Offset ab Segment 0040 h 40 82 Wort Ende des alternativen Tastaturpuffers Offset ab Segment 0040 h Der vom BIOS verwend
63. te normaler Nestet Modus gt verschachtelte Interrupt Bearbeitung m glich d h ein Interrupt h herer Priorit t kann eine laufende Interruptbearbeitung niedriger Priorit t unterbrechen mit Bit SFNM 0 im ICW4 manueller EOI End of Interrupt Befehl signalisiert der CPU eine beendete Interruptbearbeitung mit Bit AEOI 0 im ICW4 ein unspezifischer EOI Befehl setzt h chst priorisiertes ISR Bit zur ck Schreiben EOI Befehls 20h nach Port 20h A0h durch hierarchische Priorit ten im PC blich ein spezifischer EOI Befehl 6xh setzt das angegebene Bit im ISR zur ck Im Betrieb mu jeder Interrupteingang durch Schreiben eines OCW1 in das Maskenregister Port 21h Alh freigegeben 0 bzw gesperrt 1 werden Am Ende eines Interruptprogramms Interrupt Service Routine ist die Annahme im Best tigungsregister Port 20h A0h durch Schreiben eines OCW2 mit EOI Befehl zu best tigen Adressen und Steuerbytes dieser Betriebsart im PC mit spezifischem EOI Tone 0 qo am om on osm eon oan Jose un Jon Je oma on oan ein oon Jones aen race Lem on oot eon fome ovonsen feo as Je orm on zm an Je Jones feos nae Je mm on son en ocs Jose Jas Je oor on zm sn oon Jones ise oe avo our on con oon ome oios Las Je orre on aon erm orn Jose Der Interruptsteuerbaustein 8259A Master voreingestellt Beispiel Zur cksetzen der ISR Bit nach Bedienung des IRQ13 Coprozessor durch
64. te Variable laufender Adre z hler des Assemblers jmp 10 besser Sprungziel Bezeichner EQU wert vereinbart Bezeichner f r Ausdruck escape EQU 1Bh ORG 100h_ Startadresse COM END startadresse markiert Ende des Quelltextes END ohne Startadresse END anfang mit Startadresse DOSSEG TASM Anordnung der Segmente f r DOS DOSSEG Speicher f r ein Byte 8 Bit maxi DB 55h vorbesetzt DB undefiniert zeig DW maxi Adresse DD Speicher f r ein Doppelwort 32 Bit x DD 100000 ganz DQ Speicher f r ein Vierfachwort 64 Bit y DQ 4711 rell DT Speicher f r ein Zehnerwort 80 Bi z D _1E100 reell CODE EXIT EXIT SEGMENT attribut daten SEGMENT ENDS daten ENDS ENDP putch ENDP ENDM ENDM LOCAL bezechner lokaler Bezeichner in PROC bzw MACRO LOCAL schleife PUBLIC typ liste Bezeichner auch in anderen Moduln verf gbar PUBLIC otto NEAR EXTRN typ liste Bezeichner liegt in anderem Modul EXTRN otto NEAR max NEAR INCLUDE Textdatei in Quelltext einf gen INCLUDE einaus inc PC als MVUS Teil2 11 Systemunterlagen bersicht der 8086 Assemblerbefehle Maschinenbefehle Befehl AAD AAM AAS ADC X1 X2 ADD X1 X2 AND X1 X2 CALL NAER CALL FAR CBW CLC CLD CLI CMC CMP XI X2 CMPS X1 X2 CWD DAA DAS DEC XI DIV XI HLT IDIV XI IMUL X1 IN X1 X2 INC Xl INT 3 INT xx INTO IRET JA cb JAE cb JB cb JBE cb JC cb JCXZ cb JE cb JG cb JGE cb JL cb
65. terrupts werden zugelassen INTR Eingang gesperrt T Trap nach Ausf hrung eines Maschinenbefehls wird ein Interrupt ausgel st um Programme zu testen Einzelschrittmodus ESI EDI EBP ESP CS Ss DS ES FS CT ert Die Register des Pentium II Register ab 80386 PC als MVUS Teil2 5 Systemunterlagen Zusammenfassung der DEBUG Befehle Befehl Semantik Assemble Assembleranweisungen umwandeln Compare Speicherbereiche miteinander vergleichen Dump Speicherinhalt anzeigen Enter Speicherinhalt ndern eingeben Fill Speicherbereich mit Muster f llen Go Pgrammausf hrung mit evtl Breakpoints Hexarithm hexadez Addition und Subtraktion Input Byte von I O Adresse lesen Load Dateien oder abs Diskettensektoren laden Move Speicherbereich bertragen Name Dateien und Parameter definieren Output Byte an I O Adresse senden Proceed Stopp bei n chster Instruktion Quit DEBUG Prog verlassen zur ck zu DOS Register Register abfragen Wert zuweisen Search Suche nach Zeichen Trace Ausf hrung und Protokoll der Register Unassemble Code r ck bersetzen in Assembleranw Write Dateien oder abs Diskettensek schreiben Name in Abh ngigkeit des Zustandes des Flagregisters F Flagname gesetzt gel scht Overflow yes no OV NV Direction decrement increment DN UP Interrupt enable disable EI DI Sign negative positive NG PL Zero yes no ZR NZ Auxiliary carry yes no AC NA Parity yes no
66. w 8 1000 BS CAN 8 H X h x 9 1001 HT EM 9 I Y i y A 1010 LF SUB J Z j Z B 1011 VT ESC K k C 1100 FF FS lt L 1 D 1101 CR GS M m E 1110 SO RS gt N n 2 F 1111 SI US 2 0 o DEL niederwertiges ASCII Code 7 Bit Code nach DIN 66003 Halbbyte Beispiel 6 gt 0011 0110 36h i Ta B C SEE ME i Eo ED li T2leirlolr Erweiterter IBM PC Zeichensatz f r Bildschirmausgabe PC als MVUS Teil2 Systemunterlagen Dezimalt Hex Wert Code 00 00 01 01 02 02 03 03 04 04 05 05 06 06 07 07 08 08 09 09 10 0A 11 0B 12 DC 13 0D 14 0E 15 OF 16 10 17 11 18 12 19 13 20 14 21 15 22 16 23 17 24 18 25 19 26 1A 27 1B 28 1C 29 1D 30 1E 31 IF 32 20 127 TF ASCII Zeichen NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US SP DEL 37 Bedeutung englisch Null Start of Heading Start of Text End of Text End of Transmission Enquiry Acknowledge Bell Backspace Horizontal Tabulation Line Feed Vertical Tabulation Form Feed Carriage Return Shift Out Shift In Data Link Espace Device Control 1 Device Control 2 Device Control 3 Device Control 4 Negative Acknowledge Synchronous Idle End of Transmission Block Cancel End of Medium Substitute Escape File Separator Group Separator Record Separator Unit Separator Space Delete Prof Komar Hardware

Download Pdf Manuals

image

Related Search

Systemunterlagen systemunterlagen pflege

Related Contents

RSI - Richter Chemie  Means and methods for treating headaches  Bedienungsanleitung BESA-11 Batterietester - PDF  Thomson 55UA9806 55" 4K Ultra HD 3D compatibility Smart TV Wi-Fi Black, Silver, White LED TV  Manual  413265* 413265  Bedienungsanleitung - gartenfachmarkt24.de  Article 2  Mellerware 29105 User's Manual    

Copyright © All rights reserved.
Failed to retrieve file