Вывод на экран текстовых сообщений. Этот алгоритм будет использоваться для вывода пояснительных сообщений, приглашений к вводу данных и прочих

54728
знаков
3
таблицы
8
изображений

1. Вывод на экран текстовых сообщений. Этот алгоритм будет использоваться для вывода пояснительных сообщений, приглашений к вводу данных и прочих.

2. Вывод на экран числовых значений - будет использоваться для отображения значений элементов массива и контрольного кода чётности. Если преобразовать число к строковому виду, то для непосредственного отображения можно будет использовать алгоритм вывода на экран текстового сообщения. Таким образом, реализация алгоритма может быть упрощена за счёт его разбиения на две составляющие:

- преобразовать число к строковому виду;

- вывести строку на экран.

3. Преобразование числа к строковому виду.

Наиболее распространенные варианты представления чисел – десятичное, восьмеричное, шестнадцатеричное и двоичное.

Символы ‘0’…’9’ располагаются в таблице ASCII-кодов последовательно, поэтому просто реализуется преобразование чисел в десятичное представление. Также десятичная форма отображения чисел является достаточно компактной. С учётом этого примем решение выводить числа на экран в десятичном виде.

4. Ввод числовых данных. С целью унификации визуального представления ввод числовых данных также будет осуществляться в десятичном представлении. Целесообразно усилить реализацию алгоритма проверкой введенного значения на превышение задаваемого в виде параметра лимита – это позволит использовать единообразно использовать разработанную подпрограмму и для ввода номера элемента массива, ограничив возможное значение размером массива, и для ввода нового значения элемента массива.

5. Генерация случайных чисел

В силу детерминированной природы компьютерных программ получить случайную последовательность чисел за счёт генерации невозможно. В программировании используется более точный термин – «псевдослучайная» последовательность. Это означает, что генерируемая последовательность чисел похожа на случайную, однако при повторении внешних условий, определяющих работу генератора, выходная последовательность повторится.

В качестве внешнего параметра генераторов псевдослучайных чисел, как правило, используют значение текущего времени компьютера в миллисекундах или количество тиков, прошедших с момента запуска компьютера. Такие внешние параметры хотя теоретически и могут быть повторены, вероятность их непроизвольного повторения практически равна нулю. Так как генерация случайных чисел будет использоваться только для автоматического заполнения тестового массива, особых требований к его «случайности» можно не предъявлять, что позволит использовать один из простейших генераторов.

Самый часто применяемый тип алгоритмов генерации псевдослучайных последовательностей – линейные конгруэнтные генераторы, описываемые общим рекуррентным соотношением:

Ij+1 = (aIj + c) MOD m

При правильно выбранных числах a и c эта последовательность возвращает

все числа от нуля до m–1 псевдослучайным образом и её периодичность сказывается только на последовательностях порядка m. Если число a подобрано очень тщательно, может оказаться, что число c равно нулю. Так, классический стандартный генератор Льюиса, Гудмана и Миллера использует a=16807 (75) при m=231-1, а генераторы Парка и Миллера используют a=48271 и a=69621 (при том же m).

Реализуем последний из описанных вариантов, используя в качестве начального значения I текущее значение тактов таймера, которое хранится в виде двойного слова в области данных BIOS по адресу 0040: 006C.

6. Компоновка алгоритмов. Алгоритмы, реализуемые в программе, в интересах лучшей читаемости исходных текстов и возможности повторного использования оформлены в виде подпрограмм. Передача параметров в подпрограммы и получение результатов будет осуществляться через регистры процессора. Модификация регистров внутри подпрограмм в целях минимизации неуправляемых побочных эффектов будет сведена к минимуму. Глобальные переменные будут использоваться по возможности только во вспомогательных алгоритмах.

С учётом сформулированных ранее проектных решений, касающихся формирования контрольного числа, очевидно, что чем больше разрядность контрольного кода, тем большей ёмкости массивы могут быть обработаны более точным и информативным методом – методом битового маскирования.

С учётом же того, что в настоящее время наиболее распространены персональные компьютеры с 32-разрядной архитектурой, целесообразно ограничить ёмкость контрольного числа 32-мя битами.

Вопрос типа элементов в обрабатываемых массивах не является существенным, так как в контексте языка программирования Ассемблер речь может идти только о байтовых массивах, о массивах машинных слов (16 разрядов) и двойных слов (32 разряда). Если принять во внимание, что в любом случае под массив отводится непрерывная область памяти, то массив машинных слов можно рассматривать как байтовый массив двойного размера, а массив двойных слов – как байтовый массив учетверенного размера. Таким образом, будем обрабатывать только байтовые массивы.

2.3. Подсчёт контрольного кода четности

Для вычисления контрольного кода чётности будем использовать подсчёт битов в исходных элементах массива. С учётом ёмкости контрольного числа в 32 бита для массивов, размер которых не более 32 байта, используем битовое маскирование результирующего кода, а для массивов большего размера – подсчёт байтов, количество битов в которых чётно.

Блок-схема алгоритма имеет вид:

Из блок-схемы видно, что алгоритм подсчета контрольного кода четности использует два вложенных алгоритма: битового маскирования результата и подсчета количества байтов с четным количеством бит.


2.4. Битовое маскирование

Традиционно массивы в графическом виде представляются в виде последовательности элементов, упорядоченных слева направо, а двоичные числа – справа налево:

Такое представление затрудняет понимание общей природы массивов и двоичных чисел. Достаточно упорядочить элементы массива и биты двоичного числа в одном направлении и, возможно, ввести нумерацию элементов массива с 0, чтобы увидеть, что по сути двоичное число – это обычный массив, элементами которого являются биты:

С учётом этого факта несложно построить алгоритм формирования контрольного числа, в котором последовательно будут проверяться элементы массива и в зависимости от результата проверки соответствующие биты контрольного числа будут устанавливаться в 1 или 0. Текстовое описание такого алгоритма:

1. Обнулить контрольное число

2. Установить указатель на последний элемент массива

3. Проверить на четность очередной элемент массива

4. Если чётный, установить флаг переноса в 1. Иначе установить в 0.

5. Выполнить битовый сдвиг контрольного числа с учётом флага переноса на 1 разряд в сторону старших разрядов.

6. Если все элементы массива обработаны, закончить.

7. Иначе перейти к предыдущему элементу массива и продолжить с пункта 3

Графическое представление алгоритма в виде блок-схемы:


2.5. Подсчет в массиве байтов с четным количеством бит

Подсчёт количества байтов с чётным количеством бит реализовать достаточно просто:

Обнулить результат

Установить указатель на первый элемент массива

Проверить на чётность очередной элемент массива

Если чётный, добавить к результату 1

Если все элементы массива обработаны, закончить

Иначе перейти к предыдущему элементу массива и продолжить с пункта 3


Графическое представление алгоритма в виде блок-схемы:


2.6. Проверка элементов массива на чётность

Для проверки отдельных байтов массива на чётность удобно использовать команду test, которая вычисляет результат действия побитового логического «И» над приёмником и источником и устанавливает флаги SF, ZF и PF в соответствии с результатом, при этом результат не сохраняется. Если после выполнения команды test флаг PF будет установлен в 1, количество бит в байте чётно.


Информация о работе «Микропроцессор i8086/i8088»
Раздел: Информатика, программирование
Количество знаков с пробелами: 54728
Количество таблиц: 3
Количество изображений: 8

Похожие работы

Скачать
34175
0
0

... системы. Тем самым появилась возможность объединения высокой производительности микропроцессора с внутренней тактовой частотой 50(66) МГц и эффективной по стоимости 25/33-мегагерцовой системной платой. Новые микропроцессоры по прежнему включали в себя центральный процессор, математический сопроцессор и кэш-память на 8 Кбайт. Компьютеры, поставляемые на базе микропроцессоров i486DX2, работают ...

Скачать
21244
1
0

... в полноценную вычислительную систему. Традицией компании, начиная с первого кристалла, стал выпуск не отдельного чипа ЦП, а семейства БИС, рассчитанных на совместное использование. Современные микропроцессоры построены на 32-х битной архитектуре x86 или IA-32 (Intel Architecture 32 bit), но совсем скоро произойдет переход на более совершенную, производительную 64-х битную архитектуру IA-64 ( ...

Скачать
64593
2
6

... использования дополнительной памяти основан на переключении блоков (страниц) памяти. В выделяется незанятое «окно» (page frame) в 64-Кбайт, которое разбито на 16-килобайтные страницы. Программные и аппаратные средства позволяют отображать любой 16-килобайтный сегмент этой дополнительной expanded-иамйти в любой из выделенных 16-килобайтных страниц окна. Хотя микропроцессор всегда обращается к ...

Скачать
38039
3
0

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

0 комментариев


Наверх