Разработка программы испытаний компьютерной техникиРефераты >> Программирование и компьютеры >> Разработка программы испытаний компьютерной техники
2.5 Требования к техническим и программным средствам
Программа выполнена на языке ассемблера 8086 процессора, соответственно ей необходим IBM PC – совместимый компьютер с процессором не ниже 8086, также программа может выполняться на компьютерах с процессорами старшего поколения (например: 80286 или 80386), т.к. особенностью архитектуры 80х86 является преемственность на уровне машинных команд: программы, написанные для младших моделей процессоров, без всяких изменений могут быть выполнены на более старших моделях.
Компилированный код программы занимает всего 2 КБ – это связано с отсутствием избыточного кода, которого очень много при использовании языков высокого уровня. В связи с этим программа может легко поместиться на дискету 360 КБ.
Программа работает в текстовом режиме и не использует цветовой гаммы, поэтому ей достаточно монитора CGA. Кроме того она может без всяких изменений работать на мониторах старшего поколения таких, как EGA, VGA и SVGA.
Так как программа тестирует 640 КБ оперативной памяти, этот объем является минимумом.
2.6 Описание структуры программы
Программа была реализована с помощью нескольких пользовательских процедур и макросов (см. таблицу 2.2).
Довольно часто в программах, особенно больших, приходится несколько раз решать одну и ту же подзадачу и поэтому приходится выписывать одинаковую группу команд, решающих эту подзадачу. Чтобы избежать повторного выписывания такой группы команд, ее обычно выписывают один раз и оформляют соответствующим образом, а затем в нужных местах программы просто передают управление на эти команды, которые, проработав, возвращают управление обратно. Такая группа команд, которая решает некоторую подзадачу и которая организована таким образом, называется процедурой.
Нередко бывает полезным предварительное(до начала трансляции) преобразование текста программы. Например, может потребоваться, чтобы какой-то фрагмент программы был продублирован несколько раз или чтобы в зависимости от некоторых условий в тексте программы были сохранены одни фрагменты и удалены другие. Подобную возможность предоставляют так называемые макросредства. Расширение языка ассемблера за счет этих средств обычно называют макроязыком.
Программа, написанная на макроязыке, транслируется в два этапа. Сначала она переводится на, так сказать, чистый язык ассемблера, т.е. преобразуется к виду, где нет никаких макросредств. Этот этап называется макрогенерация, его осуществляет специальный транслятор – макрогенератор. На втором этапе полученная программа переводится на машинный язык. Это этап ассемблирования, его осуществляет ассемблер.
При выполнении программы на экран выводится аннотация, пользователь, ознакомившись с программой, нажимает на любую клавишу, и на экран выводится меню (с помощью процедуры ShowQuestion), в котором пользователь может выбрать интересующий его пункт меню:
- сбор сведений о ПК;
- тест памяти;
- выход.
Если выбран первый пункт, выполняется процедура ShowSved. Внутри данной процедуры реализована очистка экрана, с помощью макроса ClrScr, а также диагностика оборудования и задержка, реализованные с помощью макроса press. После выполнения данной процедуры программа переходит в начало, т.е. в меню.
Таблица 2.2 Таблица процедур и макросов
Название |
Тип |
Назначение |
Movcur |
Макрос |
Премещает курсор |
Clrscr |
Макрос |
Очищает экран |
|
Макрос |
Выводит на экран строку |
Press |
Макрос |
Реализует задержку |
ShowQuestion |
Процедура |
Выводит на экран меню |
SborSved |
Процедура |
Осуществляет сбор сведений |
TestMem |
Процедура |
Осуществляет тест памяти |
В случае выбора второго пункта, выполняется процедура TestMem, тестирующая оперативную память ПК. Также внутри данной процедуры реализованы очистка экрана и задержка перед выходом в меню.
Если выбран третий пункт, программа, не очищая экран, передает управление операционной системе DOS.
Рис 2.3 Алгоритм программы
2.7 Описание алгоритма решения задачи
Если в оперативной памяти ПК имеется 2 в 20 степени ячеек, то для ссылок на эти ячейки нужны 20-разрядные адреса; их принято называть физическими адресами. Ясно, что при большом объеме памяти большим будет и размер физических адресов, а это ведет к увеличению длины команд и к увеличению размера программ в целом. Это плохо. Чтобы сократить размеры команд, поступают следующим образом.
Память условно делят на участки, которые принято называть сегментами. Начальные адреса сегментов могут быть любыми, но на длину сегментов накладывается ограничение: размер любого сегмента не должен превышать 64Кб.
В этих условиях физический адрес А любой ячейки памяти можно представить в виде суммы A=B+ofs, где В – адрес сегмента, а ofs – смещение относительно адреса В.
Таким образом ,если в команде надо указать физический адрес А, то адрес сегмента B – “прячем” в так называемый сегментный регистр, а в команде указываем лишь этот регистр и слагаемое ofs. Это даёт экономию размера команд.
В связи с этим максимальный объем сегмента равен 64КБ, а минимальный равен 16 байтам.
Процедура теста памяти реализована с помощью вложенного цикла. Первый цикл увеличивает на единицу модификационный регистр BP до тех пор, пока BP меньше 0A000h (это последний сегмент 640 КБ). Внутри этого цикла реализован еще один цикл - он увеличивает на единицу модификационный регистр SI до тех пор, пока он меньше 16. Внутри вложенного цикла осуществляется непосредственно проверка памяти на неисправные биты: сначала происходит проверка на «постоянные единицы» - в сегмент по адресу BP со смещением SI записываеться ноль (что в двоичной системе счисления означает восемь нулей), затем осуществляется проверка этого значения, т.е. нуля. Если это значение равно нулю, значит память исправна, в противном случае - не исправна. Затем происходит проверка на «постоянные нули»: по тому же адресу записывается число FFh (что в двоичной системе счисления означает восемь единиц), затем осуществляется проверка этого значения. Если значение равно FFh, значит память исправна, в противном случае - неисправна.
2.8 Отладка и тестирование
Тестирование производилось с помощью отладчика Turbo Debugger корпорации Borland. Была выполнена трассировка всей программы. Трассировка – это процесс пошагового выполнения команд с листингом состояний всех регистров, флагов, сегмента данных на момент выполнения каждой команды.