Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Работа с портами микропроцессора

Delphi , ОС и Железо , Процессор

Работа с портами микропроцессора

Автор: Pavlo Zolotarenki

Отряд милиции особого назначения разогнал толпу бунтующих программистов.... до 1ГГц.

Модуль для работы с портами микропроцессора с сохранением синтаксиса.
Работает под Win9x.
НЕ работает под WinNT.


//Copyright(c) 1998 Zolotarenko P.V pvz@mail.univ.kiev.ua

unit Ports;
interface
type

  TPort = class
  private
    procedure Set_(index_: word; value: byte); register;
    function Get_(index_: word): byte; register;
  public
    property Element[index_: word]: byte read Get_ write Set_; default;
  end;

  TPortW = class
  private
    procedure Set_(index_: word; value: Word); register;
    function Get_(index_: word): word; register;
  public
    property Element[index_: word]: word read Get_ write Set_; default;
  end;

var
  Port: TPort;

  PortW: TportW;

implementation

procedure TPort.Set_(index_: word; value: byte);
begin

  asm
mov dx,index_
mov al,value
out dx,al
  end;
end;

function TPort.Get_(index_: word): byte;
begin

  asm
mov dx,index_
in al,dx
mov @Result,al
  end;
end;

procedure TPortW.Set_(index_: word; value: word);
begin

  asm
mov dx,index_
mov ax,value
out dx,ax
  end;
end;

function TPortW.Get_(index_: word): word;
begin

  asm
mov dx,index_
in ax,dx
mov @Result,ax
  end;
end;

initialization

  Port := TPort.Create;
  PortW := TPortW.Create;

finalization

  Port.free;
  PortW.free;
end.

Программный код на языке Pascal для работы с портами микропроцессора, специально разработанный для работы под Windows 9x и несовместимый с Windows NT. Код предоставляет классы TPort и TPortW для чтения и записи в конкретные порты, используя ассемблерный язык x86.

Разбор кода:

Декларация модуля Модуль называется Ports, и он декларирует два класса: TPort и TPortW.

Декларация класса Каждый класс имеет приватную секцию с процедурами Set_ и Get_, которые используются для установки и получения значений из конкретных портов. Публичная секция определяет свойство Element, которое позволяет доступ к портам с помощью индекса.

Главное отличие между TPort и TPortW заключается в том, что TPortW использует 16-разрядные слова (слов) для операций с портами, а TPort использует 8-разрядные байты.

Имплементация В секции реализации каждый класс имеет свои процедуры и функции:

  • Set_: устанавливает значение в конкретный порт с помощью ассемблерного языка x86.
  • Get_: читает значение из конкретного порта с помощью ассемблерного языка x86.
  • Ключевое слово asm используется для вставки кода на ассемблерном языке x86 в код Pascal.

Инициализация и финализация В секции инициализации создается экземпляр классов TPort и TPortW. В секции финализации эти экземпляры освобождаются, чтобы освободить любые системные ресурсы, которые они могут использовать.

Замечания

  • Код использует ключевое слово register для указания, что certain переменные должны храниться в регистрах CPU для улучшения производительности.
  • Ключевое слово default используется для указания значения по умолчанию для свойства Element.
  • Код не обрабатывает ошибки или исключения, поэтому при работе с этим кодом необходимо использовать механизмы обработки ошибок.

Альтернативное решение Если вам нужно работать с портами под Windows NT и поздние версии, я рекомендую использовать более современный подход:

  1. Использовать API Windows (например, CreateFile, ReadFile, WriteFile) для взаимодействия с устройствами.
  2. Использовать библиотеку или фреймворк, который предоставляет более высокоуровневые абстракции для работы с портами, например, компонент TParallelPort в Delphi.

Обратите внимание, что это код является quite old и может не быть совместимым с современными операционными системами или компиляторами.

В статье описывается модуль для работы с портами микропроцессора на языке Pascal, позволяющий изменять и считывать значения портов с сохранением синтаксиса и работающего под Win9x, но не под WinNT.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Процессор ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 02:21:56/0.0051429271697998/1