Newsgroup: it.comp.lang.c
Titolo: problem with asm

Ciao a tutti, scrivo perchč  ho un problema coi compilatori mingw/cygwin e
DevC++.
Lavorando con il tool IDE Dev C++, ho provato a sviluppare alcune funzioni
grafiche, ma ho trovato un sacco di problemi, non ho mai avuto problemi con
altri compilatori.
Ho provato a scrivere le mie funzioni in assembler, ma non lo so perchč il
sistema va in crash, quando le mando in esecuzione.
La funzione č molto semplice, chiama l'interruzione 10h della Bios.
Quello che devo fare in pratica č:
   AX=13h
   INT 10h
Con l'assembly di Intel io posso scrivere:
  mov ax,013h
  int 10h
Con l'assembler usato da DevC++/Mingw/CygWin ho provato:
void vga( )
{
  __asm__("
     movb $0x00,%ah /n
     movb $0x13,&al /n
     int $0x10 /n
    ");
}
Il sistema compila, ma il programma manda in un crash irreversibile Windows
95 ( Ho Win 95 Installato ).
Allora ho provato questo:
void vga( )
{
  asm (".byte 184,19,0,205,16");
}
Il sistema compila, ma va in un crash reversibile ma comunque va in crash.
Ho studiato un po' il problema e ho scoperto che č possibile risolverlo con
una sintassi C con la libreria "dmpi.h"
void vga()
{
   __dpmi_regs rg;
 
rg.x.ax
 = 0x13;
   __dpmi_int(0x10, &rg);
}
void txt()
{
   __dpmi_regs rg;
 
rg.x.ax
 = 0x03;
   __dpmi_int(0x10, &rg);
}
Ho cercato la libreria nelle directori di sistema, ma non l'ho trovata!
La mia domanda č, come posso realizzare con i compilatori usati da DevC++
cioč Mingw/Cygwin l'operazioni "AX=13h" e "Int 10h"?
Dove posso trovare la libreria dmpi.h?
E' possibile realizzare le stesse cose con librerie di sistema?
Grazie se qualcuno mi puo' indirizzare su questi problemi.
Hello all, i write because i ' ve some problems with mingw/cygwin and DevC++
compilers.
I operate with IDE tool called Dev C++, i 'm tring to do some graphic
function, but i encountered a lot of problems, i never had with others
compiler.
I ' tryed to write my function in assembler, but i don't know why, the
system go in crash, when i run it.
The function is very simple, it call BIOS interrupt 10h
what i must do is that:
   AX=13h
   INT 10h
With Intel Assembly i can do it with:
  mov ax,013h
  int 10h
With Assembley used by DevC++/Mingw/CygWin i tried that:
void vga( )
{
  __asm__("
     movb $0x00,%ah /n
     movb $0x13,&al /n
     int $0x10 /n
    ");
}
The system compile, but program go in irreversible crash on Windows 95 ( I
have Win 95 installed ).
So i tried also:
void vga( )
{
  asm (".byte 184,19,0,205,16");
}
The system compile, but program go in a reversible crash, but however is
crash.
I studyed a lot the problem and i discovered who could be possible resolve
this my problem with a complete C sintax with the library "dmpi.h".
void vga()
{
   __dpmi_regs rg;
 
rg.x.ax
 = 0x13;
   __dpmi_int(0x10, &rg);
}
void txt()
{
   __dpmi_regs rg;
 
rg.x.ax
 = 0x03;
   __dpmi_int(0x10, &rg);
}
I searched for this lib into system libraries directory but i didn't found
it!
So my question is, how can i realize with DevC++/Mingw/Cygwin compiler
operation  AX=13h and Int 10h?
Where can i found dmpi.h library?
Is it possible to do the same things with system libraries?
Thanks if anyone can tell me about this problems.
--
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                           Giovanni Ceglia
                WebMaster & WebDesigner
 
http://www.xungame.com/
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

I wanna do a correction, someone could think i ' m tring to calla a bios
function under WIN, but it is not so exactly.
I wanna call a bios function under DOS 32 bit into Protected Mode.
It is possible?


95 ( Ho Win 95 Installato ).
......
ecco la risposta al tuo problema!
usi compilatori che generano eseguibili per windows...
non puoi in nessunissimo modo usre gli interrupt del bios sotto
windows, cambia compilatore al +
magari usa il borland turbo c++ x dos, il djgpp, ma non pretendere
di usare interrupt con windows!
cod

cod
Ma che dici ?
Gli interrupt del BIOS sono usabili sotto windows !
Del resto parecchi programmi DOS li usano e funzionano benone sotto
windows ?!?
Semmai il problema riguarda il djpghh.. (cristo, ma non potevano
chiamarlo Ugo!).
ciao, acc.   
a...@libero.it

chiamarlo Ugo!).
ne sei convinto?
basta che dai un'occhiata all'IDT per vedere quanti di questi
interrupt sono disponibili in programmi win32 nativi, in quanto
se passiamo al modo virtuale 86 ovvio che sono disponibili,
altrimenti come funziona?
cod

altrimenti come funziona?
Non avevo pensato al fatto che l'amico utilizzasse gli Int BIOS da prg
windows, anche perche' la cosa mi sembra priva di senso...
ciao, acc.   
a...@libero.it