Assembler usw

Danke

Werde etwas herrum experimentieren:)
Falls ich wieder Hilfe brauche melde ich mich wieder hier (das kann nicht lange dauern;) )
 
Hi
Ich habe eine Datei erstellt, mit den inhalt
Code:
       mov ax,0x12
        int 10h				 
	
        xor ecx, ecx	
        xor edx, edx	
        mov al,0x0C16
        int 21h	

        mov edx, 1	
        mov ecx, 6
        mov al, 0x0C14
        int 21h

und das als bin compiliert, das ausgeführt mit FDOS aber es passiert nichts!
Wieso?

FDOS DOWNLOAD bei http://www.visual-opal.de oder http://www.FDOS.tk

kann jemand diesen Code Kommentieren?
Und verbessern falls nötig!
Leider habe ich keine ahnung wie man einen Pixel in modus 12 setzt und die Farbe ändert.

Danke
 
das liegt daran weil es für DOS geschrieben ist... (int 21h)

die alternative für das pixelsetzen hab ich schon gezeigt, ne 3. möglichkeit gibts noch die ich aber hier sicher nicht zeigen werde, weil das mindestens 3 seiten code sind...
 
Hi

Und wo bekommt man diese drei Seiten?
Vielleich ist das dass was ich brauche:) (Drei Seiten:( )
Oder gibt es ein gutes buch darüber?
 
also das ansprechen der graphikplains ist wirklich nichts mehr für leihen... und das is auch nich so einfach das man jetzt sagt so jetzt hab ich 3 seiten assemblercode und jetzt passt das, sondern da musste schon echt ahnung von haben... da musste dann die einzelnen farbbestandteile eineln als bitmasken in den speicher übertragen.. vor allem macht man das auch kaum mehr auf assembler ebene weil der code einfach zu komplex wird..

es gibt viele bücher zum thema graphikprogrammierung, aber in letzter zeit kaum welche die sich mit low-level programmierung beschäftigen...
du kannst aber versuchen ob du irgendwo noch ein etwas älteres buch bekommst zum thema... so in richtung VGA-Graphikprogrammierung unter DOS oder so...

aber ich würd so und so langsam mal abstand von VGA nehmen und mich mit VESA auseinander setzen.... vor allem, weil wenn du VGA kannst kann kommt gleich als nächstes die forderung.. ja jetzt will ich es mal mit 1024x768 und 24bit graphik versuchen... und dann kommste um VESA so und so net mehr rum...

am besten ist es natürlich du suchst dir gleich ne anständige library für solche sachen... http://qlibdos32.sourceforge.net/qlib/about.php gut dir das mal genau an ;-)
 
?

?..habich mich da jetzt irgendwie verlesen..oder hat da jemand grad behauptet, dass fdos für DOS geschrieben is?........gehts noch gut
der int 21 is zwar von miraus auch n' Dos interrupt...aber im kernel von fdos wird der int 21h selbst definiert... => es braucht kein DOS um zu laufen...abgesehen davon... wie siehts mit dem bmp-laden aus ? ;)

zu VESA: ich krieg irgendwie keine VESA-unterstützung hin...und selbst bei fertigen sachen, die eigentlich funzen (MinuetOS) schmierter immer ab, wennich VESA-Unterstützung auswähle..... PC: Athlon XP 1,5 (1,33 GHz), GeForce 3 Ti 500, 256 MB DDR Ram.... woran kanns liegen?...oder is das ein fehler von MinuetOS?

was die höheren sprachen als Assembler angeht, da habich wohl oder übel keine andere wahl als bei Assembler zu bleiben weilich nich programme für dos machen will sondern ein Betriebssystem ... daher bräuchtich für C dann die ganzen files wie "stdio.h" und so .... die ich dann aber angeblich (wie mir gesagt wurde) selbst machen müsste weil die immer von dem entsprechenden betriebssystem abhängig sind ( => keine windows-stdio.h ohne windows und keine linux-stdio.h ohne linux)... also mussich dann ja bei assembler bleiben.. außerdem sind assembler-proggy's ja deutlich kleiner als z.B. C programme
(selbes ergebnis bei c 10 - 20 mal so groß, wie mit assembler)... wo dann das prob entstehen könnte, dasses irgendwann nichmehr auf eine diskette passt.... vor allem mit den ganzen files wie stdio.h .....und dann.... sollich jedesmal ne cd verbrennen?....... oder es am besten gleich auf die festplatte schreiben...gut..wenn jemand dazu ma n' funzendes tutorial schreiben kann ;) ......was aber ja wohl kaum passieren wird......insofern....MUHMUHMUH :(

PS: weiss jemand, wo's ne tabelle von den ASCII-Key's gibt?... und von den sonder-sonder-zeichen wie z.B. die smily's oder sowas, die manchmal entstehen? <= bei assembler logischer weise ;-)
 
Zuletzt bearbeitet:
1.) ich sagte das codestück das ich gepostet hab is für dos, nicht fdos, das haste falsch verstanden

2.) natürlich kannst du höhere sprachen benutzen, und die header dateien sind überalls gleich, aber die lib dateien dazu nicht...

ich hab selbst erfahrung im programmieren von betriebssystemen, schreib nämlich selbst frag an einem, und das is eigedlich fast komplett in C/C++ geschrieben...

natürlich hast du keine libs zur verfügung, aber der witz ist, das du einfach deine funktionen die du brauchst in assembler schreibst und die dan dazu linken kannst.. auf die art und weise kannst du die C sprachkonstrukte benutzen und die funktionalität aber von deinem OS her...

Das die C programme größer sind ist nicht zwangsläufig so... naja fehlt nur um n paar byte..... jedenfalls kommt das bei den meisten OSes daher das da librarys dazu gelinkt werden müssen.. diese haben selbst bereits mehrere KB...

das einzige was du beachten musst ist, wenn du einen kernel schreibst in C.. dann musst dein loader modul für einen gelinkten kernel ausgelegt sein, das heißt du musst dafür sorgen das der linker code das system nicht crasht, weil normalerweise ist ein kernel zu reloziert und nicht gelinkt,...

die ascii tabelle gbts z.B. in der MSDN nachzulesen...

zu beachten ist, das wenn du n PMode OS schreibst du auf keinen fall die VESA bíos funktionen direkt aufrufen darfst, sonst crasht es... da musst du folgendes machen:
zuerst muss die IDT, LDT, und GDT stehen...
dann machst du
ee = 1
dann bist du im v86 mode... nun rufst du den bios interupt dafür auf, und läst dir das VESA PROTECTED MODE INTERFACE geben... und damit arbeitest du, das sind funktionspointer auf das pmode interface des vesa bios,....

beispiel für BMP liefere ich euch sobald ich endlich dazu komme...
 
axo..hmm...na dann... aber wie kriegich dass denn hin, dasss....achne ....ach mist..... ich kack irgendwie grad voll ab :( ...
also wennich das richtig verstanden hab kann man die herder files, wie stdio.h einfach übernehmen... d.h. sozusagen einfach vom Windows klauen und zum eigenen Betriebssystem packen..... und die header dateien graifen dann wiederrum auf library's zu, die dann die eigentliche arbeit verrichten und die ich dann selbst schreiben müsste....richtig?....
(gibtes sowas vielleicht irgendwo schon fertig zum saugen ;) )

..und... was is MSDN ?..... (bzw. wenns MicrosoftDevelopmentblabla is, dann ...wo findet man da auf der page ne ascii-liste?....ich hab keine gefunden..... nur irgendwelche VB-proggy's dazu)

trotzdem ;)
 
ja der ANSII standart schlägt vor das die standart header dateien gleich sein sollen..

eine header datei enthält ja noch keine funktionaltät, sie sagt dem compiler nur das da von außerhalb später noch funktionen dazu kommen, sagt ihm die namen und die möglichen parameter der funktion... außerdem reagiert die dann noch auf verschiedene system meist anders, muss man in dem fall einfach n stück anpassen...

wenn du das hast kommt erst der harte teil... wenn du guckst bei deinem c kompiler dann ist da irgendwo eine libc.lib
das ist die library datei die zu stdio.h stdlib.h conio.h und so weiter gehöhrt... so... diese lib datei ist eine sammlung von funktionen die bereits vorkompiliert sind.. da gibt es dann bei deinem compiler package ein zusatzprogramm dabei, mit dem man solche dateien erzeugen und verändern kann...

nun musst du die funktionen die in den header dateien die du benutzen willst angegeben sind, schreiben, und dann einfach in so eine lib datei zusammenpacken und dann dem compiler sagen das er die benutzen soll anstat der libc.lib

nein die gibts nicht fertig, weil die von system zu system anders sind, ich würd mich aber mal n wenig bei linux umgucken, da liegt der sourcecode von der libc nämlich offen, da kannste dich großteils dann bedienen...


MSDN = Microsoft Development Network
aber wenn ein windows programmierer von der MSDN redet, dann meint er meist die funktionsreferenz davon... entweder zu finden als hilfedatei in VStudio.. oder sonst http://msdn.micosoft.com/
 
Zurück