КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Пример выполнения работы. Выполняет опрос состояния буфера клавиатуры
Функция 0Bh Выполняет опрос состояния буфера клавиатуры. · Вызов: ah = 0Bh · Возвращаемое значение: · аl = 00h, если нет символа в буфере клавиатуры; · al = ffh, если есть символ в буфере клавиатуры. · Примечание. Устанавливает значение AL в зависимости от наличия символов в буфере клавиатуры. Часто используются в задачах, действующих при нажатии определенных клавиш. Комбинация клавиш Ctrl/ (или Ctrl/Break) прекращает выполнение программы пользователя. Ввести строку с клавиатуры, посчитать, сколько и каких десятичных цифр имеется во введенной строке, посчитанные значения вывести на терминал. Текст программы: .model small ·.data COUNT db 10 dup (0); счетчик количества цифр CIFR db ‘0123456789ABCDEF’; таблица преобразования цифр IN_STR db 80,?, 82 dup (?); буфер ввода OUT_STR db 0Dh, 0Ah,?,’-‘,?,?,’$’; буфер вывода ·.code START: mov ax, @data mov ds, ax; Загрузить сегментный адрес данных ; Ввод строки · lea dx, IN_STR · mov ah, 0ah · int 21h ; Обработка xor ah, ah; обнуление старшего байта AX lea bx, IN_STR+2; адрес начала введённой строки xor cx, cx mov cl, IN_STR+1; количество введенных символов ВВ: mov al, [BX]; очередной символ строки cmp al,’0’; код символа меньше чем код нуля? jb NC; да, не цифра cmp al, ‘9’; код символа больше чем код девяти ja NC; да, не цифра ; символ - десятичная цифра sub al, ‘0’; преобразуем ASCII код в число mov si, ax; индекс в массиве счетчиков COUNT inc COUNT[si]; увеличиваем счетчик цифр NC: inc bx; получить очередной символ строки loop BB ·; Вывод результатов · mov cx, 10 lea bx, CIFR; адрес таблицы преобразования цифр в ASCII xor si, si; номер выводимой цифры OUT: mov al, ‘0’ add ax, si; ASCII код очередной цифры с номером в si mov OUT_STR+2, al; в буфер вывода mov dl, COUNT[si]; читать количество цифр с номером в si · mov al, dl push cx;временное сохранение cx mov cl, 4; сдвиг на четыре shr al, cl; выделить старшую цифру xlat; ASCII старшей цифры в al pop cx; восстановление cx mov OUT_STR+4, al; в буфер вывода mov al, dl; восстановить количество цифр в al and al,00001111b; выделить младшую цифру xlat; ASCII младшей цифры в al · mov OUT_STR+5, al; в буфер вывода lea dx, OUT_STR; подготовка к выводу строки mov ah, 09h; номер функции int 21h; вывод строки inc si; Счетчик очередной цифры loop OUT QUIT: mov ax, 4C00h; Код завершения 0 int 21h; Выход в DOS · end START Варианты заданий 1. Ввести с клавиатуры строку. Сжать строку, т.е. удалить пробелы и табуляции. Вывести результаты на экран. 2. Ввести с клавиатуры строку. Преобразовать все малые буквы в большие. Вывести результаты на экран. 3. Ввести с клавиатуры строку. Посчитать количество слов в строке. Определить, что является разделителем слов. Вывести результаты на экран. 4. Ввести с клавиатуры строку. Ввести с клавиатуры коротенькую строку - шаблон. Найти шаблон во введенной строке. Вывести на экран “ДА”, если шаблон есть и “НЕТ”, если нет. 5. Ввести с клавиатуры две строки. Сравнить их. Вывести на экран “ДА”, если они равны и “НЕТ”, если нет. 6. Ввести с клавиатуры строку. Если она длиннее некоторой заданной величины, то обрезать, если короче растянуть, вставив нужное число пробелов между словами. Вывести результаты на экран. 7. Ввести с клавиатуры строку, состоящую из нескольких слов. Вывести каждое слово на экран в отдельной строке, т.е. выдать слова в столбик. 8. Ввести с клавиатуры строку. Переставить в ней символы, поменяв местами первый символ с последним, второй с предпоследним и т.д. Вывести результаты на экран. 9. Ввести с клавиатуры две строки. Сравнить их. Вывести на экран номер начала второй строки в первой. 10. Ввести с клавиатуры строку, содержащую несколько точек. Преобразовать строку, чтобы после каждой точки был пробел, и следующая буква после точки были заглавная. Вывести результаты на экран. 11. Ввести с клавиатуры строку, содержащую несколько слов, разделенных пробелом. Переставить в ней слова, поменяв местами первое слово с последним, второе с предпоследним и т.д. Вывести результаты на экран. 12. Ввести с клавиатуры строку, состоящую из нескольких слов. Вывести каждое слово на экран в отдельной строке лесенкой, т.е. выдать каждое слово в столбик, с фиксированным сдвигом относительно начала предыдущего. Ввести с клавиатуры строку. Преобразовать все буквы в числа. Построить криптограмму (вместо букв вывести на экран соответствующие им числа).
Дата добавления: 2014-10-15; Просмотров: 903; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |