I programmi in Assembler non funzionano con XP

Ho sviluppato dei programmi in Assembler per il controllo di dispositivi esterni, come dei relè, mediante impulsi emessi attraverso la porta parallela LPT1. Giravano sotto Windows 3.11 e Windows 95, ma con XP Home non funzionano. In Windows NT,

Ho sviluppato dei programmi in Assembler per il controllo di dispositivi esterni, come dei relè, mediante impulsi emessi attraverso la porta parallela LPT1. Giravano sotto Windows 3.11 e Windows 95, ma con XP Home non funzionano.

In Windows NT, 2000, XP e Vista, ossia nelle versioni di Windows basate sul kernel pre-emptivo e non su uno schema fondato sul DOS, non è più ammesso accedere direttamente all’hardware di Input/Output usando istruzioni tipo in e out.

Per ragioni di sicurezza e di separazione fra applicazioni e hardware, le periferiche si devono raggiungere solo tramite driver. Nemmeno da una finestra Prompt dei comandi è possibile violare questa regola.

Le soluzioni possibili sono le seguenti:

Riscrivere il programma in un linguaggio per Windows (per esempio i linguaggi della famiglia Visual .NET Express Edition, che si possono scaricare gratuitamente dal sito Microsoft), usando le apposite librerie di I/O da essi fornite e non semplici istruzioni assembler in e out. Una libreria freeware di terze parti dedicata a questo problema è la DLL inpout32.dll.

Installare un programma che gira sotto Windows nel rispetto delle regole sull’accesso alle porte di I/O, ma che al tempo stesso simula, ad uso di una applicazione “vecchio stile”, la presenza di porte accessibili nel modo standard. Un programma che dichiara di fornire questa funzionalità è, per esempio, Userport.

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here