Главная » Просмотр файлов » Максимов Н.В., Партыка Т.Л., Попов И.И. Архитектура ЭВМ и вычислительных систем (2005)

Максимов Н.В., Партыка Т.Л., Попов И.И. Архитектура ЭВМ и вычислительных систем (2005) (1186253), страница 80

Файл №1186253 Максимов Н.В., Партыка Т.Л., Попов И.И. Архитектура ЭВМ и вычислительных систем (2005) (Максимов Н.В., Партыка Т.Л., Попов И.И. Архитектура ЭВМ и вычислительных систем (2005)) 80 страницаМаксимов Н.В., Партыка Т.Л., Попов И.И. Архитектура ЭВМ и вычислительных систем (2005) (1186253) страница 802020-08-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 80)

Пусть надо переписать 10 000 байтов начиная с адреса Ав другое место памяти начиная с адреса в. Если оба этих имени относятся к сегменту данных, на начало которого указывает регистрDS, тогда эту пересылку можно сделать так:CLDMOVMOVMOVLEALEAREP;DF:=0 (просмотр строки вперед)СХ,1000 /СХ - число повторенийAX,DSES,AX ;ES:=DSSI,A ;ES:SI - «откуда»DI,B ;DS:DI - «куда»MOVSB /пересылка СХ байтов410Глава 4. Персональные компьютерыСтек. ПодпрограммыСтек. В 180X86 имеются специальные команды работы со стеком, т.

е. областью памяти, доступ к элементам которой осуществляется по принципу «последним записан — первым считан» (рис. 4.16).Но для того чтобы можно было воспользоваться этими командами,необходимо соблюдение ряда условий.Дно стекаFCF8"F4FOЕСЕ8"Е4Параметры*4—EBP = FFFFFFFO/Локальныепеременные•«— ESP=FFFFFFE4Рис. 4.16. Структура стековой памятиВо многих случаях программе требуется временно запомнитьинформацию, а затем считывать ее в обратном порядке.

Эта проблема в ПК решена посредством реализации стека LIFO («последним пришел — первым ушел»), называемого также стекомвключения/извлечения (stack — кипа, например бумаг). Наиболееважное использование стека связано с процедурами. Стек обычнорассчитан на косвенную адресацию через регистр SP — указательстека. При включении элементов в стек производится автоматическое уменьшение указателя стека, а при извлечении — увеличение, т. е. стек всегда «растет» в сторону меньших адресов памяти.Адрес последнего включенного в стек элемента называется вершиной стека (тоз).Под стек можно отвести область в любом месте памяти.

Размерее может быть любым, но не должен превосходить 64 Кб, а начальный адрес должен быть кратным 16. Другими словами, эта областьдолжна быть сегментом памяти (сегмент стека). Начало этого сегмента (первые 16 битов начального адреса) должно обязательно храниться в сегментном регистре SS.Хранимые в стеке элементы могут иметь любой размер, однакоследует учитывать, что в 180X86 имеются только команды записи в4.3. Режимы процессора. Система команд процессоров 180x86...411стек и чтения из него слов. Поэтому для записи байта в стек егонадо предварительно расширить до слова, а запись или чтение двойных слов осуществляются парой команд.В 180X86 принято заполнять стек снизу вверх, от больших адресов к меньшим: первый элемент записывается в конец области, отведенной под стек, второй элемент — в предыдущую ячейку областии т.

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

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

пара SS:SP должна указывать на байт, следующий за последним байтом области стека. Контроль за чтениемиз пустого стека, если это необходимо, должна делать сама программа.Начальная установка регистров SS и SP может быть произведенапрограммой, однако в MASM предусмотрена возможность автоматической загрузки этих регистров. Если в директиве SEGMENT, начинающей описание сегмента стека, указать параметр STACK, тогда ассемблер (точнее, загрузчик) перед тем, как передать управление напервую команду машинной программы, загрузит в регистры SS и SPнужные значения.

Например, если в программе сегмент стека описан следующим образом:ST SEGMENT STACKDB 256 DUP(?) /размер стека - 256 байтовST ENDSи если под этот сегмент была выделена область памяти начиная сабсолютного адреса 1234Oh, тогда к началу выполнения программыв регистре ss окажется величина I234h, а в регистре SP — величинаlOOh (=256).Отметим, что эти значения соответствуют пустому стеку.О с н о в н ы е с т е к о в ы е к о м а н д ы . При соблюдении указанных требований в программе можно использовать команды,412Глава 4. Персональные компьютерыпредназначенные для работы со стеком.

Основными из них являются следующие.1. Запись слова в стек:PUSHopЗдесь op обозначает любой 16-битовый регистр (в том числесегментный) или адрес слова памяти. По этой команде значение регистра SP уменьшается на 2 (вычитание происходит по модулю 2 16 ),после чего указанное операндом слово записывается в стек по адресу SS:SP.2. Чтение слова из стека:POP opСлово, считанное из вершины стека, присваивается операнду ор(регистру, в том числе сегментному, но не CS, или слову памяти),после чего значение SP увеличивается на 2.3. Переход с возвратом:CALLopЭта команда записывает адрес следующей за ней команды в стеки затем делает переход по адресу, определяемому операндом ор. Онаиспользуется для переходов на подпрограммы с запоминанием в стеке адреса возврата.

Имеются следующие разновидности этой команды (они аналогичны вариантам команды безусловного перехода JMP):• внутрисегментный относительный длинный переход (ор — непосредственный операнд размером в слово, а в MASM — этометка из текущего сегмента команд или имя близкой процедуры (см. ниже)); в этом случае в стек заносится только текущее значение счетчика команд IP, т.

е. смещение следующейкоманды;• внутрисегментный абсолютный косвенный переход (ор — адресслова памяти, в которой находится адрес (смещение) той команды, на которую и будет сделан переход); и здесь в стек записывается только смещение адреса возврата;• межсегментный абсолютный прямой переход (ор — непосредственный операнд вида s e g : o f s , а в MASM — это FAR PTR<метка> или имя дальней процедуры); здесь в стек заносятсятекущие значения регистров CS и IP (первым в стек записывается содержимое CS), т. е. абсолютный адрес возврата, послечего меняются регистры CS и IP;4.3. Режимы процессора.

Система команд процессоров 180x86...413• межсегментный абсолютный косвенный переход (ор — адресдвойного слова, в котором находится пара s e g : o f s , задающаяабсолютный адрес перехода), и здесь в стеке спасается содержимое регистров CS и IP.4. Переход (возврат) по адресу из стека:RET opИз стека считывается адрес и по нему производится переход.Если указан операнд (а это должно быть неотрицательное число), топосле чтения адреса стек еще очищается на это число байтов (к SPдобавляется это число).

Команда используется для возврата из подпрограммы по адресу, записанному в стек по команде CALL при вызове подпрограммы, и одновременной очистки стека от параметров,которые основная программа занесла в стек перед обращением кподпрограмме.Команда RET имеет две разновидности (хотя в MASM они одинаково записываются):• в первом случае из стека считывается только одно слово —смещение адреса возврата;• во втором — из стека считывается пара s e g r o f s , указывающая абсолютный адрес возврата.

Каким образом ассемблеропределяет, какой случай имеет место, объяснено ниже.В 180X86 стек в основном используется для организации подпрограмм и прерываний. Однако даже если программе не нуженстек, она все равно должна отвести под него место. Дело в том, чтостеком будет неявно пользоваться операционная система при обработке прерываний, которые возникают (например, при нажатииклавиш на клавиатуре) в то время, когда выполняется программа.Для нужд ОС рекомендуется выделять в стеке 64 байта.Прерывания. Иногда необходимо выполнить одну из набораспециальных процедур, если в системе или в программе возникаютопределенные условия, например, нажата клавиша на клавиатуре.Действие, стимулирующее выполнение одной из таких процедур,называется прерыванием, поскольку основной процесс при этомприостанавливается на время выполнения этой процедурыСуществует два общих класса прерываний: внутренние и внешние.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее