Difference between revisions of "SysFn43/ru"
Jump to navigation
Jump to search
(5 intermediate revisions by 3 users not shown) | |||
Line 4: | Line 4: | ||
=== Вывод данных в порт === | === Вывод данных в порт === | ||
+ | |||
+ | '''Внимание:''' | ||
+ | :* Эта функция удалена из ядра!!! | ||
+ | :* При необходимости прямого (бездрайверного) ввода/вывода в порты и в память внешних устройств рекомендуется использовать [[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 - это значительно быстрее и несколько короче и проще. Из незарезервированных портов читать всё равно нельзя. |
− | |||
+ | '''Константы для регистров:''' | ||
+ | ::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)
|