Дать понятие о языке Ассемблера. Этапы разработки программы на Ассемблере.

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

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

Этапы:

1) Постановка и формулировка задачи:

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

-определение назначения программы, выработка требований к ней и представление требований, ели возможно, в формализованном виде;

-формулирование требований к представлению исходных данных и выходных результатов;

-определение структур входных и выходных данных;

-формирование ограничений и допущений на исходные и выходные данные.

2) Этап проектирования

-формирование «ассемблерной» модели задач;

-выбор метода реализации задачи;

-разработка алгоритма реализации задачи;

-разработка структуры программы в соответствии с выбранной моделью памяти.

3) Этап кодирования:

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

-программирование задачи;

-комментирование текста и составление предварительного описания программы.

4) Этап отладки и тестирования:

-составление тестов для проверки работоспособности программы;

-обнаружение, локализация и устранение ошибок в программе, выявленных в тестах;

-корректировка кода программы и ее описания.

5) Этап эксплуатации и сопровождения:

-настройка программы на конкретные условия использования;

-обучение пользователей работе с программой;

-организация сбора сведений о сбоях в работе программы, ошибках в выходных данных, пожеланиях по улучшению интерфейса и удобства работы с программой;

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

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

Для исполнения программы на ассемблере необходимо пройти следующие этапы:

1) ввести команды программы в компьютер с помощью редактора;

2) оттранслировать программу с помощью Ассемблера;

3) преобразовать результат работы Ассемблера в исполняемый модуль с помощью загрузчика (провести компоновку);

4) выполнить (вызвать на исполнение полученный исполняемый модуль).

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

Команды представляют собой краткую нотацию системы команд микропроцессора, а псевдооператоры сообщают ассемблеру, что ему делать с командами и данными, которые вы вводите.

Каждая команда может иметь до четырех полей вида:

[Метка:] Мнемокод [Операнды] [;Комментарий ]

В квадратных скобках указываются необязательные поля. Метка и операнды указываются, когда требуются, комментарий ставится только для пояснений (если они необходимы)

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

Мнемокод содержит собственно наименование команды микропроцессора. Например, MOV – имя команды пересылки данных (move – переместить), или ADD – имя команды сложения (add – сложить).

В поле операндов сообщается микропроцессору, еде найти данные, подлежащие обработке. Например, в команде MOV CX,DX указывается, что содержимое регистра DX надо скопировать в регистр CX. Заметим, что если имеется два операнда, то первый из них есть приемник, а второй – источник.

15. Команда пересылки, арифметические команды и директивы определения данных на Ассемблере.

КОМАНДЫ ПЕРЕСЫЛКИ ДАННЫХ:

MOV приемник, источник.

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

XCHGоперанд1,операнд2.

Команда меняет местами содержимое регистров.

АРИФМЕТИЧЕСКИЕ КОМАНДЫ:

Команда сложения: ADD приемник, источник.

Выполняется она так: приемник складывается с источником и результат помещается в приемник.

INC источник –увеличение источника на 1;

DEC источник – уменьшение источника на 1.

Команда вычитания: SUB приемник, источник.

Выполняется так: из приемника вычитается источник и результат помещается в приемник.

Команда умножения: MUL источник

Действует она так:

а) при умножении байтов: Содержимое регистра AL умножается на источник и результат помещается в AX (AH – старший байт результата, AL –младший байт результата).

б) при умножении слов: Содержимое регистра AX умножается на источник и результат помещается в DX (старшее слово результата) и в AX (младшее слово).

Команда деления: DIV источник

а) при делении на байт (в операнде источнике). Делимое берется из AX и частное возвращается в регистре AL, а остаток – в регистре AH;

б) при делении на слово (в операнде источнике). Делимое берется из DX и AX и частное возвращается в регистре AX, а остаток – в DX.

ДИРЕКТИВЫ.

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

[имя] название директивы [операнды]

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

Директивы определения данных:

- директива DB (определяет данные размером в байт)

- директива DW (определяет данные размером в слово- 2 байта)

- директива DD (определяет данные размеров в двойное слово - 4 байта)

- Директива эквивалентности и присваивания: <имя> EQU <операнд> Директива описывает константу. Указанному операнду дается указанное имя. При ассемблировании все вхождения указанного имени будут заменены на операнд.

16. Безусловный переход, команда сравнения и условного перехода и команда управления циклом на Ассемблере.

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

БЕЗУСЛОВНЫЙ ПЕРЕХОД (jump): JMP op

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

УСЛОВНЫЙ ПЕРЕХОД

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

СРАВНЕНИЕ

Наши рекомендации