Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ASM] Code zum Herrunterfahren



Crash-Override
22.01.2005, 14:31
Ich brauche Hilfe beim Assembler-Programmieren.

Und zwar geht es um diesen Code:



; SYSTEM POWERDOWN
; WARNING - DO NOT RUN UNDER WIN! (IT WORKS!)
; (C) 1999 BY VINNY

MOV AX,0x5300
XOR BX,BX
INT 0x15 ; APM install check
MOV AX,0x5304
XOR BX, BX
INT 0x15 ; disconnect interface
MOV AX,0x5301
XOR BX, BX
INT 0x15 ; connect real-mode interface
MOV AX,0x5307
MOV BX,1
MOV CX,3
INT 0x15 ; powerdown system


Der Code sollte das Herunterfahren des Computers zur folge haben. Wenn ich das ganze schön in meine RM [Real Mode] Shell einbinde (mit NASM compiled und mit RawWrite [beide W32] zusammen mit dem Bootloader auf die Diskette geschrieben) und dann den Für das Ausführen programmierten Befehl ('exit') eingebe. Erhalte ich die Nachricht (die beabsichtigt ist) das der PC nach drücken einer Taste herrunterfährt.) Ich drücke auf die Taste und nix passiert.

Der Code zum Auf die Taste warten heißt:



getkey:
mov ah, 0 ; Funktion 0
int 016h ; Ausführen
ret


Allerdings muss ich sagen das der selbe Warte_auf_dei_Taste Code beim Rebooten sehr gut funktioniert.

Hoffe mal jemand kann mir sagen warums net geht bzw. einen anderen Code verraten....

codec
22.01.2005, 18:22
Ich hab keine Ahnung von Assembler (zumindest nicht viel), aber kanns sein, dass er vielleicht den Input deaktiviert und daher keine Taste mehr annehmen kann?

Crash-Override
22.01.2005, 18:49
Eigentlich nicht... Ich ruf das so auf:



.6:
Print msg_pd
call getkey
;- Der Code zum Runterfahren
jmp .4


Das Getkey wird zuerst ausgeführt...

Das jmp am Ende könnte man sich zwar sparen ist aber nicht wichtig für den Programmfluss da es ja eh nicht mehr zur ausführung kommt.

Falls es sich einer noch mal ansehen möchte:

1. Leere Diskette schnappen und ins Laufwerk einlegen.
2. Das Tool 'RawWrite' oder ähnliches starten (Wer es noch nicht hat: http://uranus.it.swin.edu.au/~jn/linux/rawwrite.htm).
3. Diese Image-Datei herrunterladen: Link (http://rapidshare.de/files-de/414307/222/myOS.img)
4. Unter RawWrite, rechts neben dem Feld 'Image File:' auf den Knopf drücken und die Datei auswählen.
5. Auf 'Write' klicken und die Auftauchende Meldung bestätigen ('Ok')
6. PC Neustarten (Diskette eingelegt und im BIOS Floppy Disk Drive VOR der Festplatte Booten lassen)
ALTERNATIV 7: Will man den PC nicht neustarten kann man es mit dem, meiner Meinung nach schweren, Emulator Bochs versuchen oder die Diskette in einen anderen PC einlegen (ACHTUNG: Wieder BIOS).

Unterstützte Befehle:
Hallo -> Schwachsinn
Info -> Was wohl
Reboot -> Neustart
Exit -> [Solte(!)] Herrunterfahren