Ein paar Beispielprogramme in x86 Assembler für DOS - Teil 3: System-Informationen anzeigen

  • Teil 3 - System-Informationen anzeigen (Informationen aus dem BIOS und aus dem PSP, Dezimalzahlen in Assembler anzeigen)


    Das Programm nutzt BIOS Interrupts und eine Zahl aus dem Programm-Segment Präfix (PSP).

    Außerdem werden 16-Bit Werte mit Hilfe einer Unterprozedur als dezimale Werte angezeigt.


    War etwas tricky, erstmal auf das PSP auslesen zu kommen, um das noch frei von DOS nutzbare RAM auch anzeigen zu können, da gab es leider nicht all zu viele Infos seitens Google.

    Die Zahl stimmt aber mit dem Wert, den MEM.EXE ausspuckt, überein ;)

    Man könnte hier noch viel mehr anzeigen, aber es soll ja eigentlich nur eine Demo sein.


    P.S.: Wegen DOSBOX habe ich einen Check für den Diskettenzugriff/Diskettencontroller mit eingebaut. Denn DOSBOX zeigt an, es gäbe ein Floppy-Laufwerk. Das ist natürlich falsch. Aber das liegt auch am INT 11h, den das BIOS für die Equipment-Auswertung bereitstellt. Es ist schlicht da im Ergebnis des INT 11h nicht vorgesehen, dass es kein Diskettenlaufwerk gibt.


    Wie immer sowohl die fertige, ausführbare .COM - Datei und die Quelldatei als ZIP.

    Was das nächste Mal kommt, bin ich noch am Überlegen, für Vorschläge bin ich offen (es darf nur nicht zu kompliziert für eine Demo sein).

  • Vergessen, ins ZIP eine kleine Batch-Datei für's Assemblieren hinzuzufügen, ist aber wie bei den Vorgängern:


    masm sysinfo;

    link sysinfo;

    exe2bin sysinfo sysinfo.com

    del sysinfo.exe

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Hi Peter,


    hättest du eine Idee, wie ich Informationen zur Grafikkarte abrufen könnte.


    Ich muss eine Reihe von Grafikkarten testen und möchte rausfinden, welche Grafikkarte es ist mit wieviel Speicher. Aktuell nutze ich dazu Dr. Hardware.

    Das Programm analysiert beim Start allerdings alles, so dass es immer unangenehm lange dauert bis ich die Informationen nach einem Kartenwechsel erhalte.


    Ich dachte an so ein kleines Tool wie oben, direkt in autoexec.bat aufgerufen, das mir die Information auf der CLI ausgibt.


    Vllt hast du einen Anhaltspunkt wie ich starten könnte und mir so die initiale Suche ersparst.



    Danke!

    Tue nichts was ein Computer besser kann als du :coffeepc:

  • Unter DOS müsstest Du zuerst in einem (kleinen) Programm schauen, ob das Grafikkartenbios bei C0000h und/oder höher in 4000h Schritten liegt.

    Wenn Du da keine gültige ROM Signatur findest, kann es nur eine Karte ohne BIOS sein (also Hercules oder CGA, wobei es da angeblich auch Karten mit BIOS gibt). Ansonsten wenn Du eine gültige ROM Signatur im Bereich unter dem Rechner-BIOS (also unter E0000h oder bei XT Rechnern unter F0000h) gefunden hast, musst Du nach einer Zeichenkette des Herstellers suchen.

    Bei modernen Karten mit PCI Slot gibt es spezielle Funktionen um das Abrufen zu können. Gibt auch Programme, die alle PCI Karten bspw. auflisten, die im Rechner stecken -> http://www.cs.cmu.edu/~ralf/pub-files/rbpci119.zip

    Bei neueren Rechnern steckt meist die PCI-BIOS Extension 2.0 (und höher) drin.

    Da kannst Du auch per Interrupt 1Ah mit AH=B1h und den Unterfunktionen zum Suchen und Lesen der PCI Konfiguration arbeiten.

    Jede PCI Karte hat Ihre eigene "ID"... dazu gibt's im Internet auch Listen.

    Bei Rechnern mit AGP Slots, Microchannel (dazu gibt's BIOS Erweiterungen in den PS/2 Geräten) oder EISA (da gibt's auch BIOS Extensions) kenne ich mich nicht so gut aus.

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Für CGA und Hercules ist der Bildschirmspeicher bei B800 bzw B000 IIRC. Da könntest auch einfach was reinschreiben und schauen was passiert. Oder über Int10 ein Zeichen schreiben und im Speicher nachschauen.

    Das Genie beherrscht das Chaos