Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Стек . Работа со стеком





Стеком называют область программы для временного хранения произвольных данных. Разумеется, данные можно сохранять и в сегменте данных, однако в этом случае для каждого сохраняемого на время данного надо заводить отдельную именованную ячейку памяти, что увеличивает размер программы и количество используемых имен. Удобство стека заключается в том, что его область используется многократно, причем сохранение в стеке данных и выборка их оттуда выполняется с помощью эффективных команд push и pop без указания каких-либо имен.

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

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

Элементы стека располагаются в области памяти, отведенной под стек, начиная со дна стека (т.е. с его максимального адреса) по последовательно уменьшающимся адресам. Адрес верхнего, доступного элемента хранится в регистре-указателе стека SP. Как и любая другая область памяти программы, стек должен входить в какой-то сегмент или образовывать отдельный сегмент. В любом случае сегментный адрес этого сегмента помещается в сегментный регистр стека SS. Таким образом, пара регистров SS:SP описывают адрес доступной ячейки стека: в SS хранится сегментный адрес стека, а в SP - смещение последнего сохраненного в стеке данного (смотрим рисунок). Обратите внимание на то, что в исходном состоянии указатель стека SP указывает на ячейку, лежащую под дном стека и не входящую в него.

 

32. Структуры и форматы команд МП intel 80 * 86. Команды пересылки данных

Основные команды могут иметь длину от 1 до 6 байт. Код операции всегда содержится в первом байте команды, а последующие байты, если они имеются, содержат адресную информацию. В этом микропроцессоре широко используется закрепление функций и режимов по умолчанию. Это позволяет экономить на длине команд и времени их выполнения.

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

Команды МП оперируют с операндами, хранящимися в памяти ЭВМ. Способы определения операнда называются режимом или способом адресации. В некоторых командах способ адресации операнда задается в первом байте команды, в других – информация о способе адресации содержится во втором байте команды, называемом постбайтом.

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

                 
                 
КОП OP1, OP2 MOD REG / OP R / M
                 

Поля MOD иR/M определяют первый операнд, полеREG/OP – второй. ОбычноOP1является приемником, аOP2 источником. В некоторых командах допускается изменение направления передачи данных. В таких командах в первом байте вводится полеd, определяющее направление передачи данных, если d=1 то в регистр, еслиd=0 то из регистра.

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

Регистр, используемый командой, задается в поле REG/OP номером и кодом операции первого байта, что позволяет использовать один и тот же номер для обозначения разных регистров.

Если команда оперирует с сегментными регистрами, то содержимое поля REG расценивается как номер сегментного регистра, иначе как номер регистра общего назначения. При этом, если команда может оперировать и байтом и словом, то в коде операции есть битW, который определяет длину операнда (W=0 - байт,W=1 - слово). Используемые регистры и их номера приведены в таблице 2.

Номер регистра Рег. общего назначения Сегмент. Регистры Короткий номер сегментного регистра
W = 1 W = 0
  AX AL ES  
  CX CL CS  
  DX DL SS  
  BX BL DS  
  SP AH    
  BP CH    
  SI DH    
  DI BH    

Операнд, указываемый полями MOD иR/M, определяется в соответствии с имеющим место режимом адресации. Все способы адресации операндов в памяти обеспечивают формирование 16-разрядного адреса внутри сегмента или, как принято называть в технической документации, эффективного адреса, который обозначают буквами ЕА.

По умолчанию в режимах адресации с привлечением регистра BP при получении физического адреса используется сегментный регистр SS, в остальных режимах адресации используется сегментный регистр DS.Чтобы изменить используемый сегментный регистр предусмотрена специальная однобайтовая команда – префикс замены сегмента.

Он имеет следующий формат:

               
               
      R E G      
               

где REG – короткий адрес сегментного регистра (см. таблицу 2).

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

Нельзя изменить сегментный регистр при:

  • чтении следующей команды (всегдаCS);
  • обращение к стеку с участием SP (всегдаSS);
  • цепочечных командах (сегментный регистр операнда-получателя всегда ЕS).

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

  • ни одного дополнительного байта;
  • двухбайтовый эффективный адрес (ЕА);
  • одно или двухбайтное смещение;
  • одно или двухбайтный непосредственный операнд;
  • одно или двухбайтное смещение и одно или двухбайтный непосредственный операнд;
  • двухбайтное смещение и двухбайтный сегментный адрес(только для прямого межсегментного перехода).

 

Date: 2016-05-24; view: 503; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию