<BøNilzen> Skrevet 7. februar 2004 Del Skrevet 7. februar 2004 Hei. Sitter å leser en tutorial som heter VGA training program. Her skal man bruke assembly. Det første kode eksempelet er: void SetMCGA() { _AX = 0x0013; geninterrupt (0x10); } Prøvde å kalle denne funksjonen, men det gikk ikke. Men må man ikke skrive inn en kommando for å skrive ASM i C++, som f.eks. ASM:{ ASM kode her} Lenke til kommentar
abcd423417984 Skrevet 7. februar 2004 Del Skrevet 7. februar 2004 i vc++ 7 er det __asm{ } Lenke til kommentar
<BøNilzen> Skrevet 7. februar 2004 Forfatter Del Skrevet 7. februar 2004 (endret) Virket ikke helt det heller. Prøvde: void SetMCGA(); void main() { SetMCGA(); } void SetMCGA() { __asm { _AX = 0x0013; geninterrupt (0x10); } } Fikk følgende feilmelding: C:\Programfiler\Microsoft Visual Studio\MyProjects\vga\main.cpp(12) : error C2400: inline assembler syntax error in 'opcode'; found 'bad token' C:\Programfiler\Microsoft Visual Studio\MyProjects\vga\main.cpp(13) : error C2400: inline assembler syntax error in 'opcode'; found '(' Bruker MS visual c++ 6 Endret 7. februar 2004 av <BøNilzen> Lenke til kommentar
TitanKvad Skrevet 8. februar 2004 Del Skrevet 8. februar 2004 (endret) Erm... Det skal vel heller se litt mer ut som dette vel: __asm{ mov ax,0x0013 int 0x10 } i assembler setter man jo ikke registrene med =, men med "mov" opkoden, hvor den flytter andre parameter over i første, og jeg regner med at du med geninterrupt mente å kalle en interrupt 0x10, og da bruker man jo opkoden "int". Håper dette hjelper. Oi! Glemte nesten en siste ting. Om dette støker seg, så har jeg forsøkt meg på dette selv tidligere, og feilet, og ble da forklart av en annen at det var fordi at assemblern jeg brukte ikke assemblet til skikkelige "dos" utførbare filer, og det måtte til for at jeg skulle kunne kalle slike interrupts... Eller det klarer vel gjerne Visual C++. Tenkte uansett jeg kunne nevne det. Endret 8. februar 2004 av djTorden Lenke til kommentar
<BøNilzen> Skrevet 8. februar 2004 Forfatter Del Skrevet 8. februar 2004 Rart at det stod at man skulle gjøre det slik i tutorialen da men... "mov ax" virket fint ihvertfall. Lenke til kommentar
calvinc Skrevet 21. mars 2004 Del Skrevet 21. mars 2004 (endret) Rart at det stod at man skulle gjøre det slik i tutorialen da men..."mov ax" virket fint ihvertfall. Det står i turtorialen fordi den C++ koden er beregnet på blant annet Watcom sine gamle DOS C-compiler (og andre kompilere som støttet det samme) hvor det var støtte for å tilgå blant annet CPU registerene direkte fra C koden. Men dette får du ikke gjort i VC++ 6, der må du bruke assemblerkode slik som visst i postene over. Endret 21. mars 2004 av calvinc Lenke til kommentar
søppel Skrevet 21. mars 2004 Del Skrevet 21. mars 2004 VGA? 320x200 med 256 farger i ModeX? .. hehe .. Finn frem OpenGL-tutorialene i stedet du. Lenke til kommentar
<BøNilzen> Skrevet 21. mars 2004 Forfatter Del Skrevet 21. mars 2004 Som du ser, så er det en stund siden jeg postet dette..ihvertfall noen måneder siden... Jaja, jeg bruker SDL nå. Lenke til kommentar
søppel Skrevet 21. mars 2004 Del Skrevet 21. mars 2004 ..og jeg som trodde folk svarte veldig fort. :] Lenke til kommentar
Gilbert Skrevet 21. mars 2004 Del Skrevet 21. mars 2004 (endret) i assembler setter man jo ikke registrene med =, men med "mov" opkoden, hvor den flytter andre parameter over i første, og jeg regner med at du med geninterrupt mente å kalle en interrupt 0x10, og da bruker man jo opkoden "int". hehe... en liten digresjon; jeg skjønner ikke blablet av hva du skriver, jeg får visst takke meg til php... enda større digresjon: før jeg lærte php, var det helt gresk, nå oppdager jeg plutselig hvor vanskelig det egentlig var, nå som jeg leser om et helt fremmed prog.språk. Endret 21. mars 2004 av fjartan Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå