Assembler usw

linien-test

also was das beispiel mit den linien angeht... da habich n' prob..
also die com datei ...und auf meinem eigentlichen rechner auch die bin datei, dich ich compiled hab..aber wennich genau die selbe bin datei mit meinem testrechner ausführen will (der eine VGA-Karte hat..und bei dem ansonsten auch alles andere funktioniert), dann kommt einfach nur ein schwarzer bildschirm und nix weiter passiert :( :( :( :sad: :sad: :sad:
 
schlecht... aber ich wüsste nicht das das irgendwas falsch is... hab den code direct aus ner C lib raus gerissen, und das hatt bisher immer funktioniert

komisch... naja es gibt aber 3 möglichkeiten die graphikkarte anzusprechen.. nur die andere is n wenig komplexer... mal sehen vieleicht schreib ich bei gelegenheit die assembler funktonen dazu... die 3. is dann über bios...
 
naja..egal....hauptsache is erstma der code zum anzeigen einer bmp-file ;) ..
......das wär echt schonma ne riiiieeessen hilfe ;)
 
sorry hab echt nich die zeit gefunden das in assembler zu realisieren...

aber in C würde es so aussehen:

char image[2048];
char* graphicMemory = (char*) 0x000A0000;
imagestart = &image[sizeof(BITMAPHEADER)]
FILE* datei = fopen("datei.bmp", "r");
fread(datei, image, 2048);
memcpy(image, graphicMemory, ((BITMAPHEADER*)image)->size);

assembler code dazu liefere ich sobald ich dazu komm nach, versprochen...
 
Hi Leute

Mit den Beispiel das zwei linien erstellt habe ich probleme
kann jemand diesen code so umschreiben das der zweite
Punkt eine andere Farbe hat (es soll so laufen das man
kein Windows brauch, sondern das Bios ansteuert)

Code:
	mov ax,0x0012		;12h = 640x480 16
	int 10h			
        mov bx,0xA000  
        mov es,bx          	 
	
	
	mov ecx,0x00		
        mov al,16
	mov byte [es:ecx],al  		

	mov ecx,0x00		
	mov al,1
	mov byte [es:ecx+646],al  
	mov ecx,eax

Danke
 
betriebssystem

also allen, die irgendetwas direkt mit dem bios machen wollen (also ohne Windows) ...z.B. ein eigenes Betriebssystem erstellen den kannich solange es NICHTS GRAFISCHES werden soll nur FDOS emfehlen.. einfach unter google suchen! FDOS is ein betriebssystem, das auf eine diskette passt und einiges kann ... dazu is der Source frei verfügbar und es is alles bis in detail erklärt (so, wie ich das sehe zumindest deutlich genug ;)). Es werden fast nur Bios-interrupts benutzt und es is eigentlich leicht zu verstehen. (Nachteile: wie schon angesprochen eben nicht grafisch und es kann nur dateien lesen..schreiben wird nicht unterstützt..aber das dürfte ja eigentlich leicht umzuändern sein)

....ma hoffen, das der assemblercode zum bilder ausgeben bald fertig wird ;)...... wie gesagt schon ma im voraus ;-) ;-) ;-)

PS: kennt wer nen funktionierenden guten freeware disassembler?
 
Zuletzt bearbeitet:
Hi coolyo

Ich habe FDOS schon oft erwähnt, und ich wollte dich aufmerksam machen
das es bald eine GUI für FDOS geben wird ;)

Aber kann jemand mein Beispiel oben so um ändern das der zweite Punkt
eine andere Farbe hat? (Es wäre noch besser wenn
alles noch Kommentiert wird)

Danke
 
Hi Leute

Hab wieder ein paar Fragen, kann jemand dieses Beispiel so um ändern, dass der zweite Punkt eine andere Farbe hat!
Es ist sehr wichtig!:(

Code:
	mov ax,0x0012		;12h = 640x480 16
	int 10h			
        mov bx,0xA000  
        mov es,bx          	 
	
	
	mov ecx,0x00		
        mov al,16
	mov byte [es:ecx],al  		

	mov ecx,0x00		
	mov al,1
	mov byte [es:ecx+646],al  
	mov ecx,eax

Und ist es mit tricks möglich mehr Farben als 16 unter den Modus 12 zu bekommen.
Ich habe irgend wo gelesen das man in den modus 13 mit Tricks mehr als 256 Farben bekommen kann

Und eigentlich muss es dieses doch auch für den Modus 12 geben, oder?
 
also... 1.) Disassembler kann ich ndisasmw empfehlen.. das is der disassembler der mit NASM ausgeliefert wird...

2.)
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

die einfache variante davon, erwarte aber nicht das du damit hohe frameraten erreichst, da der aufruf von der bios funktion etwa 20 - 30x so lang dauert wie die entsprechenden graphikfunktionen direkt selbst gecodet....

nein du kannst im mode 12 16 farben darstellen und nicht mehr. Na gut ok es gibt eine möglichkeit, aber das erfordert sehr exaktes timing von seite deines graphiktreibers, gute kentnisse der IO maps, und was vor allem wichtig ist, extrem gute kentnisse was das beschreiben der graphik plains betrifft... denn wenn du das machen willst musst du jeden pixel in dem dem moment auf den bildschirm schreiben wo der monitor ihn auch liest, bzw. nur wenige taktzyklen vorher.. das das eigendlich nahezu unmöglich ist muss ich ja wohl kaum erwähnen, schon von daher das die graphikkarte ständig busmaster sein muss... das heißt sowas wie sound, netzwerk, oder auch nur drucker kann nicht gleichzeitig mit graphikzugriff erfolgen...
Ich werde daher diese art des zugriffes auf keinen fall hier erläutern, da es sich hier bestimt um 20 seiten code handelt...

Dateien lesen und schreiben kannst du mir den entweder mit den bios funktionen von int 21h unter dos.. oder ansonsten musst du dir die fat header mit int 13h von der disk hohlen, die parsen und dann mit int 13h die daten lesen, oder selbst direkt über die IO register im DMA modus die daten in den speicher lesen...

und beispiel für graphik.. sobal ich dazu komm liefer ich es euch nach, wird aber vermutlich erst am WE sein, da ich da zuerst noch ettliche bios interupts nachschalgen muss....
 
Zuletzt bearbeitet:
Zurück