Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB3.doc
Скачиваний:
5
Добавлен:
12.04.2015
Размер:
162.3 Кб
Скачать

11

Лабораторная работа №3

ПРОГРАММИРОВАНИЕ ВЛОЖЕННЫХ ЦИКЛОВ.

1.1 Цель лабораторной работы:

Освоение базово-индексной и базово-индексной со смещением адресаций при работе с 2-мерными массивами, а также форм записи базово-индексной адресаций; изучение способов организации циклов.

1.2 Задание

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

  2. Получите файл листинга программы .LST.

  3. Выпишите машинные коды команд : JMP,JZ,LOOP,PUSH,POP.

1.3 Содержание отчета

  • титульный лист;

  • задание;

  • граф-схема решения задачи;

  • текст программы в виде распечатанного .LSTфайла с комментариями;

  • результаты работы программы (.CRFфайл, состояния регистров, дампы (dump) памяти;

  • машинные коды требуемых команд.

2. Основные понятия

Как и во всяком языке программирования, обработка массивов выполняется с помощью циклических конструкций. В Ассемблере существует 2 способа организации циклов:

  1. цикл со счетчиком организуется с помощью команды LOOP;

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

2.1 Циклы со счетчиком

В свою очередь циклы с постусловием делятся на циклы с постоянным и переменным кол-вами повторений

LOOP –цикл с постоянным кол-вом повторений

Команда

Синтаксис

Действие

LOOP

LOOP <метка>

СХ является счетчиком повторений, LOOP декрементирует СХ, и если СХ0, то IP= <метка>; если же СХ=0,тогда IP= IP+1. CХ- беззнаковое число, <метка> расположена в диапазоне -127128.

LOOPZLOOPNZ –цикл с переменным кол-вом повторений

Команда

Синтаксис

Действие

LOOPE/ LOOPZ

(Сино- нимы)

LOOPE <метка>

Цикл, пока равно, но не более СХ раз. СХ является счетчиком повторений, LOOPЕ сначала проверяет флаг ZF: если ZF=1, то декрементируется СХ , и если СХ0, то IP= <метка>; если же ZF=0,тогда IP= IP+1 вне зависимости от СХ. CХ- беззнаковое число, <метка> расположена в диапазоне -127128.

LOOPNE/ LOOPNZ

(Сино-нимы)

LOOPNE <метка>

Цикл, пока не равно, но не более СХ раз. СХ является счетчиком повторений, LOOPNЕ сначала проверяет флаг ZF: если ZF=0, то декрементируется СХ , и если СХ0, то IP= <метка>; если же ZF=1,тогда IP= IP+1 вне зависимости от СХ. CХ- беззнаковое число, <метка> расположена в диапазоне -127128.

Общим недостатком LOOPLOOPZLOOPNZявляется ограничение на длину диапазона в пределах -127128 байт.

Пример 1.Граф-схема цикла со счетчиком (рис.1)

Рис.1

имеет следующий шаблон на Ассемблере:

movcx,m;m- кол-во повторений

met:……………

push cx

……………

pop cx

loopmet

Примечание: При необходимости использования в теле цикла регистраCXего содержимое сохраняется в стеке, а перед командойLOOP– обязательно восстанавливается из стека.Metявляется адресом (меткой) перехода. Символ “:” - служебный, обозначающийпрямой ближний переход, т.е. переход в пределах текущего сегмента кода. Следовательно,TASMрезервирует подmet8 бит.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]