ERLEDIGT
NEIN
NEIN
ANTWORTEN
15
15
ZUGRIFFE
1057
1057
EMPFEHLEN
-
Hallo!
Ich bin neu hier aber kenn euer Forum schon seit längerem. Über das OS tutorial ich angefangen asm zu lernen. Und morgen kommt warscheinlich auch mein "PC Intern 5.0". Vielleicht kennts ja jemand. Also ich mal ne Frage zu meinem billigOS, Helix! Ich wollte mal über 10h einen pixel malen, also nicht in den grafikspeicher einimpfen-und dann kommt nur dieser Strich da: _ Bitte helft mir ! Ach übrigens: Dies hier ist nur der Kernel! Der Loader geht soweit...
; Kernel ist auf 0800:0000 geladen
ORG 0000h
JMP start
print_string:
lodsb ; lade das Byte auf ds:si in al
or al,al ; teste ob der character 0 ist(Ende)
jz done
mov ah,0eh ; put character
mov bx,0007 ; Attribut
int 0x10 ; rufe BIOS auf
jmp print_string
done:
ret
;==== data section =====================
; message:
msg DB 'Willkommen zu Helix!', 13, 10
;======================================
clear_screen:
MOV AH, 00h
MOV AL, 0Ch
INT 10h
ret
start:
; data segment:
PUSH CS
POP DS
; setzte auf: 640*480*16:
MOV AH, 00h
MOV AL, 0Ch
INT 10h
; clear screen:
CALL clear_screen
;die message
MOV SI, msg
CALL print_string
CALL getkey
MOV AH, 0Ch
MOV DX, 20
MOV CX, 30
MOV AL, 05h
INT 10h
HLT
CALL getkey
Call reboot
getkey:
mov ah, 0 ; Warte auf Tastendruck
int 016h
ret
reboot:
db 0EAh ; Maschinensprache um auf FFFF:0000
;(reboot) zu springen
dw 0000h
dw 0FFFFh
DANKE!Geändert von FishHead (14.11.03 um 15:39 Uhr)
Athlon64 3700+
3GB RAM DDR400
240GB RAID
Nforce3
Radeon9800XT
----------------------
Mein TraumPC
-
mit bildschirmmode 0C wirste da nicht viel glück haben...
setz also erstmal einen entsprechenden mode
mov ax, 13h
int10h
dann gehts auch
-
Ups! Danke
Ich tests gleich mal
Aber heißt das nicht mov AL, 13h?Geändert von FishHead (11.11.03 um 14:22 Uhr)
Athlon64 3700+
3GB RAM DDR400
240GB RAID
Nforce3
Radeon9800XT
----------------------
Mein TraumPC
-
Neee...
Geht leider nicht! Weder mit ax noch al Immer nur dieses blinkende '_' ! Aber: Ich hab jetzt eine andere Möglichkeit gefunden pixel zu malen
Geändert von FishHead (11.11.03 um 16:32 Uhr)
Athlon64 3700+
3GB RAM DDR400
240GB RAID
Nforce3
Radeon9800XT
----------------------
Mein TraumPC
-
also...
1.) mov ax, 13h
ist das gleiche wie
mov ah, 0h
mov al, 13h
2.)
des weiteren ist in der mode table für VGA genau definiert das der mode 640x480x16 als 0x12 also 12hex angesprochen wird...
13h is ähnlich,, das is 320x200x256
0Ch = reserved for internal use of the EGA Bios
die genaue tabelle ist nachzulesen unter http://www.ctyme.com/intr/rb-0069.htm
3.)
Das erste was du machen musst befor du irgend eine codestück aufrufst das graphik zeichnet, musst du den graphikmodus richtig setzen, wie aus 2.) herforgeht ist 0Ch kein allgemein benutzbarer modi, dem zu folge kann dein code nicht funktionieren..
entsprechend empfehl ich dir mal mode 12h oder 13h zu setzen
mov ax, 12h
int 10h
und dann kannst du auch problemlos deine pixel setzen
4.) dein stück code schreibt außerdem versehendlich auf page 07h!
also setz bitt bl = 0
5.) textausgabe im graphimodus kommt immer gut, tu also erstmal die textausgabe raus...
und dann sieht der kernel wohl eher so aus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
org 0000h jmp start clear_screen: mov ax, 12h int 10h ret start: push cs pop ds call clear_screen mov ah, 0Ch mov dx, 20 mov cx, 30 mov al, 05h xor bl, bl int 10h call getkey call reboot getkey: mov ah, 0 int 16h ret reboot: db 0EAh dw 0000h dw 0FFFFh
Geändert von chibisuke (11.11.03 um 16:56 Uhr)
-
Wow, danke! werd ich mal sofort testen!
Athlon64 3700+
3GB RAM DDR400
240GB RAID
Nforce3
Radeon9800XT
----------------------
Mein TraumPC
-
Ich hoffe es funktioniert, hab es selbst nicht ausprobiert, aber bereits auf dem gebiet reichlich erfahrung, als ich nen bootmanager programmiert hab gesammelt von daher...
Denk aber bitte daran, wenn du mit dem code weiter arbeitest das du auf die art und weise nur 1MB arbeitsspeicher ansprechen kannst, willst du mehr musst du dich mit dem protected mode auseinander setzen....und dementsprechend auch mit eigenen graphikangelegenheiten
-
Original geschrieben von FishHead
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
; Kernel ist auf 0800:0000 geladen ORG 0000h JMP start print_string: lodsb ; lade das Byte auf ds:si in al or al,al ; teste ob der character 0 ist(Ende) jz done mov ah,0eh ; put character mov bx,0007 ; Attribut int 0x10 ; rufe BIOS auf jmp print_string done: ret ;==== data section ===================== ; message: msg DB 'Willkommen zu Helix!', 13, 10 ;====================================== clear_screen: MOV AH, 00h MOV AL, 0Ch INT 10h ret start: ; data segment: PUSH CS POP DS ; setzte auf: 640*480*16: MOV AH, 00h MOV AL, 0Ch INT 10h ; clear screen: CALL clear_screen ;die message MOV SI, msg CALL print_string CALL getkey MOV AH, 0Ch MOV DX, 20 MOV CX, 30 MOV AL, 05h INT 10h HLT CALL getkey Call reboot getkey: mov ah, 0 ; Warte auf Tastendruck int 016h ret reboot: db 0EAh ; Maschinensprache um auf FFFF:0000 ;(reboot) zu springen dw 0000h dw 0FFFFh
Ich will echt nicht meckern, aber dieser Code sieht so aus wie jeder andere realmode os loader auch. Und da redet jeder noch, vom selber lernen und selbst programmierten obwoll man wirklick eindeutig sieht dass das verdammt noch mal der identische Code ist wie zig andere auch verwenden und in zahlreichen Tutorials veröffentlicht ist.
Schon mal was vom selbst entwickeln gehört...
Klar, es gibt zahlreiche Beispiele OS's, wenn ich ich nur an www.osdev.org denke, aber wird nicht allein schon aus dieser Tatsache klar, dass die Welt nicht noch ein OS brauch. Sicher du schreibst es zum "lernen" -> bzw. kopierst dir viel zusammen, aber gib es auf. Es werden viele Probleme kommen bei dennen du schnell die Lust verlierst.
- intreruppthandling
- protected mode (oder soll es nur ein kack dos werden?)
- speicher verwaltung
- acpi
- grafik (nen schönes X)
- netzwerk
- und vieles mehr...
Ich will damit nur sagen, gib es auf!
mfg
Christian Ries
-
Ja stimmt schon, ich hab den Loader aus einem anderen OS und den kernel auch hauptsächlich aus anderen Tutorials, und die grafikfunktion aus einem buch. das war auch nur mal so zum experimentieren, wie das denn so funktionert. Schliesslich hab ich ja auch nie gesagt dass ich mit meinem os geld verdienen will, eigentlich mach ich das ja nur zum spaß, bzw um assembler zu lernen! Und noch was: Wenn das sowas schlimmes ist, sich ein tutorial zur Hilfe zu nehmen, wozu sind die denn dann da? Für irgendwelche profis, die schon selber wissen wies geht?
Athlon64 3700+
3GB RAM DDR400
240GB RAID
Nforce3
Radeon9800XT
----------------------
Mein TraumPC
-
Nicht entmutigen lassen, hauptsache es macht Spaß
Mit welchen Tutorials und Tools hast du denn angefangen Assembler und OS-Programmierung zu lernen ? Ist ein Thema das mich auch mal interessieren würde.
-
Aaaaaaalso: Ich benutze NASM und habe ein buch namens:Programmiersprache Asssembler von Reiner Backer. Die Tutorials hab ich mir irgendwo aus ganz vielen seiten und links zusammengeklaut (ich habe mittlerweile ein ganzes archiv aus dokus, pdfs, OS's...), aber schau mal unter objectsos:de:vu! Dort sind tolle Links. Du sagtest 'Tools'- also ich hab nur Rawrite4Windows und BMP2ASM, sonst nichts.
Athlon64 3700+
3GB RAM DDR400
240GB RAID
Nforce3
Radeon9800XT
----------------------
Mein TraumPC
-
Danke, werd mir das mal anschauen.
Mein erster Versuch Assembler zu lernen scheiterte daran das kein Freeware Assembler das erste Beispiel aus meinem Buch akzeptieren wollte
-
Übrigens: An alle die TASM haben wollen und kein geld dafür ausgeben wollen: http://www.triadaos.narod.ru/toolkit.htm! Da hat irgendjemand zu seinem OS Tasm reingestellt! Habs aber noch nicht getestet. @Chibisuke: Du hattest vor dem datencrash geschrieben, dass du ein tutorial über p.mode und noch so ein paar andere sachen schreiben würdest-machst du das jetzt wirklich?
Athlon64 3700+
3GB RAM DDR400
240GB RAID
Nforce3
Radeon9800XT
----------------------
Mein TraumPC
-
jep
hab mal n wenig angefangen was zu machen, ich zeig einfach mal...
im ersten Teil zeige ich wie man mithilfe des protected mode in den Unrealmode schaltet, das ist Vorraussetzung für den nächsten Teil, in dem DMA benutz wird um den Kernel in den Speicher zu laden..
wie die GDT aufgebaut ist und andere Fragen die unbeantwortet blieben, werden im nächsten Teil hoffendlich beantworten..
http://chibisuke.dnsalias.com/pmode1.txt
-
Boaaaa genial! Muss ich sofort testen!
Athlon64 3700+
3GB RAM DDR400
240GB RAID
Nforce3
Radeon9800XT
----------------------
Mein TraumPC
Ähnliche Themen
-
» Open Office [OpenOffice] Grafik nicht darstellbar
Von Marius2706 im Forum Office-AnwendungenAntworten: 0Letzter Beitrag: 02.07.10, 23:26 -
IE7 zeigt Grafik nicht an
Von Melways im Forum PhotoshopAntworten: 12Letzter Beitrag: 29.01.10, 15:28 -
Grafik wird nicht dargestellt [VC++]
Von Trombo79 im Forum .NET Windows FormsAntworten: 5Letzter Beitrag: 23.07.08, 13:29 -
hintergrund grafik erscheint nicht ?
Von Stephan Liebig im Forum CSSAntworten: 3Letzter Beitrag: 30.08.07, 23:04 -
Grafik in php will nicht funktionieren
Von php-beginner im Forum PHPAntworten: 18Letzter Beitrag: 06.10.05, 15:59





Zitieren
Login





