sandor78
07-10-2004, 16:49
Da un po di tempo sto imparando a programmare in C, ed ultimamente mi sono appasionato alla gestione a baso livello del calcolatore.
Però in questa parte sto riscontrando una moltitudine di problemi,
sopratutto se voglio usare l'inline assembly (__asm).
Non so se conoscete il manuale Tricky C, in questo libro ci sono molti esempi in cui si fanno uso di istruzioni in Assembler, o di Interrupt della libreria "dos.h."
Il primo problema che ho avuto,e che nella libleria "dos .h" del visualstudio 6 non sono definite le "union REGS", però tale problema lo superato facilmente ridefinendole all'interno del programma stesso.
Il secondo problema e stato l'uso dell'istruzione assembler "int" realizzata nel seguente modo:
__asm int "n. interrupt"
naturalmente prima ho caricato i vari registri per indicare i dati che servono e il numero della funzione relativa all'interrupt, ad esempio con le seguenti istruzioni:
__asm mov ax,2
__asm mov dl,var
Però il compilatore mi segna sempre errore alla chiamata dell'interrupt fatta nel modo precedente.
Ho provato anche su altri comilatori di realizzare qualcosa di simile ma niente ad esempio il Turbo C 2.01 non mi permette l'uso dell'inline assembly, il Borland mi tira fuori uno strano errore.
Se qualcuno mi può dare un aiuto in qualche maniera lo ringrazio vivamente, anche consigliandomi un compilatore di C adatto..
Però in questa parte sto riscontrando una moltitudine di problemi,
sopratutto se voglio usare l'inline assembly (__asm).
Non so se conoscete il manuale Tricky C, in questo libro ci sono molti esempi in cui si fanno uso di istruzioni in Assembler, o di Interrupt della libreria "dos.h."
Il primo problema che ho avuto,e che nella libleria "dos .h" del visualstudio 6 non sono definite le "union REGS", però tale problema lo superato facilmente ridefinendole all'interno del programma stesso.
Il secondo problema e stato l'uso dell'istruzione assembler "int" realizzata nel seguente modo:
__asm int "n. interrupt"
naturalmente prima ho caricato i vari registri per indicare i dati che servono e il numero della funzione relativa all'interrupt, ad esempio con le seguenti istruzioni:
__asm mov ax,2
__asm mov dl,var
Però il compilatore mi segna sempre errore alla chiamata dell'interrupt fatta nel modo precedente.
Ho provato anche su altri comilatori di realizzare qualcosa di simile ma niente ad esempio il Turbo C 2.01 non mi permette l'uso dell'inline assembly, il Borland mi tira fuori uno strano errore.
Se qualcuno mi può dare un aiuto in qualche maniera lo ringrazio vivamente, anche consigliandomi un compilatore di C adatto..