Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как узнать адрес LPT-порта

Delphi , Файловая система , Порты

Как узнать адрес LPT-порта

Эта функция работает в Win95 и Win98.


function GetPortAddress(PortNo: integer): word; assembler; stdcall;
asm
  push es
  push ebx
  mov ebx, PortNo
  shl ebx,1
  mov ax,40h // Dos segment adress
  mov es,ax
  mov ax,ES:[ebx+6] // get port adress in 16Bit way :)
  pop ebx
  pop es
end;

Перевод текста на русский язык:

Код старой школы сборки! Чтобы использовать эту функцию, вам нужно знать, что LPT (Line Printer Terminal) - это порты для подключения принтеров к компьютерам, и как они адресуются.

В старые дни, до популярности принтеров USB, параллельные принтеры соединялись с компьютерами через порт LPT. Каждый порт LPT имел уникальный адрес, который использовался операционной системой для общения с принтером.

Функция GetPortAddress, которую вы предоставили, написана на языке ассемблера и принимает целочисленное параметр PortNo, представляющее номер порта LPT (0-3).

Вот что код делает:

  1. Он кладет значения регистров es и ebx на стек, сохраняя их оригинальные значения.
  2. Он загружает значение PortNo в регистр ebx.
  3. Он сдвигает значение в ebx влево на 1 бит (shl ebx, 1). Это делается для расчета смещения внутри сегмента.
  4. Он устанавливает адрес сегмента в 40h, который является адресом сегмента DOS для операций ввода-вывода.
  5. Он загружает содержимое памяти по адресу ES:[ebx+6] в регистр ax. Это где хранится адрес порта в формате 16 бит.
  6. Наконец, он кладет значения обратно с помощью стека, чтобы восстановить оригинальные значения es и ebx.

Функция возвращает адрес порта LPT в виде 16-разрядного значения (слов) в регистре ax.

Чтобы использовать эту функцию, вы бы вызвали ее с номером порта LPT (0-3) следующим образом:

var
  PortAddress: word;
begin
  PortAddress := GetPortAddress(1); // Получить адрес LPT1
end.

Обратите внимание, что это код работает только на Windows 95 и 98, как вы упомянули. На современных операционных системах, таких как Windows XP, Vista или позднее, вы бы не использовали порты LPT, а вместо этого использовали принтеры USB или сетевые принтеры.

Если вам нужно работать с параллельными принтерами на современной системе, вам может потребоваться другой подход, например, использовать функцию CreateFile API для открытия файла для параллельного доступа.

В статье описывается функция для определения адреса порта LPT в операционных системах Windows 95 и 98, работающая с помощью ассемблерного кода.


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


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



:: Главная :: Порты ::


реклама



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

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 20:01:29/0.0067050457000732/2