Autor Thema: Fehlercodes ausgeben?  (Gelesen 2726 mal)

fr0z3n

  • Beiträge: 15
    • Profil anzeigen
Gespeichert
« am: 12. December 2006, 16:18 »
Hi!
Ich habe versucht mir einen Bootloader zu schreiben, allerdings funktioniert der Zugriff auf die Diskette anscheinend nicht ganz. Jetzt würde ich gerne den Fehlercode, der gespeichert wird auf dem Bildschirm ausgeben lassen. Ich habe auch etwas dazu gefunden, allerdings erhalte ich immer eine Zahl/Buchstabe und ein kryptisches Zeichen danach. Ich weiß allerdings nicht wieso. Ich hoffen ihr könnt mir helfen.
Hier mein Code zur Konvertierung der Zahl:
zahlausgabe:
  mov bx, 10h
  mov cx, 0 ; Ziffernzaehler

zahlausgabe1:
  mov dx, 0 ; loeschen fuer Division
  div bx ; durch Basis teilen
  push dx ; Ziffer auf dem Stack merken
  inc cx ; eine Ziffern mehr
  cmp ax, 0 ; testen, ob letzte Ziffer erreicht ist
  jne zahlausgabe1 ; wenn ungleich

zahlausgabe2:
  pop dx ; Ziffer von Stack holen
  add dl,'0' ; in den ASCII-Bereich der Ziffern transponieren
  cmp dl,'9'
  jbe zahlausgabe3 ; wenn kleiner, gleich
  add dl,'A'-'9'-1 ; Ziffern weiter korrigieren

zahlausgabe3:
  mov [errornum], dl
  mov si, errornum
  call putstr
  loop zahlausgabe2
  ret
Und hier die Ausgabe, die ich aus einem LowLevel Magazin habe:putstr:
  lodsb            ; Byte laden
  or al, al
  jz short putstrd ; 0-Byte? -> Ende!
  mov ah, 0x0E      ; Funktion 0x0E
  int 10h          ; schreiben
  jmp putstr ; naechstes Byte
putstrd:
  ret

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 12. December 2006, 17:17 »
die putsrt funktion ist für die ausgabe von Strings gedacht, du willst damit aber nur einzelen zeichen ausgeben.

du kanst  putstr aber ganz einfach in ein putc umwandeln, indem du die zeile
jmp putstr    ; .....raus nimst
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

fr0z3n

  • Beiträge: 15
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 14. December 2006, 15:39 »
Ah ok danke. Jetzt funktionierts.

 

Einloggen