Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - Tobsn

Seiten: [1]
1
verdammt bin ich blöd, danke
2
ja
hab ich vergessen dazu zu schreiben
3
Hallo!

Ich habe folgendes Problem:
Bei dem Versuch in das RAM an der Stelle 0000:FFFF zu schreiben hängt sich das Programm auf, alle anderen Adressen in diesem Segment funktionieren, woran kann das liegen?

mov    bx,0xFFFF
mov       word     [es:bx],0x0000

danke!
4
Lowlevel-Coding / Jays Bootloader funktioniert dem rechner nicht
« am: 02. September 2004, 16:10 »
HI!

ich hab nachgesehen der int 0x13 verändert das DS nicht.
Beim booten gibt das Phoenix Bios die (Fehler-?)Meldung: "UMB upper limit segment adress:EA9C" aus.
Auf meheren seiten wird der mit: "Obergrenze der freigegebenen Segmente des BIOS im UMB wird angegeben, sie können vom virtuellen Speichermanager abgefragt werden" erklärt. Und ich frage mich jetzt ob der Fehler mit dieser meldung zusammen hängt. Kann es sein, dass der Speicher oberhalb von EA9C vom BIOS reserviert ist?
5
Hallo!

Ich habe Jays Bootloader auf zwei rechnern ausprobiert, auf dem einen wird der kernel ganz normal geladen, auf dem anderen passiert garnichts, der Bootloader aus LowLevel 1 funktioniert auf beiden. Ich hab keine Ahnung woran das liegen kann, weil im prinzip wird bei beiden bootloadern das selbe gemacht nur bei jays mit fat 12 und beim anderen ohne...

ich hoffe ihr könnt mir helfen danke!
6
Lowlevel-Coding / FAT12 Problem
« am: 12. August 2004, 10:42 »
Hallo nochmal!

Ich hab jetztw as ausprobiert: Wenn ich den Bootloader mit rawwrite auf die diskette schreibe, und dann ein image von der diskette lesen steht im OSName feld "Jay-OS" aber wenn ich dann eine Datei auf der diskette speichere und wieder ein image lese, steht ""+{vtklIHC" in dem Feld!
Find ich ziemlich seltsam!
Ich hoffe ihr könnt mir helfen!
Danke!
7
Lowlevel-Coding / FAT12 Problem
« am: 11. August 2004, 22:52 »
Morgen!

Ich hab ein Problem mit der Implämentierung von FAT12 in meinen RM Kernel.
Ich verwende das Tutorial und den Bootloader von TeeJay!
Ich Lade mit:

mov     ax,0x8FE0                      ;segemntadresse
push    ax
mov     ax,0x00                         ;Logische Sektornummer
push    ax
call    _ReadSector
add     sp,0x04

den Bootsector in den Speicher

und mit:

mov     ax,0x8FE0
mov     es,ax
mov     ax,0x8EC0       ; Segmentadresse

mov     si,[RsvdSecCnt]
xor     bx,bx
mov     bl,[es:si]              ; Startsektor

mov     si,[FATSize]
xor     cx,cx
mov     cl,[es:si]    ; Größe der FATabelle

IDMoreSectors:

push    ax
push    bx

call    _ReadSector
add     sp,0x04            ; Alte Paramerter vom Stack löschen
inc     bx              ; Nächster Sektor
add     ax,0x20

loop    IDMoreSectors

die FAT.

_ReadSector ist im Prinzip die gleiche funktion wie im Bootloader von TeeJay

Weil ich wissen wollte ob die Daten stimmen habe ich den Bootsektor ausgelesen, und alle Daten stimmen bis auf den "OSName" eintrag dort erhalte ich statt "JAY-OS" "+{vtklIHC".
Und auch aus den Daten die in der FAT stehen werde ich nicht schlau:

FFF0
00FF
0000
0000
0000
0000
0000
0000
0000
0000
0000
0100
0FFF
0000

was aufgeschlüsselt folgendes ist:

FFF 000 FF0 000 000 000 000 000 000 000 000 000 000 000 000 000 100 0FF F00

Daraus werde ich nicht schlau weil erstens kein FFF vorkommt also kein Dateiende, und zweitens bei einer frisch vormatierten Diskette, die nur eine Datei enthält 0x100 eine eher ungewönliche startsektornummer zu sein scheint.

Ich hoffe ihr werdet schlau daraus!
Danke!
8
Lowlevel-Coding / Stack definieren
« am: 21. July 2004, 15:42 »
die push ich erst nach dem code rauf aber das ding is ja das der pc irgendwo während den 4 zweilen wo ich den neuen stack definiere einfach so rebootet.

[code]mov cx,ss       ; Altes Stacksegment retten
mov bx,sp       ; Alten Stackpointer retten

mov dx,ss       ; altes Stacksegment
call Zahl       ; inhalt von ss ausgeben
mov dx,sp       ; Alter Stackpointer
call Zahl       ; inhalt von sp ausgeben
call getkey     ; Warte auf einen Tastendruck

cli             ; Keine Interrupts!
mov ax, 0x9010  ; Stackadresse
mov ss, ax      ; SS = 9010 (neuer Stack)
mov sp, 0x000F  ; SP = 000F
sti             ; Interrupts zulassen

mov dx,ss       ; Neues Stacksegment
call Zahl       ; inhalt von ss ausgeben
mov dx,sp       ; Neuer Stackpointer
call Zahl       ; inhalt von sp ausgeben
call getkey     ; Warte auf einen Tastendruck

mov ax, 0x0000
push ax     ; x und y auf 0 setzen
push cx
push bx
[\code]

ss und sp wird beim das erste mal angezeigt das zweite mal nicht, weil der pc ja rebootet, wenn die die stackdefinition auskommentiere wirds beide male angezeigt
9
Lowlevel-Coding / Stack definieren
« am: 21. July 2004, 11:41 »
Hallo! ich bins mal wieder!

Ich will einer funktion einen eigenen Stack zuweisen, dafür will ich mit:

[code]mov cx,ss       ; 0x9000
mov bx,sp       ; anfänglich 0x00FF

cli             ; Keine Interrupts!
mov ax, 0x9010  ; Stackadresse
mov ss, ax      ; SS = 9010 (neuer Stack)
mov sp, 0x000F  ; SP = 000F
sti             ; Interrupts zulassen
[\code]

einen neuen Stack definieren, davor speichere ich den alten satckpointer und das alte stacksegment in ax und bx, und push beide dann auf den neunen stack, damit ich sie am ende der funktion wieder runter popen und zum alten stack zurückwechseln kann. Aber wenn ich das Programm laufen lasse rebootet der Pc einfach an dieser stelle. Ich hab schon in Google und im Forum gesucht aber nicht entsprechnendes gefunden, wo liegt der fehler?
danke!
10
Lowlevel-Coding / invalid combination of opcode and operands
« am: 13. July 2004, 13:57 »
Danke!

hat funktioniert!
Ich hab noch eine (eher allgemeine frage) und zwar wenn ich in einem ASM programm eine variable definiere mit db zum beispiel, wo liegt die dann?
in meinem Assembler buch steht "reserviert ein byte an speicherplatz IM PROGRAMM" also is zb der typ variable zur laufzeit nicht veränderbar (wie bei C hald).
Nur was passiert jetzt wenn ich zum beispiel eine rekursive funktion programmiere. Wenn ich in C zum beispiel die Kochsche kurve programmiere verwende ich eine Funktion die sich immer wieder aufruft, berechnungen anstellt überprüft ob noch eine itaration nötig ist und sich dan ggf. nochmal aufruft. Dabei werden die errechneten Werte aber nicht überschrieben, sondern für jeden aufruf wird neuer speicherplatz verwendet. Ich frage mich das ganze weil mir nicht ganz klar ist was ich einem Programm das auf meinem Betriebssystem einmal laufen könnte alles zur verfügung stellen muss, bzw wie das dann seine variablen findet.

Vielleicht hat jemand einen link zu den thema.

ich hoff, das ganze ist nicht zu kunfus und ihr könnt nachvollziehen was ich meine, Danke schon im vorraus!
11
Lowlevel-Coding / invalid combination of opcode and operands
« am: 12. July 2004, 14:27 »
Morgen!

Ich hab gerade erst mit Assamber angefangen und hab schon ein problem:
ich hab mit dem Tutorial aus Lowlevel 1 angefangen, das hat auch funktioniert, ich hab dann einbisschen mit den Bios Funktionen gearbeitet, also int 10h, und 16h, und wollte dann mit dem Videospeicher arbeiten, ich hab im forum, und in der Lowlevel 4 was darüber gefunden aber es funktioniert nicht.

mov 0xb8000, 'P'
mov 0xb8001, 0x07
erzeugt bei mir immer den fehler: invalid combination of opcode and operands

ich hoffe jemand kann mir da helfen!
danke!
Seiten: [1]

Einloggen