Сборник по задачам и примерам Assembler

Ввод строки символов с клавиатуры (0ah int 21h)



Ввод строки символов с клавиатуры (0ah int 21h)

Функция 0ah вводит строку символов в буфер памяти специального формата. Если символов в буфере клавиатуры нет, то функция ожидает их ввода. Конец ввода — нажатие клавиши Enter (0dh). Формат буфера:

  • первый байт буфера содержит количество символов для ввода с учетом символа 0dh, завершающего процесс ввода;
  • второй байт содержит реальное число введенных символов, но уже без учета завершающего символа 0dh;
  • начиная с третьего байта содержится строка введенных символов с завершающим символом 0dh, максимальная длина строки — 254 символа.
  • Вход: АН = 0ah — ввод строки в буфер (до 254 символов); DS:DX — адрес буфера, первый байт которого должен содержать количество символов для ввода.

    Выход: введенная строка начиная с третьего байта буфера по адресу в DS:DX, длина строки во втором байте буфера.

    Перед вызовом функции 0ah в первый байт буфера необходимо поместить значение максимальной длины строки. Если первый байт равен нулю, то вызов функции игнорируется и программа продолжает выполнение без ожидания ввода строки. Функция производит проверку нажатия комбинации Ctrl+C (Ctrl+Break), при наличии которого вызывается прерывание int 23h. Вводимая строка отображается на экране. Буфер ввода для данной функции лучше оформлять в виде структуры.

    ;prg05_07.asm - программа ввода строки функцией OAh int 21h

    buf_Oahstruc

    len_bufdb 11 :длина buf_0ah

    len_in db 0 действительная длина введенного слова (без учета Odh)

    buf_in db 11 dup (20h) ;буфер для ввода (с учетом Odh)

    ends

    .data

    buf buf_0ah<>

    adr_bufdd buf

    .code

    ..........

    :вводим 10 символов с клавиатуры

    Ids dx,adr_buf

    movah.Oah

    int 21h обработка введенной строки



    Содержание раздела