Difference between revisions of "SysFn43/ru"

From KolibriOS wiki
Jump to navigation Jump to search
 
(4 intermediate revisions by 2 users not shown)
Line 6: Line 6:
  
 
'''Внимание:'''
 
'''Внимание:'''
* Эта функция устарела и может быть удалена в следующих версиях ядра.
+
:* Эта функция удалена из ядра!!!
* При необходимости прямого (бездрайверного) ввода/вывода в порты и в память внешних устройств рекомендуется использовать [[SysFn62|функцию 62]].
+
:* При необходимости прямого (бездрайверного) ввода/вывода в порты и в память внешних устройств рекомендуется использовать [[SysFn62/ru|функцию 62]].
  
 
Параметры:
 
Параметры:
* eax = 43 - номер функции
+
:* eax = 43 - номер функции
* bl = байт для вывода
+
:* bl = байт для вывода
* ecx = номер порта 0xnnnn (от 0 до 0xFFFF)
+
:* ecx = номер порта 0xnnnn (от 0 до 0xFFFF)
 
 
 
Возвращаемое значение:
 
Возвращаемое значение:
* eax = 0 - успешно
+
:* eax = 0 - успешно
* eax = 1 - поток не зарезервировал указанный порт
+
:* eax = 1 - поток не зарезервировал указанный порт
  
 
=== Ввод данных из порта ===
 
=== Ввод данных из порта ===
 
Параметры:
 
Параметры:
* eax = 43 - номер функции
+
:* eax = 43 - номер функции
* ebx игнорируется
+
:* ebx игнорируется
* ecx = 0x8000nnnn, где nnnn = номер порта (от 0 до 0xFFFF)
+
:* ecx = 0x8000nnnn, где nnnn = номер порта (от 0 до 0xFFFF)
 
 
 
Возвращаемое значение:
 
Возвращаемое значение:
* eax = 0 - успешно, при этом ebx = введённый байт
+
:* eax = 0 - успешно, при этом ebx = введённый байт
* eax = 1 - поток не зарезервировал данный порт
+
:* eax = 1 - поток не зарезервировал данный порт
 
 
 
Замечания:
 
Замечания:
* Предварительно поток должен зарезервировать за собой указанный порт [[SysFn46/ru|функцией 46]].
+
:* Предварительно поток должен зарезервировать за собой указанный порт [[SysFn46/ru|функцией 46]].
* Для зарезервированных портов вместо вызова этих функций рекомендуется использовать команды процессора in/out - это значительно быстрее, короче и проще.  
+
:* Для зарезервированных портов вместо вызова этих функций лучше использовать команды процессора in/out - это значительно быстрее и несколько короче и проще. Из незарезервированных портов читать всё равно нельзя.
* Из незарезервированных портов читать в любом случае нельзя.
 
  
 +
'''Константы для регистров:'''
 +
::eax - SF_PORT_IN_OUT (43)
  
 
{{System_functions}}
 
{{System_functions}}
 
[[Category: SysCalls]]
 
[[Category: SysCalls]]

Latest revision as of 05:14, 19 March 2022

Функция 43 - ввод/вывод данных в порт.


Вывод данных в порт

Внимание:

  • Эта функция удалена из ядра!!!
  • При необходимости прямого (бездрайверного) ввода/вывода в порты и в память внешних устройств рекомендуется использовать функцию 62.

Параметры:

  • eax = 43 - номер функции
  • bl = байт для вывода
  • ecx = номер порта 0xnnnn (от 0 до 0xFFFF)

Возвращаемое значение:

  • eax = 0 - успешно
  • eax = 1 - поток не зарезервировал указанный порт

Ввод данных из порта

Параметры:

  • eax = 43 - номер функции
  • ebx игнорируется
  • ecx = 0x8000nnnn, где nnnn = номер порта (от 0 до 0xFFFF)

Возвращаемое значение:

  • eax = 0 - успешно, при этом ebx = введённый байт
  • eax = 1 - поток не зарезервировал данный порт

Замечания:

  • Предварительно поток должен зарезервировать за собой указанный порт функцией 46.
  • Для зарезервированных портов вместо вызова этих функций лучше использовать команды процессора in/out - это значительно быстрее и несколько короче и проще. Из незарезервированных портов читать всё равно нельзя.

Константы для регистров:

eax - SF_PORT_IN_OUT (43)