Ergebnis 1 bis 3 von 3

Thema: [ASM] Code zum Herrunterfahren

  1. #1

    [ASM] Code zum Herrunterfahren

    Ich brauche Hilfe beim Assembler-Programmieren.

    Und zwar geht es um diesen Code:

    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:

    Code:
    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....

  2. #2
    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?

  3. #3
    Eigentlich nicht... Ich ruf das so auf:

    Code:
    .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
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •