Главная » Просмотр файлов » Э. Таненбаум - Архитектура компьютера

Э. Таненбаум - Архитектура компьютера (1127755), страница 198

Файл №1127755 Э. Таненбаум - Архитектура компьютера (Э. Таненбаум - Архитектура компьютера) 198 страницаЭ. Таненбаум - Архитектура компьютера (1127755) страница 1982019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Отрицательное возвращенное значение свидетельствует о том, что вызов завершился ошибкой. Перед началом выполнения программы открываются три файла с дескрипторами: 0 для стандартного ввода, 1 для стандартного вывода и 2 для стандартного вывода ошибок. У вызовов МЕАО и ИМ1ТЕ три аргумента: дескриптор файла, буфер, в котором хранятся данные, и число передаваемых байтов.

Поскольку аргументы размещаются в стеке в обратном порядке, сначала в стек вводится число байтов, затем— адрес начала буфера, далее — дескриптор файла, и наконец — номер вызова (МЕАО или ИМ1ТЕ). Этот порядок размещения аргументов в стеке аналогичен стандартной последовательности вызова в языке 02 геайтз, Ьаутег, ЬуЬем: Эта команда реализуется путем введения в стек параметров в следующем порядке: Ьутез, ЬиТТег, Еб У вызова СЕО5Е один аргумент — дескриптор файла.

При успешном закрытии файла он возвращает значение 0 в регистре АХ. Вызов ЕХ1Т требует сохранения в стеке статуса выхода и не возвращает значение. Вызов 15ЕЕК изменяет указатель чтения-записи в открытом файле. Первым аргументом здесь выступает дескриптор файла. Поскольку второй аргумент является длинным словом, в стек сначала помещается старшее слово, а затем младшее — даже в том случае, если смещение умещается в одном слове.

Третий аргумент определяет метод вычисления нового значения указателя чтения-записи: относительно начала файла (0), текущего положения (1) или конца файла (2). Возвращаемое Набор команд 8088 779 значение определяет новое положение указателя относительно начала файла; в формате длинного слова оно сохраняется в комбинации регистров ОХ: АХ, Перейдем к функциям, не являющимся системными вызовами. Функция 6ЕТСНАМ считывает один символ из файла стандартного ввода н помегдает его в регистр АЕ; при этом значение АН обнуляется.

Прн ошибке слово в регистре АХ целиком приравнивается к значению — 1. Вызов РОТСМАН записывает один байт в файл стандартного вывода. Выводимым значением при успешной записи является именно этот байт; при ошибке выводится — 1. Вызов РМ1МТГ выводит отформатированные данные. Первым аргументом служит адрес форматной строки, задающей формат выводимых данных. Строка Ы указывает на то, что следующим аргументом является целое число в стеке, которое при выводе преобразуется в десятичное представление.

Аналогичным образом, строка Фх осуществляет преобразование в шестнадцатеричное, а ло — в восьмеричное представление. Строка 1з определяет следующий аргумент как строку с завершающим нулем, которая при вызове передается с помощью адреса в стеке. Количество дополнительных аргументов в стеке должно соответствовать количеству указателей преобразования в форматной строке.

Например: рю пГГ(??х =. ФЛ зпЛ у = Гп~п??, х. у Х Этот вызов заменяет при выводе численные значения х н у строками 18 из форматной строки. В целях совместимости с языком С в стеке сначала размещается аргумент у, затем — х, и в завершение — адрес форматной строки. Это соглашение обуславливается тем, что у процедуры рг1пСТ переменное число параметров, и при условии их размещения в стеке в обратном порядке форматная строка всегда остается последней. Если бы параметры размегпались в стеке слева направо, форматная строка оказалась бы слишком глубоко, и процедура рг1 пав? не смогла бы ее обнаружить.

Первым аргументом вызова 5РМ1МТГ является буфер, в который направляется выходная строка (в отличие от РЙ1МТГ, где строка попадает в файл стандартного вывода). Остальные аргументы аналогичны тем, что применяются в РМ1МТР. Вызов 55САМГ в определенном смысле противоположен РМ1МТà — первым аргументом здесь является строка, которая может содержать целые числа в десятичном, восьмеричном нли шестнадцатеричном представлении, а вторым — форматная строка с указателями преобразования.

Могут быть и другие аргументы — адреса слов памяти, принимающие преобразованные данные. Все упомянутые системные подпрограммы весьма разностороннн, но подробный анализ их возможностей мы проводить не будем. В разделе «Примеры > есть несколько примеров, демонстрирующих их применение в различных ситуациях. Заключительные замечания о наборе команд В официальной спецификации набора команд 8088 предусмотрен префикс перекрытия сегмента, который позволяет применять действительные адреса из других сегментов; первый адрес в памяти, следующий за префиксом перекрытия, вычисляется при помощи указанного сегментного регистра. К примеру: Е5ЕБ ИОЧ Щ ДВХ) 780 Приложение В.

Программирование на языке ассемблера Эта команда сначала вычисляет адрес ВХ, используя для этого дополнительный сегмент, а затем перемещает содержимое в регистр ОХ. В то зке время, ни стековый сегмент (в случае адресации с использованием регистра 5Р), ни дополнительный сегмент (в отношении строковых команд, оперирующих регистром 01) перекрыть нельзя. Сегментные регистры 55, 05 и Е5 могут быть задействованы в команде ИОУ, но переместить непосредственные данные в сегментный регистр нельзя, в а операции ХСНВ эти регистры не используются. Менять сегментные регистры и практиковать перекрытие довольно сложно, и по возможности этих методов в программировании лучше избегать.

Так как интерпретатор работает с фиксированными сегментными регистрами, здесь подобных проблем не возникает. Команды выполнения операций с плавающей точкой предусмотрены в большинстве компьютеров. Иногда они выполняются в процессоре, иногда — в сопроцессоре. Бывает и так, что они лишь программно интерпретируются при помощи специального исключения. Более детально эту тему мы развивать не будем. Ассемблер Итак, мы закончили обсуждение архитектуры 8088.

Данный раздел посвящен программному обеспечению, позволяющему программировать процессор 8088 на языке ассемблера, в частности, тем инструментальным средствам, которые мы предлагаем в качестве основы для обучения программированию на этом языке. Сначала мы рассмотрим ассемблер (программу ассемблирования), затем — трассер (программу трассировки) и наконец обсудим некоторые практические моменты их применения. Введение До настоящего момента мы обозначали команды их мнемониками — краткими и легкими для запоминания символическими именами, как то АОО или СИР.

Регистры также назывались символическими именами — АХ, ВР н т. д. Программа, написанная с применением символических имен команд и регистров, называется программой на языке ассемблера, нлн просто ассемблерной программой. Чтобы выполнить такую программу, в первую очередь необходимо преобразовать ее в двоичные числа, с которыми работает процессор. Прикладная программа, которая осуществляет такое преобразование, называется ассемблером. То, что получается в результате работы этой программы (то есть в результате ассемблирования), называется объектным файлом.

Многие программы выполняют вызовы уже ассемблированных подпрограмм, хранящихся в библиотеках. Чтобы такие программы могли выполняться, ассемблированный объектный файл и библиотечные подпрограммы, к которым он обращается (а они также существуют в виде объектных файлов), необходимо объединить в исполняемый двоичный файл. Эту операцию проводит специальная программа, называемая компоновщиком. Ассемблирование считается полностью завершенным лишь после сборки компо- Ассемблер 781 новщиком исполняемого двоичного файла из одного или нескольких объектных файлов.

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

Для определения этих значений ассемблер проводит построчный анализ программы, называемый первым проходом. Во время этого прохода он отслеживает показания счетчика адресов, который обычно обозначается точкой. При обнаружении на первом проходе каждой команды или операции резервирования памяти счетчик адресов увеличивается на величину, которая выражает объем памяти, необходимый для размещения данного элемента.

Таким образом, если первые две команды занимают 2 и 3 байта соответственно, то метка третьей команды принимает численное значение 5. К примеру, если следующий фрагмент кода находится в начале программы, значением метки ~ будет 5: ИОН АХ.б МОН 0Х.500 В начале второго прохода численные значения всех символов уже известны. Так как численные значения мнемонических кодов команд постоянны, становится возможной генерация кода. Команды вновь считываются одна за другой, и их двоичные значения записываются в объектный файл.

После ассемблирования последней команды создается объектный файл. Ассемблер аа88 из набора АСК В этом подразделе мы подробно обсудим ассемблер/компоновщик аз88, который вместе с трассером поставляется на сопроводительном компакт-диске и имеется также на веб-сайте, посвященном книге. Этот ассемблер, входящий в набор АСК (Ашз0егх1аш Сошр)1ег Кй), больше похож на ассемблеры ()Ь11Х, чем на аналогичные продукты для М8-1)О8 и Юпзх)оп з. Символом комментария в нем является знак восклицания (!). Все символы, следующие за знаком восклицания вплоть до конца строки, считаются комментарием и не влияют на объектный файл.

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

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

Тип файла
DJVU-файл
Размер
13,7 Mb
Тип материала
Высшее учебное заведение

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

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