Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - Keks

Seiten: [1]
1
Lowlevel-Coding / Re: BIOS Data Area auf capslock überprüfen
« am: 30. January 2013, 22:44 »
Ok habs jetzt verstanden :) Danke dir.
2
Lowlevel-Coding / Re: BIOS Data Area auf capslock überprüfen
« am: 30. January 2013, 07:41 »
Auch dir sei herzlich gedankt, MNemo.
Die Speicheradressierung scheint ein ziehmlich komplexes Thema zu sein, auf dem Link kann ich zwar entnehmen wie die sie die Physikalische Adresse aus Segment und Offset zusammensetzt, welche konkreten Register verwendet leider nicht.
Jetzt verstehe ich nur nicht so ganz wieso ich noch das CS mit 0 initialisieren sollte, wird das auch noch mit verwendet bei der Adressberechnung für die Adresse die ich auslesen will?
3
Lowlevel-Coding / Re: BIOS Data Area auf capslock überprüfen
« am: 29. January 2013, 02:50 »
Nochmals tausend dank für deine Antwort  :-D  mir ist eben auch ein Licht aufgegangen. Im Datensegmentregister ist (wie der name es eigentlich schon sagen sollte) die Segmentadresse gespeichert, die benutzt wird um auf Daten zuzugreifen. Kann man das so Sagen?
Ich hab diese eigenartige Methode auch nur benutzt, weil in dem Wikipedia Buch "Assembler Programmierung für x86 Prozessoren" drin steht, dass man die Adressregister nicht direkt verändern kann.
Jedenfalls funktioniert es jetzt und ich bin glücklich und zufrieden^^
4
Lowlevel-Coding / Re: BIOS Data Area auf capslock überprüfen
« am: 28. January 2013, 20:25 »
Problem gelöst :)
Herzlichen dank für deine Hilfe, du hattest recht wegen der Segmentadresse.

Habe den Code geändert in :

[BITS 16]
ORG 0x7C00


MOV AX, 0x00000000
MOV [0x7F00], AX
LDS SI, [0x7F00]


start:
CALL Print
JMP start

Print:

MOV AH, 0x00
INT 0x16

MOV BX, [0x0497]
MOV AL, BL

AND AL, 0x04
SHR AL, 0x02
ADD AL, 0x30

MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x0F

INT 0x10



RET


TIMES 510 - ($ - $$) db 0
dw 0xAA55

Und jetzt erhalte ich immer wenn ich auf das Capslock drücke eine 1.
Ich muss auf jeden fall noch viel lernen. Das mit der Adressierung ist für mich ziehmlich Kompliziert.
Mein Problem war es, dass ich dachte mit dem Befehl " MOV AX, [0x0497] " gebe ich direkt die Physikalische adresse an, dabei ist es nur die Offset Adresse.
5
Lowlevel-Coding / BIOS Data Area auf capslock überprüfen
« am: 28. January 2013, 09:41 »
Servus liebe Leute, ich bin neu hier und bin grade dabei ein bisschen mit eigenen Bootloadern zu experimentieren.

Naja bis jetzt hab einen Bootloader geschrieben mit dem ich über die Bios interrupts in den Grafik Modus wechsel und dann anschließend Pixel für Pixel den Kompletten Bildschirmbereich abfahre und sobald eine seite fertig ist kommt die nächste in einer neuen Farbe.
Gut, das hat alles geklappt nur jetzt wollte ich mal die Bios data area "auslesen" an dem Offset 0x97 dazu hab ich folgenden Quelltext in vielen verschiedenen Varianten ausprobiert:

[BITS 16]


start:
CALL Print
JMP start

Print:

MOV AH, 0x00
INT 0x16

MOV BX, [0x0497]
MOV AL, BH

AND AL, 0x04
SHR AL, 0x03
ADD AL, 0x30

MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x0F

INT 0x10



RET


TIMES 510 - ($ - $$) db 0
dw 0xAA55


Ziel war es nicht zu überprüfen ob das Capslock aktiviert ist oder nicht. Das könnte ich schließlich auch mit einem BIOS interrupt überprüfen. Ich wollte eigenlich nur gucken ob es mir gelingt zugriff auf diese Speicherstelle zu bekommen. Leider blicke ich da nicht richtig durch.
Wäre schön wenn mir jemand erklären könnte was hier schief gelaufen ist.

P.S. : Ein großes Lob an alle die an dieser Seite Mitwirken, hier gibt es echt viele nützliche informationen. Besonders gefällt mir das Magazin.
Ich verwende den NASM und lasse den Bootloader auf einem etwas älteren Laptop laufen.
Danke auch für die Literaturempfehlungen, habe mir jetzt das Buch von Reiner Backer bestellt.
Seiten: [1]

Einloggen