Assembler / Computer Grundlagen gesucht

Clund

(aka Cpp-Freak)
Hallo,
Ich programmier seit kurzem Assembler (oder versuche es!).
ich will ein kleine System schreiben und bin auf ein Problem gestoßen, bei dem mir niemand (Internet, Bücher, Programmierer) helfen konnte:

1. Wie funktioniert das mit den Interrupts?
Ich weiß, dass es eine Interruptschnittstelle im Prozessor gibt, auf die dieser reagiert.
Was macht jetzt der Computer? (springt er etwa an eine bestimmte Stelle?)

2.Kann mir jeman ein konkretes Beispiel über eine Bildschirmausgabe geben?

Vielen Dank im vorraus
Cpp-Freak
 
1. Wie funktioniert das mit den Interrupts?
Ich weiß, dass es eine Interruptschnittstelle im Prozessor gibt, auf die dieser reagiert.
Was macht jetzt der Computer? (springt er etwa an eine bestimmte Stelle?)
Auf Wikipedia ist eigentlich alles Wissenswerte zu Interrupts schön zusammengefasst.

2.Kann mir jeman ein konkretes Beispiel über eine Bildschirmausgabe geben?
Im Betriebssystem-Tutorial ist beschrieben, wie man eine Textausgabe umsetzt.

Grüße,
Matthias
 
Hallo,
danke für die schnelle Antwort.
das mit den Interrupts verstehe ich trotzdem noch nicht.
schaut denn der Prozessor selbstständig(!) in der Boottabelle nach?

Cpp-Freak
 
Zuletzt bearbeitet:
Hallo,
Kann man Bildschirmausgaben auch ohne Softwareinterrupts ausführen?
Also direkt den Port ansprechen.

Cpp-Frek
 
Sorry für die diesmal späte Antwort, ich hab es wohl einfach übersehen.

das mit den Interrupts verstehe ich trotzdem noch nicht.
schaut denn der Prozessor selbstständig(!) in der Boottabelle nach?
Was meinst du mit der „Boottabelle“? Meinst du vielleicht den Interruptvektor?

Kann man Bildschirmausgaben auch ohne Softwareinterrupts ausführen?
Also direkt den Port ansprechen.
Ja. Im Real Mode kannst du z.B. direkt in das Segment 0xB800 schreiben, auf welches (normalerweise) der Grafikkartenspeicher für den Textmodus gemappt ist.

Grüße,
Matthias
 
Hallo,
danke erstmal für die schnelle Antwort.
Ja. Im Real Mode kannst du z.B. direkt in das Segment 0xB800 schreiben, auf welches (normalerweise) der Grafikkartenspeicher für den Textmodus gemappt ist.

Mit welchem Befehl denn? Etwa mit 'OUT'?

Was meinst du mit der „Boottabelle“? Meinst du vielleicht den Interruptvektor?
Mit Boottabelle meine ich die Funktionen die (wohl schon) vom BIOS definirt wurden.


Cpp-Freak
 
Mit welchem Befehl denn? Etwa mit 'OUT'?
Nein. Mit OUT schreibt man doch in kein Speichersegment. Verwende z.B. STOSB oder MOVB.


Mit Boottabelle meine ich die Funktionen die (wohl schon) vom BIOS definirt wurden.
Die Funktionen des BIOS kann man (im Real Mode) über Software-Interrupts (INT-Instruktion) aufrufen. Der Prozessor schaut bei der Ausführung dieser Instruktion in der Interruptvektortabelle nach, wo im Speicher die Behandlungsroutine für diese Unterbrechung steht und setzt die Ausführung dort fort.

Grüße,
Matthias
 
Hallo,
und wie verwendet man MOVB bzw. STOSB ?:confused:
Tut mir leid das ich das jetzt frage, aber von dem Befehl hab ich noch nicht gehört.:-(

Cpp-Freak
 
Hallo,
und wie verwendet man MOVB bzw. STOSB ?:confused:
Tut mir leid das ich das jetzt frage, aber von dem Befehl hab ich noch nicht gehört.:-(
MOVB ist AT&T-Syntax, in Intel-Syntax ist das einfach nur ein MOV. Den Rest kannst du über :google: rausfinden. Oder du besorgst dir ein gutes Buch zur Assembler-Programmierung. Wie man Werte im Speicher kopiert gehört nun wirklich zu den Grundlagen…

Grüße,
Matthias
 
Hallo,
MOVB ist AT&T-Syntax, in Intel-Syntax ist das einfach nur ein MOV
Ich programmier eigentlich nur Intel.
Aber was hat verschieben von Daten mit Bildschirmausgaben zu tun?
Greift etwa die Graphikkarte auf 0xB800 zu, um die Ausgabe zu machen?

Cpp-Freak
 
Zurück