Инфоурок Информатика Другие методич. материалыЛабораторная работа "Команды пересылки данных. Стек."

Лабораторная работа "Команды пересылки данных. Стек."

Скачать материал

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

Тема: «Команды пересылки данных. Стек.»

Цель работы:

·        изучение режимов адресации; 

·        изучение правил адресации при использовании регистров;

·        дать понятие о директивах определения данных;

·        понятие о стеке.

Ход работы:

1.     Изучить теоретическую часть

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

3.     Ответить на контрольные вопросы

4.     Предъявить преподавателю результаты работы: проект и исходный код

5.     Оформить отчет в соответствии с ходом работы

Теоретическая часть:

Во всех 16-битовых ЭВМ принимаются какие-либо меры для расширения адресного пространства памяти, т.к 16-битовый адрес позволяет адресоваться только к 64кб. Память разбивается на сегменты размером до 64кб. По умолчанию каждый сегмент начинается с границы параграфа (фрагмента памяти размером в 16 б). Физический адрес в памяти складывается из начального адреса сегмента и 16-битового смещения (исполнительного адреса, ЕА) в пределах сегмента.   Для получения физического начального адреса (ФА) содержимое сегментного регистра (начальный номер параграфа) умножается на 16, т.е дополняется справа четырьмя нулями:

ФА=ННП*16+смещение.

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

Адресации обычно делят на 7 групп (способов адресации):

1) регистровая; 2) непосредственная; 3) прямая; 4)косвенная регистровая; 5) базовая; 6) прямая с индексированием; 7) адресация по базе с индексированием (базовая индексная).

Способы адресации приведены в табл.1

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

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

Команда копирует содержимое источника (или сам источник, если это непосредственный операнд). В приёмник. При этом источник не изменяется. Возможны различные комбинации операндов: регистр-регистр, регистр-память, память-регистр и т.д. нельзя копировать командой mov содержимое ячейки памяти в другую, т.е. недопустима команда

mov word ptr [200],[300]

примечание. Оператор PTR позволяет в одной команде изменить тип переменной, в качестве типа используется ключевые слова BYTE, WORD, DWORD.

Для этого придется воспользоваться каким-нибудь промежуточным регистром, лучше всего АХ.

mov aх,[300]

mov [200],ax

Имеются также ограничения на операции пересылки с сегментными регистрами.

СТЕК

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

Под стек можно отвести область в любом месте памяти. Размер её может быть любым, но не должен превосходить 64кб, а её начальный адрес должен быть кратным 16. Другими словами, эта область должна быть сегментом памяти; он называется сегментом стека.  Начало этого сегмента (первые 16 битов начального адреса) должно обязательно храниться в сегментном регистре SS.

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

Запись слова в стек: PUSH opt

Здесь opt обозначает любой 16-битовый регистр (в том числе и сегментный) или адрес слова памяти. По этой команде значение регистра SP уменьшается на 2 (вычитание происходит по модулю 2^16), после чего указанное операндом слово записывается в стек по адресу SS:SP.

Чтение слова из стека: POP op

Слово, считанное из вершины стека, присваивается операнду op (регистру, в том числе сегментному, но не CS, или слову памяти), после чего значение SP увеличивается на 2.

 

Другими словами, для реального режима процессора связка сегмента ss указателем sp. Для защищенного режима просто указатель sp указывает на вершину, следовательно, маневры с сегментом делать не нужно.

Итак, стек работает наоборот то есть с верху вниз.

 Допустим, стек равен sp=20 после выполнения команды push ax он будит равен sp=18 и тд...  пушим регистр dx  и sp=16 при восстановление данных  вынимаем все что засунули  в обратном порядке так pop dx а затем только pop ax.

 

пример:

 

mov sp , 20

 

push ax  ; сохранение данных регистра

 

push dx  ; сохранение данных регистра

 

pop dx   ; восстановление данных регистра

 

pop ax   ; восстановление данных регистра

 

Т.е. когда мы что-нибудь «засовываем» в стек, указатель регистра sp значение уменьшается, а когда вытаскиваем – значение увеличивается, вытаскивать из стека данные нужно в обратной последовательности !

 

 

Адресация с примерами

В архитектуре МП 8086/8088 адрес любого байта задается двумя 16-битовыми словами - сегментом и смещением. При формировании 20-разрядного полного адреса, необходимого для адресации в пределах 1 Мбайт, сегмент сдвигается влево на 4 разряда (умножается на 16) и складывается со смещением. Поскольку емкость 16-разрядного смещения составляет 65536 значений, в пределах одного сегмента можно адресовать до 64 Кбайт.

Архитектура МП позволяет использовать семь различных способов адресации.

Регистровая 

Извлекает операнд из регистра или помещает его в регистр. Примеры:

mov ах,bх {Извлекаем из ВХ и помещаем в АХ} 

add cx,ax {Содержимое АХ прибавляем к СХ}

push ex {Заталкиваем в стек содержимое СХ}

Непосредственная

Операнд (8- или 16-разрядная константа) содержится непосредственно в теле команды. Примеры:

mov ax,100 {Загружаем в АХ значение 100}

add ax,5 {К содержимому АХ прибавляем 5} 

mov cx,$FFFF {Помещаем в СХ значение 65535}

Прямая

Смещение операнда задается в теле программы и складывается с регистром DS; например:

var

X: Word; В: Byte;

.......

mov ах,Х {Пересылаем значение переменной X регистр АХ} 

add ah,В {К содержимому регистра АН прибавляем значение переменной В}

mov X,ax {Пересылаем содержимое регистра АХ, в область памяти переменной X}

Косвенная регистровая

Исполнительный адрес операнда (точнее, его смещение) содержится в одном из регистров ВХ, ВР, SI или DI. Для указания косвенной адресации этот регистр должен заключаться в квадратные скобки, например:

mov ax,[bx] {Содержимое 16-разрядного слова, хранящегося в памяти по адресу DS:BX,пересылаем в регистр АХ};

Каждый из регистров BX...DI по умолчанию работает со своим сегментным регистром:

DS:BX, SS:BP, DS:SI, ES:DI

Допускается явное указание сегментного регистра, если он отличается от умалчиваемого, например:

mov ax,es:[bx]

Адресация по базе 

Базовый регистр ВХ (или ВР) содержит базу (адрес начала некоторого фрагмента памяти), относительно которой ассемблер вычисляет смещение, например:

mov ах,[Ьх]+10 {Загружаем в АХ 10-й по счету байт от начала базы памяти по адресу DS-.BX};

Индексная адресация

Один из индексных регистров SI или DI указывает положение элемента относительно начала некоторой области памяти. Пусть, например, АОВ - имя массива значений типа Byte. Тогда можно использовать такие фрагменты:

mov si,15 {Помещаем в SI константу 15}

mov ah,АОВ[si] {Пересылаем в АН 16-й по порядку байт от начала массива}

mov si,0

mov AOB[si],ah {Пересылаем полученное в самый первый элемент массива}

Адресация по базе с индексированием

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

mov ax,[bx][si]

Этот тип адресации удобен при обработке двумерных массивов. Если, например, АОВ есть массив из 10x10 байт вида

var

АОВ: array [0..9,0..9] of Byte;

то для доступа к элементу АОВ [2,3] можно использовать такой фрагмент

mov bx,20 {База строки 2}

mov si,2 {Номер 3-го элемента}

mov ax,AOB[bx] [si] {Доступ к элементу}

 

 

 

GЗадание 1. Подготовить измененное содержимое ds, es, ss. Написать нижеприведенную программу с именем lab3.asm, сделать исполняемый файл, и проследить за работой в турбоотладчике.

На основе работы программы в таблице 2, в графы 2 и 3 занести ожидаемые значения операндов:

 

Вы можете выполнить задание с помощью программы Emu8086. Дополнительная информация в файле !Emu8086.docx на сетевом диске.

Контрольные вопросы:

1.     Сколько режимов адресации существует, в чем разница?

2.     Приведите общий формат команды определения данных программ на Ассемблере.

3.     Назначение команды POP и PUSH, приведите общий формат команды, приведите пример использования этой команды.

4.     Назначение оператора PTR?

5.     Для чего нужен стек в программе?

6.     Способы определения сегментов памяти?

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Лабораторная работа "Команды пересылки данных. Стек.""

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Агроном

Получите профессию

Экскурсовод (гид)

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 664 016 материалов в базе

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 04.10.2016 2019
    • DOCX 1.1 мбайт
    • 18 скачиваний
    • Оцените материал:
  • Настоящий материал опубликован пользователем Ченская Ирина Борисовна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Ченская Ирина Борисовна
    Ченская Ирина Борисовна
    • На сайте: 8 лет и 1 месяц
    • Подписчики: 0
    • Всего просмотров: 112687
    • Всего материалов: 70

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

HR-менеджер

Специалист по управлению персоналом (HR- менеджер)

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

Теория и методика обучения информатике в начальной школе

Учитель информатики в начальной школе

300/600 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Сейчас обучается 96 человек из 34 регионов
  • Этот курс уже прошли 222 человека

Курс повышения квалификации

Организация преподавания информационных систем и технологий в профессиональном образовании

36 ч. — 180 ч.

от 1700 руб. от 850 руб.
Подать заявку О курсе
  • Этот курс уже прошли 75 человек

Курс повышения квалификации

Методика преподавания информатики в начальных классах

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Этот курс уже прошли 67 человек

Мини-курс

Влияние внешних факторов на психологическое развитие личности

4 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Управление персоналом и коммуникация в команде

6 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 33 человека из 18 регионов

Мини-курс

Основы образовательной политики и информатики

4 ч.

780 руб. 390 руб.
Подать заявку О курсе