Главная » Просмотр файлов » К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003)

К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (1114649), страница 20

Файл №1114649 К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003)) 20 страницаК. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (1114649) страница 202019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

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

В языке ассемблера конкретного компьютера регистр символов может учитываться, а может и не учитываться, то есть заглавные и прописные буквы в нем могут различаться, а могут не различаться. В этой книге для обозначения имен и меток мы будем использовать заглавные буквы, что, как вы понимаете, облегчит чтение команд. Например, команду Моте мы запишем так: МОЧЕ КО,ЗПМ Мнемоническое обозначение МОЧЕ представляет собой код операции, то есть двоичную последовательность, соответствующую данной операции. Ассемблер транслирует это обозначение в понятный компьютеру двоичный код операции.

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

Например, числовое значение или имя, явно заданное в приведенной выше команде как ЗПМ, может применяться для обозначения абсолютного режима адресации. Символ «№» обычно означает, что операнд указан непосредственно. Так, следую|цая команда АРО №5,КЗ прибавляет число 5 к содержимому регистра КЗ и в этот же регистр помещает результат. Использование символа «№» — не единственный способ обозначения непосредственной адресации. В некоторых языках ассемблера на непосредственную адресацию указывает мнемоническое обозначение самой команды. Например, приведенная выше команда сложения может быть записана так: А1ЗР1 5,КЗ 84 Глава 2. Машинные команды и программы Суффикс 1 в мнемоническом обозначении А1И)1 говорит о том, что исходный операнд команды задан непосредственно (1пппео1аге).

Косвенная адресация обычно обозначается с помощью скобок, в которые заключается имя операнда, или с помощью специального символа, обозначающего указатель на операнд. Например, если число 5 должно быть помещено в память по адресу, хранящемуся в регистре К2, соответствующее действие задается так: МОЧЕ Ф5,(К2) или так: МОУЕ1 5,(К2) В данном случае суффикс 1 указывает на косвенную адресацию (1пд1гесг).

2.6.1. Директивы ассемблера В дополнение к использованию механизма представления команд в программе язык ассемблера позволяет программистам задавать информацию совсем иного рода, необходимую для правильной трансляции исходной программы в объектную. Мы уже упоминали, что всем задействуемым в программе именам при трансляции назначаются числовые значения. Предположим, что имя 511М используется для представления значения 200. Для того чтобы сообщить об этом факте ассемблеру, нужно включить в исходную программу такую инструкцию: 51)М ЕЯ() 200 Эта инструкция не соответствует команде, которая будет выполнена при реализации объектной программы. Более того, в объектной программе ее вообще не будет.

Данная инструкция просто информирует ассемблер, что везде, где в программе встречается имя 51)М, оно должно быть заменено значением 200. Такие инструкции, называемые директивами ассемблера, используются при трансляции исходной программы в объектную. Давайте вернемся к программе, схематически представленной на рис. 2.12. Для того чтобы выполнить эту программу на компьютере, нужно написать ее исходный код на соответствующем языке ассемблера, задействовав всю информацию, необходимую для трансляции исходной программы в объектную. Предположим, что каждая команда и каждый элемент данных занимают по одному слову памяти.

Это упрощенное представление принято исключительно для данного примера. К тому же мы предположим, что память адресуется побайтово и что длина слова составляет 32 разряда. Объектная программа должна быть загружена в основную память, как показано на рис. 2.17. На этом рисунке указаны адреса памяти, по которым должны располагаться машинные команды и элементы данных после того, как программа будет загружена для выполнения.

Если ассемблер должен сгенерировать объектную программу в соответствии с этими условиями, ему необходимо знать: + как интерпретировать имена; + куда поместить команды в памяти; + куда поместить данные-операнды в памяти. 2.6. Язык ассемблера 85 100 104 108 1.ООР 112 116 120 124 128 132 811М 200 Х 204 Х11М1 208 ХУМ2 212 ХВМл 604 Рис.

2.17. Организация памяти для программы, представленной на рис. 2.12 Чтобы предоставить ассемблеру эту информацию, исходная программа должна быть подобна проиллюстрированной на рис. 2.18. Эта программа начинается с директив ассемблера. Мы уже обсуждали директиву ЕЧпаге, ЕЯ13, информирующую ассемблер о значении константы БПМ. Вторая директива, ОИС1Х, указывает ассемблеру, куда поместить следующий блок данных. В нашем случае это место памяти определяется адресом 204. По данному адресу должно быть загружено значение 100 (количество элементов в списке), о чем информирует директива ПАТА%'ОЕП.

Для каждой инструкции, в результате выполнения которой в память помещаются команда либо данные, должна быть задана метка. Она будет играть роль идентификатора, которому присваивается адрес соответствующего элемента в памяти. Поскольку директиве ПАТА%ОЕ1) назначена метка Х, имени Х будет присвоено значение 204. Когда это имя будет встречаться в оставшейся части программы, одно будет заменяться данным значением. Такое использование метки Х эквивалентно директиве ассемблера Х ЕОУ 204 Директива КЕБЕКттЕ объявляет, что блок памяти размером 400 байт резервируется для данных, а имя ХУМ1 будет ассоциироваться с адресом 208.

Такая директива не вызывает загрузки по указанному адресу каких-либо данных. Данные могут загружаться в память посредством процедуры ввода, описанной ниже. Еще одна директива ОК1С1Х указывает, что команды объектной программы должны загружаться в память по адресу 100. За ней следуют команды исходной программы, написанные в соответствии с мнемоникой и синтаксисом языка ассемблера. Последней инструкцией исходной программы является директива ЕХР, указываюшая ассемблеру на конец текста исходной программы.

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

Метки могут представлять и адреса данных в памяти. На рис. 2.18 вы видите пять меток: Я1М, Х, М1М1, ЕТАКТ и 1.ООР. Метка адреса в памяти Адресная информация или данные Операция Директивы ассемблера Х П1М1 Инструкции, на основе которых генерируются машинные команды 8ТАКТ 1.СОР Директивы ассемблера Рис. 2.18. Представление программы, приведенной на рис.

2Л7, на языке ассемблера Для каждой командьг или директивы ассемблера в поле «Операция» задается мнемоническое обозначение ее кода. В поле еОперандь содержится адресная информация для доступа к одному или нескольким операндам, что зависит от типа 86 Глава 2. Машинные команды и программы Метка Операция Операнд(ы) Комментарий ЕЯ11 ОК1С1Х ОАТАйгОКО КЕЕЕКЧЕ ОК1С1Х МОЧЕ МОЧЕ С1.К АРО АОП ПЕС ВСТХ МОЧЕ КЕТ11КХ 200 204 100 400 100 Х,К1 йХ11М1,К2 КО (К2),КО Ф4,К2 К1 1.ООР К0,811 М 2.6.

Язык ассемблера 87 команды. Поле «Комментарий» ассемблер просто игнорирует — оно предназначено для документирования программы и облегчения ее понимания. Мы обсудили лишь базовые характеристики языков ассемблера. Основополагающие элементы языка ассемблера у всех компьютеров одинаковы, но несмотря на это языки разных компьютеров имеют различную сложность и отличаются друг от друга многими деталями. 2.6.2.

Ассемблирование и выполнение программ Прежде чем исходную программу, написанную на языке ассемблера, можно будет выполнить, ее необходимо ассемблировать (транслировать) в объектную программу на машинном языке. Эта задача осуществляется программой-ассемблером, заменяющей все символические обозначения операций и адресных режимов двоичными кодами, используемыми в машинных командах, а все имена и метки — их настоящими значениями. Ассемблер присваивает командам и блокам данных адреса, начиная с адреса, заданного в директиве ОК101Х.

Эта директива отвечает за размещение по нужным адресам констант, которые могут быть заданы в директивах РАТМЧОКР, и резервирует память в соответствии с указаниями, содержащимися в директивах КЕБЕКЪ'Е. Важнейшим моментом процесса ассемблирования является определение значений, заменяющих имена. В тех случаях, когда значение имени определяется директивой ЕЯ11, это очень простая задача. Но если имя задается в поле «Метка» команды, представляемое им значение определяется положением этой команды в ассемблированной объектной программе. Поэтому в ходе формирования машинного кода ассемблер должен отслеживать адреса, по которым будут загружаться последовательные команды программы. Например, именам 5ТАКТ н 1.00Р будут назначены значения 100 и 112 соответственно.

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

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

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

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