
- •Лабораторная работа № 1
- •1. Цель и задача работы
- •2.1. Архитектура компьютера
- •2.2. Описание частей программы на языке ассемблера
- •2.3. Процедуры формирования исполняемой программы
- •3. Методика выполнения работы
- •4. Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа № 2 режимы адресации
- •1. Цель и задача работы
- •2. Основные теоретические сведения
- •3. Методика выполнения работы
- •4. Порядок выполнения работы
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа № 3 программирование ветвлений
- •1. Цель и задача работы
- •2. Основные теоретические сведения
- •2.1. Команды условного перехода
- •2.2. Команда безусловного перехода
- •3. Методика выполнения работы
- •4. Порядок выполнения работы
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа № 4 команды цикла и их использование в программах обработки
- •1. Цель и задача работы
- •2. Основные теоретические сведения
- •2.1. Арифметические операции над целыми числами
- •2.2. Организация циклов
- •3. Методика выполнения работы
- •4. Порядок выполнения работы
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа № 5 команды ввода-вывода на экран дисплея и их использование в программах обработки
- •1. Цель и задача работы
- •2. Основные теоретические сведения
- •2.1. Метод подъема
- •2.2. Команды прерывания
- •3. Методика выполнения работы
- •4. Порядок выполнения работы
- •Контрольные вопросы
- •Варианты заданий
- •Приложение в
Лабораторная работа № 1
ТРАНСЛЯЦИЯ, КОМПОНОВКА И ОТЛАДКА ПРОГРАММ
1. Цель и задача работы
Целью работы является освоение инструментальных средств создания программ на языке ассемблера и получение начальных навыков трансляции, компоновки и отладки программ.
Задача работы состоит в изучении процедур формирования исполняемой программы на заданном примере.
2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
2.1. Архитектура компьютера
Структурные схемы компьютеров мало чем отличаются у разных моделей компьютеров: все компьютеры имеют оперативную память, процессор, внешние устройства. Различными являются способы, средства и используемые ресурсы, с помощью которых компьютер функционирует как единый механизм. Совокупность функциональных программно-управляемых свойств компьютера называют архитектурой.
Архитектура ЭВМ – это абстрактное представление ЭВМ, которое отражает структурную, схемотехническую и логическую организацию. Приступить к изучению языка ассемблера любого компьютера имеет смысл только после выяснения того, какая часть из вышеперечисленных аспектов архитектуры оставлена видимой и доступной для программирования. Это так называемая программная модель компьютера. В приложении А приведена программная модель микропроцессора Intel (Pentium III) [1]. Как видно из приведенной модели, ее основу составляют регистры общего назначения, состояния и ряд других. В разных моделях компьютеров одной и той же фирмы-производителя количество и разрядность регистров могут существенно изменяться. Но в качестве базовой модели для языка программирования микропроцессоров Intel используется 14-регистровая система, на которой остановимся далее подробнее.
Универсальные регистры AX, BX, CX, DX имеют разрядность 16 бит (2 байта) и могут использоваться для временного хранения любых данных, при этом можно работать с каждым регистром целиком, а можно отдельно с каждым его байтом. Старшие байты РОН имеют имена AH, BH, DH, CH, а младшие – AL, BL, DL, CL. Регистры AL, AH образуют соответственно младший и старший байты условного регистра AX.
В микропроцессорах Intel программы и данные хранятся в отдельных областях памяти - сегментах, с объемом до 64 КБ (килобайт). Одновременно микропроцессор может иметь дело с 4 сегментами, начальные адреса которых содержатся в сегментных регистрах CS, DS, SS, ES. Эти регистры выполняют следующие функции:
- регистр сегмента команд CS указывает на сегмент, содержащий текущую исполняемую программу. Для вычисления адреса следующей подлежащей исполнению команды процессор складывает значение CS умноженное на 16 с указателем команд IP;
- регистр сегмента стека SS указывает на текущий сегмент стека - области памяти предназначенной для временного хранения данных и адресов;
- регистр сегмента данных DS указывает на текущий сегмент данных, который обычно содержит используемые в программе переменные и константы;
- регистр дополнительного сегмента ES указывает на текущий дополнительный сегмент, который используется при выполнении операций над строками.
Регистры указателей также, как и сегментные регистры, предназначены для хранения составных частей адресов.
Регистр IP содержит смещение в сегменте кодов следующей команды, подлежащей исполнению, иначе говоря, абсолютный адрес следующей команды программы в виде сегмент:смещение определяется как CS:IP.
Регистр SP хранит значение смещения, которое вместе с регистром SS указывает на текущее слово в стеке (вершина стека).
Регистр BP обрабатывает ссылочные параметры (данные и адреса), которые передаются между программой и подпрограммой через стек. Процессор сочетает смещение BP с адресом в SS.
Регистры индексов SI и DI используются для индексированной адресации, а также в строковых операциях.
Следует отметить, что регистр ВХ – единственный из РОН – можно использовать в качестве указателя (индекса) для расширения адресации. С это целью он может использоваться в сочетании с регистрами SI и DI.
Регистр флагов FL представляет собой 16-битовый регистр, где фиксируется информация о текущем состоянии процессора.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
|
|
|
OF |
DF |
IF |
TF |
SF |
ZF |
|
AF |
|
PF |
|
CF |
Рис. 1 – Расположение флагов в регистре FL
Наиболее часто используемые флаги (арифметические):
- OF называется флагом переполнения и OF=1 свидетельствует о наличии ошибки в операциях над числами со знаком;
- SF- флаг знака- устанавливается в 1, если в результате выполнения операции над числами со знаком, получается отрицательное число;
- ZF (zero flag) устанавливается в 1, если результатом операции является нулевое значение;
- АF -флаг вспомогательного переноса - используется в двоично-десятичной арифметике. Этот флаг устанавливается в 1, если результат такой операции не является десятичной цифрой;
- РF называется флагом четности и устанавливается в 1, если результат операции имеет четное количество битов, равных 1, в двоичном представлении результата;
- СF называется флагом переноса и в него заносится перенос (или заем) из знакового (старшего) разряда числа.