B
boss3D
Guest
[ASSEMBLER] Interrupt in Interrupt Tabelle einfügen
Hi!
Wir hatten auf der Uni letzte Woche eine Übung zum Thema Betriebssysteme und mir ist der letzte Punkt der Aufgabenstellung für zuhause übergeblieben, weil sich's zeitlich nicht mehr ausging. Das Problem ist nur, ich komme alleine nicht wirklich klar mit der Aufgabe und könnte sehr gut Hilfe gebrauchen.
Bei Aufgabe a ging's drum, ein "Mini-OS" zu schreiben, das per Color Text Mode "Hallo Welt" in weißer Schrift auf blauem Hintergrund ausgibt. --> Habe ich.
Bei Aufgabe b sollte Sektor 2 von der virtuellen Boot-Diskette an sect2dest:0 kopiert werden. --> Habe ich auch.
Bei Aufgabe c sollte "BSY1 via INT 10" mit Hilfe von BIOS Interrupt 10 ausgegeben werden. --> Auch erledigt.
^^ Ich habe dazu übrigens 2 virtuelle OSes im VMWare Player. Eines als "Entwicklungsumgebung" und eines um immer das Ergebnis testen zu können. Muss halt immer in der Entwicklungsumgebung eine virtuelle Boot-Diskette beschreiben und von dieser dann das Test-OS starten.
Bei Aufgabe d soll nun ein Interrupt 0x20 in die Interrupt-Tabelle eingefügt werden. Genaue Angabe siehe Screenshots:
Soll außer der Ausgabe des kleinen Textes noch was passieren? Wie merke ich denn am Ende, ob der Interrupt-Eintrag tatsächlich in der Tabelle gelandet ist und ich nicht einfach nur die gewünschte Ausgabe produziert habe?
Mein erster Ansatz sieht jedenfalls so aus, aber allzuviel Sinn macht der wohl nicht?!
^^ Der schwarze Teil ist aus Aufgabe c übernommen. Den blauen Teil habe ich für Aufgabe d dazugefügt.
Kann mir bei der Aufgabestellung bitte irgendjemand helfen, der sich mit Assembler und Registern auskennt? Ich stehe hier völlig im Dunkeln. Habe bei den Punkten a bis c schon mehr geraten und gegoogelt, als sonst was ...
PS: Habe nie Assembler gelernt, also bitte redet Deutsch mit mir.
Danke für jeden Tipp!
Hi!
Wir hatten auf der Uni letzte Woche eine Übung zum Thema Betriebssysteme und mir ist der letzte Punkt der Aufgabenstellung für zuhause übergeblieben, weil sich's zeitlich nicht mehr ausging. Das Problem ist nur, ich komme alleine nicht wirklich klar mit der Aufgabe und könnte sehr gut Hilfe gebrauchen.
Bei Aufgabe a ging's drum, ein "Mini-OS" zu schreiben, das per Color Text Mode "Hallo Welt" in weißer Schrift auf blauem Hintergrund ausgibt. --> Habe ich.
Bei Aufgabe b sollte Sektor 2 von der virtuellen Boot-Diskette an sect2dest:0 kopiert werden. --> Habe ich auch.
Bei Aufgabe c sollte "BSY1 via INT 10" mit Hilfe von BIOS Interrupt 10 ausgegeben werden. --> Auch erledigt.
^^ Ich habe dazu übrigens 2 virtuelle OSes im VMWare Player. Eines als "Entwicklungsumgebung" und eines um immer das Ergebnis testen zu können. Muss halt immer in der Entwicklungsumgebung eine virtuelle Boot-Diskette beschreiben und von dieser dann das Test-OS starten.
Bei Aufgabe d soll nun ein Interrupt 0x20 in die Interrupt-Tabelle eingefügt werden. Genaue Angabe siehe Screenshots:
Soll außer der Ausgabe des kleinen Textes noch was passieren? Wie merke ich denn am Ende, ob der Interrupt-Eintrag tatsächlich in der Tabelle gelandet ist und ich nicht einfach nur die gewünschte Ausgabe produziert habe?
Mein erster Ansatz sieht jedenfalls so aus, aber allzuviel Sinn macht der wohl nicht?!
Code:
[BITS 16]
start:
mov ax,0xB800
mov es,ax
mov AH, 02h
mov BH,0
int 0x10
mov AH,13h
mov AL,1
mov BH,0
mov BL,0x1F
mov CX,bsy1len
mov ESI, 0x0500
mov ES, ESI
mov BP,bsy1msg
int 0x10
[COLOR=royalblue][B]int 0x20
jmp ISR20h[/B]
endloop:
jmp endloop
bsy1msg db 13,10,"BSY1 via INT 10"
bsy1len equ $ - bsy1msg
[COLOR=royalblue][B]ISR20h:
start:
mov ax,0xB800
mov es,ax
mov byte [es:0x00], 'I'
mov byte [es:0x01], 00011111b
mov byte [es:0x02], 'S'
mov byte [es:0x03], 00011111b
mov byte [es:0x04], 'R'
mov byte [es:0x05], 00011111b
mov byte [es:0x06], 'H'
mov byte [es:0x07], 00011111b
mov byte [es:0x08], '2'
mov byte [es:0x09], 00011111b
mov byte [es:0x0A], '0'
mov byte [es:0x0B], 00011111b
mov byte [es:0x0C], 'h'
mov byte [es:0x0D], 00011111b
jmp endloop[/B]
Kann mir bei der Aufgabestellung bitte irgendjemand helfen, der sich mit Assembler und Registern auskennt? Ich stehe hier völlig im Dunkeln. Habe bei den Punkten a bis c schon mehr geraten und gegoogelt, als sonst was ...
PS: Habe nie Assembler gelernt, also bitte redet Deutsch mit mir.

Danke für jeden Tipp!
Zuletzt bearbeitet:



