IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Ввод последовательности символов
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Мною ранее была затронута тема "Сортировка в соответствии с ASCII кодом". Хотелось бы улучшить программку, добавив возможность ввода произвольной последовательности символов. Покажите пожалуста, как это реализовывается средствами языка Assembler.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


В языке Ассемблера нет средств для ввода символов. Надо пользоваться средствами BIOS.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(andriano @ 25.03.2008 20:12) *

В языке Ассемблера нет средств для ввода символов. Надо пользоваться средствами BIOS.


Но можно же использовать функции MS-DOS в Ассемблере...Я это подразумевала...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 58
Пол: Мужской
Реальное имя: Андрей

Репутация: -  2  +


Функция 01h 21h прерывания

mov AH, 01h
int 21h


Читать (ожидать) символ со стандартного входного устройства. Результат помещает в AL
Также можно по-другому:
Функция 00h 16h прерывания (Выход - AL - ASCII код, AH - Сканкод или расширенный код ASCII)
Еще можно вводить строку таким образом. Через прерывание 21h, Функция 0Ah:
Вход:
AH = 0Ah
DS:DX -> Адрес входного буфера (см. ниже)
Выход:
Нет. Буфер содержит ввод, заканчивающийся символом CR (ASCII 0Dh)

При входе буфер по адресу DS:DX должен быть оформлен так:
MAX ? ? ? ? ? ? ...
MAX - Максимально допустимая длина ввода (от 1 до 254)
При выходе буфер заполнен данными следующим образом:
max len T E X T 0Dh
LEN - Действительная длина строки (без завершающего CR)
Символы считываются до тех пор, пока не будет введен возврат каретки CR (нажатие ENTER). Если достигут предел ввода MAX, то включается консольный звонок для каждого очередного символа.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.01.2021 5:00
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name