Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 873; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.039 сек.