Программирование на Ассемблере



              

13.2.1.2 Функции и константы для работы с консолью


При работе с консолью необходимо:

·        определить номера стандартных устройств (см. файл winuser.h);

·        определить дескриптор для заданного устройства;

·        обратиться к функции ввода – вывода.

Информация о номерах устройств и требуемых функциях приведена ниже.

Номера стандартный устройств

STD_INPUT_HANDLE         (DWORD)-10 ввод

STD_OUTPUT_HANDLE     (DWORD)-11вывод

STD_ERROR_HANDLE        (DWORD)-12 вывод ошибок

Определение дескриптора устройства:

HANDLE GetStdHandle(    DWORD nStdHandle     // номер устройства

   );      

Если ошибка, функция возвращает INVALID_HANDLE_VALUE, которому соответствует значение –1.

Ввод данных со стандартного устройства:

BOOL ReadConsole(

    HANDLE hConsoleInput,   // дескриптор консоли

    LPVOID lpBuffer,   // адрес буфера, куда читать данные

    DWORD nNumberOfCharsToRead,          // количество читаемых символов

    LPDWORD lpNumberOfCharsRead,         // адрес количества прочитанных символов

    LPVOID lpReserved           // резерв, должен быть NULL

   );      

Функция возвращает true в случае успеха и false в случае ошибки[19]

BOOL WriteConsole(

    HANDLE hConsoleOutput,            // дескриптор консоли

    CONST VOID *lpBuffer,    // адрес буфера для записи

    DWORD nNumberOfCharsToWrite,          // количество символов

    LPDWORD lpNumberOfCharsWritten,     // адрес количества символов, которые действительно записаны

    LPVOID lpReserved           // Резерв, должен быть NULL

   );      

Пример программы для ввода – вывода строки символов.

ideal

p386

model   flat

extrn ExitProcess:proc

extrn GetStdHandle:proc

extrn ReadConsoleA:proc

extrn WriteConsoleA:proc

dataseg

include "win.inc"

din  dd   0

dout dd   0

buf  db   80 dup (?)

siz  dd   ?

mystr     db   'Input string, please', 13, 10, 0

codeseg

begin:

push     STD_INPUT_HANDLE




Содержание  Назад  Вперед