Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Контрольная работа по "Программированию"

Автор:   •  Декабрь 20, 2021  •  Контрольная работа  •  1,676 Слов (7 Страниц)  •  143 Просмотры

Страница 1 из 7

1. Текст задачи

Написать программу на языке Ассемблера, которая позволяет ввести с клавиатуры строку символов на русском языке, подсчитать количество гласных букв во введенной строке и вывести соответствующую информацию на экран.

2. Словесное описание работы программы

Перед описанием алгоритма работы программы стоит отметить, что при использовании эмулятора DOS-окружения для Windows “DosBox”, на современных операционных системах, таких как Window 10, отображение русских букв будет некорректным. Чтобы это исправить, нам необходимо русифицировать DosBox. Для этого нам необходимо с официального сайта DosBox “https://www.dosbox.com/” необходимо скачать архив “ DOSBox-russian-lang-074.zip” и всё его содержимое перекинуть в коренную папку DosBox (по умолчанию “C:\Program Files (x86)\DOSBox-0.74-3”). После открыть dosbox.conf. Найти секцию [dosbox]. В этой секции есть параметр “language=”. После знака "=" допишите путь к файлу russian.txt. Также в секции [dos] будет параметр “keyboardlayout=auto”. Необходимо “auto” испранить на “ru”. После проделанных шагов DosBox будет корректно отображать русские символы.

Сам алгоритм может переключаться между русской и английской раскладкой, клавишей Tab. Это сделано в связи с тем, что в русской раскладке есть не все символы. Также алгоритм распознаёт регистр.

Алгоритм начинает работать в русской раскладке. Сначала он считывает символ, и проверяет, какая кнопка была нажата. Если был нажат Enter, то программа перепрыгивает на метку вывода результата. В связи с тем, что код программы получился очень обширным, а условный переход jz имеет ограничение на 128 байт, данный прыжок был реализован через “станции/остановки”, которые расположены через каждые 64-72 строки.

Считав символ, мы проверяем, какая клавиша была нажата. Делается это с помощью команды cmp. Мы прыгаем на первую метку b1. Если символ не соответствует нужному, мы прыгаем на следующую метку b2, и т. д. Если мы не находим нужный символ, то мы возвращаемся к вводу символа (это реализовано точно также, как нажатие клавиши Enter). Когда мы находим нужный символ, мы заносим в регистр dl символ, соответствующий расширенной таблице ASCII в кодировке CP-866 (именно в этой кодировке работает DosBox), и совершаем прыжок ко вводу символа.

Если была нажата клавиша Tab, то мы прыгаем на метку “eng” (меняем раскладку). Там мы считывает символ, и если были нажаты клавиши Enter или Tab, то мы поступаем точно также, как и в случае с русской раскладкой. Если же была нажата иная клавиша, то печатается уже считанный символ.

Когда считывается нажатие русской гласной буквы, то счётчик (находящейся в сегменте данных) увеличивается на единицу.

После нажатия Enter, наш посредством постоянного деления на 10, и откладывания остатка в заранее заготовленные переменные (также находящиеся в сегменте данных) раскладывается на цифры, из которых число счётчика состоит. Таких переменных всего 6 штук, но 6-я для того, чтобы понять, больше ли число счётчика, чем 100000. Если число больше (т. е. в 6-ю переменную попал остаток от деления), то у нас выводится сообщение о том, что в тексте 100000 или больше гласных букв. Иначе каждая переменная увеличивается на 30h (чтобы соответствовать необходимой цифре, согласно таблице ASCII) и выводится результат. Таким образом точно возможно определить количество гласных в тексте до 99999.

Приложение А

(обязательное)

Текст программы

d_s segment

c db 0

c_1 db 0

c_2 db 0

c_3 db 0

c_4 db 0

c_5 db 0

c_6 db 0

final_text1 db 10,13,'There are ','$'

final_text2 db ' vowels in the text',13,10,'$'

final_text3 db '100000 or more vowels in the text',13,10,'$'

...

Скачать:   txt (14.9 Kb)   pdf (74.8 Kb)   docx (22.3 Kb)  
Продолжить читать еще 6 страниц(ы) »
Доступно только на Essays.club