на тему рефераты
 
Главная | Карта сайта
на тему рефераты
РАЗДЕЛЫ

на тему рефераты
ПАРТНЕРЫ

на тему рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

на тему рефераты
ПОИСК
Введите фамилию автора:


Реферат: Разработка программы на Ассемблере


8. RLC DST, CNT; циклический сдвиг влево через перенос

9. RRC DST, CNT;циклический сдвиг вправо через перенос

10. ROR DST, CNT;циклический сдвиг влево

11. ROL DST, CNT;циклический сдвиг вправо

КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ

1. CALL SUBR; вызов подпрограммы с адресом SUBR;

 

   call delay;

    mov ....

2. RET; возврат из подпрограммы к оператору следующему непосредственно за CALL, то есть в приведенном выше примере к MOV ..

3. JMP NAME; безусловный переход к команде с символическим адресом NAME.

 

    jmp short name;переход к метке name, отстоящей не более

                  ;чем на -128 или +127 байтов.

    jmp near name;переход к метке name,  отстоящей не более

                  ;чем на 65535 байтов, в одном сегменте.

    jmp name;аналогично jmp near name;

4. JA NAME или JNBE NAME; условный переход, если, например, в результате сравнения CMP DST, SRC приемник по абсолютной величине больше источника, то перейти к метке name.

5. JB NAME или JNAE NAME; условный переход, если, например, в результате сравнения CMP DST, SRC приемник по абсолютной величине меньше источника, то перейти к метке name (команды п4 и п5 выполняются по результатам выполнения операций над беззнаковыми числами).

6. JZ NAME или JE NAME; перейти, если результат операции влияющей на флаг нуля - нулевой (переход по "нулю").

7. JNZ NAME или JNE NAME; переход по "не нулю". (команды п6 и п7 выполняются по результатам выполнения операций над числами cо знаком ).

КОМАНДЫ УПРАВЛЕНИЯ ЦИКЛАМИ

1. LOOP NAME; эта команда неявно уменьшает (CX) на 1 и осуществляет переход к ближней метке, если (CX) не равно 0.

 

      ....

      mov cx,64h;блок операторов от метки syc до loop syc

syc:   ....;будет выполнен 100 раз.

       ....

       loop syc

2. LOOPZ NAME или LOOPE NAME кроме того осуществляет проверку ZF флага. Поэтому цикл заканчивается по условию, когда (CX) = 0 или (ZF) = 0 или и то и другое вместе. Т.о. эта команда служит для обнаружения первого ненулевого результата.

3. LOOPNZ, LOOPNE - выход из цикла по "нулю".

 

       ....

       mov cx,1000d;цикл может быть завершен раньше 1000

next:  .... ;прохода,если содержимое аккумулятора

       .... ;станет равным 129,т.е. равным ASCII коду

       cmp al,'Б';буквы Б.

       loopnz next

9.3.9 КОМАНДЫ ОБРАБОТКИ СТРОК (ЦЕПОЧЕК БАЙТОВ)

1. LODSB; команда lodsb загружает байт адресованный регистром SI из сегмента данных, и увеличивает SI на 1, если перед этим была введена команда CLD (очистить флаг направления DF) и уменьшает SI на 1, если была использована команда STD (установить флаг направления).

 

       ....

       .DATA

string DB 'abcdefg'

       .CODE

       ....

       cld;после выполнения этих команд в AL будет

       mov si,OFFSET [string+2]; загружен ASCII код 'с'

       lodsb;причем содержимое SI будет указывать на 'd'.

2. MOVSB; эта команда перемещает один байт из ячейки памяти с адресом в регистре SI в ячейку памяти с адресом в регистре DI и увеличивает (SI) и (DI) на 1. Значение SI может находиться, как в сегменте данных DS, так и в дополнительном сегменте ES. Значение DI может находиться только в дополнительном сегменте ES.

 

      ....

      .DATA

msg  DB 'Всё O.K.'

LEN  = $ - msg;LEN равно 8

      .CODE

      ....

      cld

      lea si,msg;в SI адрес источника

      mov ax,0b800h;начало сегмента видеопамяти

      mov es,ax;поместить в дополнительный сегмент

      lea di,es:(0a0h * 3);4-я строка сверху

      mov cx,LEN;LEN - количество выводимых символов

rp:   movsb;переслать символ в текущую позицию экрана

      inc di;перешагнуть через позицию атрибута

      loop rp;повторить до исчерпания (CX)

      ....;строка 'Всё O.K.' будет выведена в 4-ю строку

          ;дисплея сверху.

3. REP ;префикс повторения команды. Например окончание предыдущей программы может быть записано в виде:

 

      ....

      mov cx,LEN;несмотря на то,что массив'Всё O.K.'будет

rep   movsb;скопирован в область памяти B800:(A0 * 3), на

      ;экран дисплея будет выведено: ВёOK. Почему?

4. CMPSB; осуществляет сравнение байта строки источника c адресом (SI) и байта строки приемника с адресом (DI): то есть производит вычитание ((SI)) - ((DI)). Не путать с командой CMP DST, SRC в которой наоборот, производится вычитание источника из приемника. Команда CMPSB неявно уменьшает (CX) на 1 и увеличивает (SI) и (DI) на 1, если (DF) = 0.

5. REPZ или REPE; префикс повторения. Выполнение команды завершается, когда (CX) = 0 или (ZF) = 0.

 

     ....

     .DATA

src  DB 'To be, or not to be'

dst  DB 'To be ,or not to be'

len  = $ - dst;len равно 19

     .CODE

     ....

     cld; (DF) = 0

     push ds;совместить адреса

     pop es;сегментов ds и es

     mov cx,len;длину строки dst переслать в cx

     lea di,dst;загрузить адрес(смещение) строки dst в DI

     lea si,src

repe cmpsb;сравнивать побайтно

     je equal;если все байты совпали, то перейти к метке

     not cx;если нет - вычислить номер несовпадающих байт

     add cx,len;

     jmp notequal;

equal:    ....

          ....

notequal: ....

В конце этого примера номер первого несовпадающего байта (CX) = 5.

 КОМАНДЫ УПРАВЛЕНИЯ МИКРОПРОЦЕССОРОМ

1. CLC; сбросить флаг переноса (CF) = 0.

2. STC; установить флаг переноса (CF) = 1.

3. CMC; инвертировать флаг пнреноса.

4. CLD; очистить флаг направления (DF) = 0, в этом случае операции над строками (цепочками байтов) будут производиться от младшего адреса к старшему.

5. STD; установить флаг направления (DF) = 1,обработка цепочек байтов производится от старшего адреса к младшему.

6. STI; установить флаг прерываний (IF) = 1, разрешить прерывания от внешних устройств.

7.CLI; очистить флаг прерываний.

8. NOP; холостая операция.

КОМАНДЫ ПРЕРЫВАНИЙ

1. INT INUM; эта команда вызывает программное прерывание, то есть переход к ячейке памяти с адресом хранящимся в четырех байтах, начиная с адреса INUM * 4, где INUM = (0...255). Это 4-х байтовое число является указателем подпрограммы обработчика данного прерывания, и иначе называется вектором прерывания.Таким образом первый килобайт памяти 256 * 4 отводится под векторы прерываний.

Операции инициируемые программными прываниями определяются кодом в регистре AH, например:

 

   ....

    mov ah,14d;функция вывода символа на дисплей,с последующимм

    mov al,31h;продвижением курсора на одну позицию вправо.

    int 10h;на  экран будет выведена цифра '1'(ASCII код 31h).

       ....

       .DATA

privet DB 'Добрый morning !','$';

       .CODE

       ....

       lea dx,privet;специальная функция регистра DX

       mov ah,9;9 - функция вывода на экран дисплея

       int 21h;будет выведено приветствие ....

ВЛИЯНИЕ КОМАНД НА ФЛАГИ

В таблицу включены только те инструкции, которые влияют на флаги.

flags.gif (9925 bytes)

"+" - обозначает, что команда влияет на флаг, "-" - не влияет, "1" - флаг устанавливается в 1, "0" - флаг устанавливается в 0 (сбрасывается), "#" - инверсия флага, "?" - не определенное значение флага, >1 - одиночный сдвиг, >n - многоразрядный сдвиг.

ПРИМЕЧАНИЯ

 

    1. R1,R2 - одно- или двухбайтные регистры.

    2. RP - двухбайтные регистры.

    3. SRC,DST -источник,приемник (регистр или ячейка  па-

       мяти)

    4. M,M1,M2 -ячейки памяти с символическими адресами M,

       M1 и M2.

    5. CNT - счетчик,регистр CL или CX.

    6. SUBR,NAME  -  символический  адрес  (метка  начала

       подпрограммы или блока операторов).

    7. Во всех  командах  условных  переходов  метка  NAME

       должна отстоять от команды перехода не более,чем на  -128

       или +127 байтов.

    8. INUM - номер прерывания.

ОБЩИЙ РАЗДЕЛ

1.1. Технико-математическое описание задачи

Программа делится на две части:

Первая часть программы - Сбор сведений - это часть программы, собирающая справки об оборудовании, установленном на ПК, на котором программа выполняется. Справки наводятся о следующих устройствах:

-     математическом сопроцессоре;

-     СОМ портах;

-     LPT портах;

-     дисководах;

-     CD-ROM приводах;

-     расширенном управлении электропитанием;

-     манипуляторе «мышь».

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

          СОМ порты – это порты с последовательным типом передачи данных, предназначенные для подключения коммуникационных, манипуляторных и других устройств, где требуется сравнительно не- большая скорость передачи данных. Количество установленных последовательных портов может варьироваться от одного до четырёх. На некоторых материнских платах существует ограничение на подключение последовательных портов, например: если это значение будет два, и если вы подключите четыре порта, то работать будут все равно два.

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

Дисковод – устройство, предназначенное для чтения/записи накопителей на магнитном диске (гибкий диск). Существует четыре типа дисководов:

-     360 Кб.;

-     720 Кб.;

-     1.2 Мб.;

-     1.44 Мб.

Они различаются по формату обслуживаемых дискет и максимально возможному объему данных, записываемых на дискету соотвестсвующего типа.

CD-ROM привод – устройство, предназначенное только для чтения накопителей на лазерных дисках. Различаются по скорости доступа к данным и скоростью вращения лазерного диска. Обычно устанавливают не более одного привода.

РУЭ (расширенное управление электропитанием) – стандарт, служащий для экономии электроэнергии. Представляет собой следующий набор функций:

-     автоматическое отключение электропитания;

-     «спящий» режим;

-     автоматическое отключение питания монитора;

-     автоматическое отключение питания жестких дисков.

Может находиться в двух состояниях: включено или выключено.

Вторая часть программы -  диагностика памяти - проверяет на работоспособность память ПК, на котором выполняется программа.

1.2. Требования к функциональным характеристикам

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

1 – сбор сведений о системе;

2 – тест памяти;

3 – выход.

Для выбора интересующего пункта необходимо нажать на клавиатуре цифры, соответствующие номерам пунктов.

В случае  выбора пункта «Сбор сведений о системе» выполняется последовательный вывод информации о ПК в виде списка устройств с текущим состоянием. Ниже приведена таблица со списком устройств и их возможными состояниями.

                                                                                                Таблица 1

Таблица возможных состояний устройств

Устройство Возможные состояния
Математический сопроцессор Присутствует, отсутствует
Максимальное количество подключаемых Сом портов От 0 до 4
Количество CОМ-портов От 0 до 4
Количество LPT-портов От 0 до 4
Первый дисковод Отсутствует, 360Kb, 720Kb, 1.2Mb, 1.44Mb.
Второй дисковод Отсутствует, 360Kb, 720Kb, 1.2Mb, 1.44Mb.
Количество установленных CD-ROM приводов От 0 до 4
Расширенное управление электропитанием(APM) Отсутствует, присутствует, включено/выключено
Манипулятор «мышь» Отсутствует, присутствует

После вывода списка устройств, в программе необходимо реализовать задержку, затем возврат в меню.

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

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

1.3. Требования техническим и программным средствам

Программа выполнена на языке ассемблера 8086 процессора,

соответственно ей необходим IBM PC – совместимый компьютер с процессором не ниже 8086, также программа может выполняться на компьютерах с процессорами старшего поколения (например: 80286 или 80386), т.к. особенностью архитектуры 80х86 является преемственность на уровне машинных команд: программы, написанные для младших моделей процессоров, без всяких изменений могут быть выполнены на более старших моделях.

Компилированный код программы занимает всего 2 Кб – это связано с отсутствием избыточного кода, которого очень много при использовании языков высокого уровня. В связи с этим программа может легко поместиться на дискету 360 Кб.

          Программа работает в текстовом режиме и не использует цветовой гаммы, поэтому ей достаточно монитора CGA. Кроме того она может без всяких изменений работать на мониторах старшего поколения таких, как EGA, VGA и SVGA.

          Так как программа тестирует 640 Кб оперативной памяти, этот объем является минимумом.

1.3.1. Обоснования выбора языка программирования

          Для написания данной программы был выбран язык ассемблера. В связи с тем, что он наиболее подходит для реализации такого рода задач, т.е. где требуется доступ к портам, выполнение специальных прерываний, доступ к области памяти BIOS и т.д. 

Язык ассемблера, представляет собой фактически символьную форму записи машинного языка: в нем вместо цифровых кодов операций вписывают привычные знаки операций или их словесные названия, вместо адресов – имена, а константы записывают в десятичное системе счисления. Программу, записанную в таком виде, вводят в ЭВМ и подают на вход специальному транслятору, называемому ассемблером, который переводит её на машинный язык, и далее полученную машинную программу выполняют.

          Для любой ЭВМ можно придумать разные языки ассемблера, хотя бы потому, что можно по-разному обозначать машинные операции. В частности, и для ПК разработано несколько таких языков(ASM-86, MASM, TASM). Для реализации данной задачи был выбран язык, который создан фирмой Borland и полное название которого – турбо ассемблер, сокращенно TASM. Надо отметить, что этот язык наиболее часто используется на ПК.

СПЕЦИАЛЬНЫЙ РАЗДЕЛ

2.1. Постановка задачи

          Разработать программу тестирования оперативной памяти и сбора сведений о ПК.

          Реализовать меню, в котором пользователю предлагается выбор из трёх пунктов:

1 – сбор сведений о системе;

2 – тест памяти;

3 – выход.

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

          Пункт «тест памяти» должен осуществлять проверку ячеек памяти на работоспособность. Существует два типа неисправностей  ячеек памяти:

-     «постоянные нули»;

-     «постоянные единицы».

Вид неисправности «постоянные нули»  заключается в следующем: предположим, что бит №4 в байте, изображенном на рис. 1 – неисправный. В данный момент в байт записано число ноль (восемь нулей в двоичной системе cсчисления), если считать содержимое этого байта, то на выходе получиться ноль – вроде бы он исправен.

                          7    6     5     4     3     2     1     0

0 0 0 0 0 0 0 0

                                                рис. 1

Но это лишь только видимость, если в этот байт записать число FFh (восемь единиц в шестнадцатеричной системе счисления), что в двоичной системе счисления эквивалентно восьми единицам, то получится картина, представленная на рис. 2. В этом случае, если считать содержимое этого байта,  на выходе получиться EFh, то есть, записывая в бит №4 единицу, мы при считывании все равно получаем ноль. Следовательно бит № 4, а значит и байт, неисправен.

                          7    6     5     4     3     2     1     0

1 1 1 0 1 1 1 1

                                                рис. 2

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

          В связи с этим необходимо реализовать проверку ячеек памяти на два вида неисправностей: «постоянные нули» и «постоянные единицы».

          2.2. Описание структуры программы

          Программа была реализована с помощью нескольких пользовательских процедур и макросов (см. таблицу 2).

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

          Нередко бывает полезным предварительное(до начала трансляции) преобразование текста программы. Например, может потребоваться, чтобы какой-то фрагмент программы был продублирован несколько раз или чтобы в зависимости от некоторых условий в тексте программы были сохранены одни фрагменты и удалены другие. Подобную возможность предоставляют так называемые макросредства. Расширение языка ассемблера за счет этих средств обычно называют макроязыком.

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

Таблица 2          

Таблица процедур и макросов

Название Тип Назначение
Movcur Макрос Перемещает курсор
Clrscr Макрос Очищает экран
Print Макрос Выводит на экран строку
Press Макрос Реализует задержку
ShowQuestion Процедура Выводит на экран меню
SborSved Процедура Осуществляет сбор сведений
TestMem Процедура Осуществляет тест памяти

При выполнении программы на экран выводится аннотация, пользователь, ознакомившись с программой, нажимает на любую клавишу, и на экран выводится меню (с помощью процедуры ShowQuestion), в котором пользователь может выбрать интересующий его пункт меню:

Страницы: 1, 2, 3, 4


на тему рефераты
НОВОСТИ на тему рефераты
на тему рефераты
ВХОД на тему рефераты
Логин:
Пароль:
регистрация
забыли пароль?

на тему рефераты    
на тему рефераты
ТЕГИ на тему рефераты

Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое.


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.