User Tools

Site Tools


start:eti:carte:05accesports

Accès aux ports

L'accès aux ports s'effectue au moyen de deux tableaux (le tableau “Port” pour lire ou écrire un Byte et le tableau PortW pour lire ou écrire un Word) prédéfini dans le langage Pascal. Voici deux exemples:

Valeur := Port[adresse]; { Lit l'état d'un port }
Port[adresse] := Valeur; { Place une valeur sur un port }

Il est également possible d'accéder aux ports via quelques instructions en Assembleur “inline”:

FUNCTION InPortB(LePort:WORD):BYTE;
{ BUT: Lecture de l'état d'un port }
VAR
  Valeur : BYTE;
BEGIN
  ASM
    PUSH DX
    MOV DX, LePort
    IN AL, DX
    MOV Valeur, AL
    POP DX
  END; {ASM}
  InPortB := Valeur;
END; {FUNCTION InPortB}
 
PROCEDURE OutPortB(LePort:WORD; Valeur:BYTE); ASSEMBLER;
{ BUT: Ecriture sur un port }
ASM
  PUSH DX
  MOV DX, LePort
  MOV AL, Valeur
  OUT DX, AL
  POP DX
END; {PROCEDURE OutPortB}

Sous Turbo Pascal et Delphi 1, les tableaux Port et PortW sont utilisables pour l'accès aux ports. Mais par contre, sous Delphi 2, ces tableaux ont été supprimés, tout comme les tableaux Mem et MemW qui permettaient d'accéder directement à une adresse en mémoire.

La raison de ces suppressions est simple: rendre le système (plus) stable en empêchant les accès bas niveau, et en obligeant les programmeurs à utiliser les fonctions protégées de l'API Windows.

Ce qui veut dire que pour utiliser notre carte sous Windows 95 ou Windows NT, il faudrait écrire un driver et utiliser les fonctions de Windows qui permettent d'accéder à un driver. Mais l'écriture d'un driver est un travail qui nécessite de très bonnes connaissances en assembleur, que l'on connaisse parfaitement les mécanismes d'accès bas niveau de Win32, et quelques mois de travail…

On peut détourner cette protection en utilisant les routines en assembleur, mais c'est aux risques et périls du programmeur, car il n'y a plus aucune sécurité (adieu au logo “Designed for Windows 95”).

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
start/eti/carte/05accesports.txt · Last modified: 2016/07/24 01:41 by admin