Последние публикации
стили и дизайн Что выгоднее: покупать горячую воду или ..
17-03-2014
секрет успеха Профессия: риэлтор
25-12-2013
разное Мегаталантливый Мэрилин Мэнсон
25-12-2013
рыбалка и охота баллистический маятник
12-07-2013
Название
Автор
Рубрика

Анекдот
- Мама, можно мне пописать?
- А ты уроки сделал?
компьютерные технологии
Язык Макроассемблера IBM PC
В пособии рассматривается язык макроассеблера для персональных ЭВМ типа IBM PC (язык MASM, версия 4.0) .

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


SP. ----- ----- ---- SS: SP | | SS: SP | | SS: SP | | | ----- запись | ----- чтение | ---- | | | =======> ---->| b | =======> | | | | ----- в стек ----- из стека | ---- ----->| a | | a | ---->| a | ----- ----- ----


Значение 0 в регистре SP свидетельствует о том, что стек полностью заполнен (его вершина "дошла" до начала области стека) . Поэтому для контроля за переполнением стека надо перед новой записью в стек проверять условие SP=0 (сам ПК этого не делает) . Для пустого стека значение SP должно равняться размеру стека, т.е. пара SS: SP должна указывать на байт, следующий за последним байтом области стека. Контроль за чтением из пустого стека, если надо, обязана делать сама программа.


Начальная установка регистров SS и SP может быть произведена в самой программе, однако в MASM предусмотрена возможность автоматической загрузки этих регистров. Если в директиве SEGMENT, начинающей описание сегмента стека, указать параметр STACK, тогда ассемблер (точнее, загрузчик) перед тем, как передать управление на первую команду машинной программы, загрузит в регистры SS и SP нужные значения. Например, если в программе сегмент стека описан следующим образом: ST SEGMENT STACK DB 256 DUP(?) ;размер стека - 256 байтов ST ENDS и если под этот сегмент была выделена область памяти начиная с абсолютного адреса 12340h, тогда к началу выполнения программы в регистре SS окажется величина 1234h, а в регистре SP - величина 100h (=256) .


Отметим, что эти значения соответствуют пустому стеку.


1.7.2 Основные стековые команды


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


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



Дата публикации: 15-06-2007
Прочитано: 7677 раз
Страниц: 28
-26-
[<][ 1 | ... | 26 | 27 | 28 ][>]

Дополнительно на данную тему
Компьютерные сети и телекоммуникации
Корпоративная сеть
Корпоративные ЛВС
Компьютерные сети
Turbo Vision
   
Рейтинг@Mail.ru
ENQ.ru © 2005-2012
Генерация страницы: 0.038 сек. и
11 запросов к базе данных за 0.004 сек.
Designed by ZmEi