Assembler - Reset des Computers

Jellysheep

Erfahrenes Mitglied
Hi,
ich hab mir ein kleines Betriebssystem geschrieben, mit dem man auf dem Bildschirm malen kann.
Ich möchte jetzt, dass man über eine Taste (diesen Code hab ich schon) den Computer herunterfahren oder neu starten lassen kann.
Mit welchem Befehl(en) funktioniert das?
 
Für die, die sich für den Code interessieren, poste ich ihn hier mal.
Ich hab das Tutorial hier durchgearbeitet (zweiter Teil davon, ganz unten) und dann den Code der Start.asm-Datei geändert. Diese Start.asm und das Makefile make.txt und die Batch-Datei zum Compilen und die Kernel.cpp hab ich in den Anhang gelegt, das fertige Disketten-Image auch.
Ich habe es unter Bochs emuliert, dort klappt es prima.
Mit a (links), d (rechts), w (hoch) und s (nach unten) kann der "Stift" gesteuert werden (er ist leider noch nicht sichtbar) und mit allen anderen Buchstaben kann an dieser Position in verschiedenen Farben gezeichnet werden.
Viel Spaß! ;)

Nochmal zu meiner Frage: Kann man den Computer mit Assembler neustarten lassen?
 

Anhänge

  • Asm_BS.zip
    1,7 KB · Aufrufe: 63
APM_PowerOff:
mov ax,5304h
sub bx,bx
int 15h
mov ax,5302h
sub bx,bx
int 15h
mov ax,5308h
mov bx,1
mov cx,bx
int 15h
mov ax,530Dh
mov bx,1
mov cx,bx
int 15h
mov ax,530Fh
mov bx,1
mov cx,bx
int 15h
mov ax,530Eh
sub bx,bx
mov cx,102h
int 15h
mov ax,5307h
mov bx,1
mov cx,3
int 15h
No_Apm: ;dieser Code wird ausgeführt wenn der Rechner
nop ;kein APM unterstützt und deshalb nicht abschaltet
jmp No_Apm


Hier das ganze Assembliert (Dezimal um sich die X mal 0x__, bzw. 0__H, zu sparen):

DB 184, 004, 083, 041, 219, 205, 021, 184, 002, 083, 041, 219, 205, 021, 184, 008
DB 083, 187, 001, 000, 137, 217, 205, 021, 184, 013, 083, 187, 001, 000, 137, 217
DB 205, 021, 184, 015, 083, 187, 001, 000, 137, 217, 205, 021, 184, 014, 083, 041
DB 219, 185, 002, 001, 205, 021, 184, 007, 083, 187, 001, 000, 185, 003, 000, 205
DB 021, 195

;dieser code stammt von Menuet os......

;Hier sieht man sehr schön dass MegaBytes und Gigaherz Leistungen nicht mehr viel kosten....
;wäre es nicht besser wenn ein einfaches MOV AX,xxxx INT xx reichen würde?wohl nicht bei der ;Schöpfern von ACPI-Funktionen :-(
 
Ich kenne auch ne funktion zum herrunterfahren:


shut_down:
mov ax,5301h
xor bx,bx
int 15h
mov ax,530eh
xor bx,bx
mov cx,0102h
int 15h
mov ax,530fh
mov bx,0001h
mov cx,0001h
int 15h
mov ax,5308h
mov bx,0001h
mov cx,0001h
int 15h
mov ax,5307h
mov bx,0001h
mov cx,0003h
int 15h

diese Funktion funktioniert! Ist in meinem eigenen OS integriert.
 
Toll, dass noch Antworten auf diesen Thread kommen! :)

@SchwarzesTigerle:
Tolle Funktion, wenn der Rechner APM unterstützt. ;)

@BassBox:
Die Funktion ist wirklich klasse!! Sie funktioniert sogar auf meinem alten T2110CS! :D
Die werde ich auf jeden Fall verwenden. :)
 
Zurück