7_Язык Ассемблера (В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования)

PDF-файл 7_Язык Ассемблера (В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования) Практика расчётов на ПЭВМ (37036): Книга - 1 семестр7_Язык Ассемблера (В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования) - PDF (37036) - СтудИзба2019-04-28СтудИзба

Описание файла

Файл "7_Язык Ассемблера" внутри архива находится в папке "В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования". PDF-файл из архива "В.Г. Баула - Введение в архитектуру ЭВМ и системы программирования", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 1 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

Глава 7. Язык Ассемблера7.1. Понятие о языке АссемблераНаличие большого количества форматов данных и команд в архитектурах некоторых современных ЭВМ приводит к дополнительным существенным трудностям при программировании на машинном языке. Для упрощения процесса написания программ для ЭВМ был разработан языкпосредник, названный Ассемблером,1 который, с одной стороны, должен допускать написание любых машинных программ, а с другой стороны – позволять автоматизировать процесс составленияпрограмм в машинном коде. Для перевода с языка Ассемблера на язык машины2 используется специальная программа-переводчик, также называемая Ассемблером (от английского слова "assembler"– "сборщик"). В зависимости от контекста, мы, если это не будет вызывать неоднозначности, в разных случаях под словом "Ассемблер" будет пониматься или сам язык программирования, или программа-переводчик с этого языка на язык машины.В нашем курсе мы не будем рассматривать все возможности языка Ассемблера, для этого необходимо изучить хотя бы один из учебников [5–8].

Для целей изучения архитектуры ЭВМ нам понадобится только некоторое достаточно небольшое подмножество языка Ассемблера, только оно и будет использоваться во всех наших примерах.Рассмотрим, что, например, должна делать программа Ассемблер при переводе с языка Ассемблера на язык машины:• заменять мнемонические обозначения кодов операций на соответствующие машинные кодыопераций (например, для нашей учебной машины УМ-3, ВЧЦ → 12);• автоматически распределять память под хранение переменных, что позволяет программистуне заботиться о конкретном адресе переменной, если ему всё равно, где она будет расположена (внутри заданного сегмента при сегментной организации памяти);• подставлять в программе вместо имён переменных их значения (обычно значение имени переменной – это адрес этой переменной в некотором сегменте);• преобразовывать числа, написанные в программе в различных системах счисления во внутреннее машинное представление (в машинную систему счисления).В конкретном Ассемблере обычно существует много полезных возможностей для более удобного написания программ, что возлагает на Ассемблер дополнительные функции, однако при этомдолжны выполняться следующие требования (они вытекают из принципов Фон Неймана, если, конечно, они выполняются в конкретном компьютере):• возможность помещать в любое определённое программистом место основной памяти любую команду или любые данные;3• возможность выполнять любые данные как команды и работать с командами, как с данными(например, складывать команды как числа);• возможность выполнить любую команду из языка машины.47.2.

Применение языка АссемблераОбщеизвестно, что программировать на Ассемблере трудно. Как Вы знаете, сейчас существуетмного различных языков высокого уровня, которые позволяют затрачивать намного меньше усилийпри написании программ. Так, считается, что на один оператор языка высокого уровня при програм1Как уже говорилось ранее, предшественниками Ассемблера были так называемые языки псевдокодов,такой язык псевдокода мы использовали при изучении архитектур учебных машин.2Как мы узнаем позже, на самом деле чаще всего производится перевод не на язык машины, а на специальный промежуточный язык, который называется объектным языком.3Однако, как уже говорилось ранее, необходимо учитывать, что некоторые области оперативной памятимогут быть закрыты на запись.4Современные ЭВМ могут работать в так называемом привилегированном (или защищённом) режиме[18]. В этом режиме программы обычных пользователей, не имеющие соответствующих привилегий, не могутвыполнять некоторое подмножество особых (привилегированных) команд из языка машины.

Аналогично насовременных ЭВМ существует так называемый режим защиты памяти, при этом одна программа не можетиметь доступ (писать и читать) в память другой программы. Привилегированный режим работы и защиту памяти мы будем изучать в нашем курсе в главе, посвящённой мультипрограммному режиму работы ЭВМ.2мировании на Ассемблере приходится тратить примерно 10 предложений на этом языке низкогоуровня. Кроме того, понимать, отлаживать и модифицировать программы на Ассемблере значительно труднее, чем на языках высокого уровня.

На рис. 7.1 показана взаимосвязь языков программирования высокого уровня (их ещё называют машинно-независимыми), языков низкого уровня (машинно-ориентированных) и собственно языка машины.Языки высокого уровня (Паскаль,Фортран,С и т.д.)Трансляция (перевод)Машинно-ориентированные языки (Ассемблеры)Трансляция (перевод)Язык машиныРис. 7.1. Взаимосвязь языков программирования разных уровней.Естественно, возникает вопрос, когда у программиста может появиться необходимость при написании своих программ использовать не более удобный язык программирования высокого уровня, аперейти на язык низкого уровня (Ассемблер). В настоящее время можно указать только две области,в которых использование языка Ассемблера оправдано, а зачастую и необходимо.Во-первых, это так называемые машинно-зависимые системные программы, обычно они управляют различными устройствами компьютера (такие программы, как правило, называются драйверами).

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

Причина этого заключается в том, что такие программы могут иметь специфические особенности, которые не сможет учесть переводчик-компилятор. Особенно это касается программ вычислительногохарактера, в которых большую часть времени выполняется очень небольшой по длине (порядка 13%) участок программы (обычно называемый главным циклом). Для повышения эффективности выполнения таких программ могут использоваться так называемые многоязыковые системы программирования, которые позволяют записывать части программы на разных языках. Обычно основнаячасть оптимизируемой программы записывается на языке программирования высокого уровня (Фортране, Паскале, С и т.д.), а критические по времени выполнения участки программы – на Ассемблере.

Скорость работы всей программы при этом может значительно увеличиться. Заметим, что частоэто единственный способ заставить сложную программу дать результат за приемлемое время.Итак, область применения языка Ассемблев в программировании непрерывно сокращается. В тоже время, хорошему программисту совершенно необходимо ясно представлять, как написанные имконструкции на языках высокого уровня будут преобразовываться соответствующими компиляторами в машинный код. Умея мыслить в терминах языка низкого уровня, программист будет более яснопонимать, что происходит при выполнении его программы на ЭВМ, и как с учётом этого разрабатывать программы на языках высокого уровня.7.3.

Структура программы на АссемблереПри дальнейшем изучения архитектуры компьютера нам придётся писать как фрагменты, так иполные программы на языке Ассемблер. Для написания этих программ мы будем использовать однуиз версий языка Ассемблер (и соответствующего компилятора), так называемый Макроассемблер1Обычно в программистской литературе большими принято называть программы, содержащие порядка100 тысяч и более строк исходного текста.3версии 4.0 (MASM-4.0).1 Достаточно полное описание этого языка приведено в учебнике [5], изучения этого учебника (или аналогичных учебников по языку Ассемблера [6-8]) является обязательным для хорошего понимания материала по нашему курсу.

На лекциях мы подробно будем изучатьтолько те особенности и тонкие свойства языка Ассемблера, которые недостаточно полно описаны вуказанных учебниках, но необходимы для хорошего понимания архитектуры нашей ЭВМ.Изучение языка Ассемблера начнём с рассмотрения общей структуры программы на этом языке.Полная программа на языке Ассемблера состоит из одного или более модулей.

Таким образом, Ассемблер принадлежит к классу так называемых модульных языков. В таких языках вся программаможет разрабатываться, писаться и отлаживаться как набор относительно независимых друг от другапрограммных частей – модулей. В каком смысле модуль является независимой единицей языка Ассемблер, мы выясним несколько позже, когда будем изучать тему "Модульное программирование".Наши первые программы будут содержать всего один модуль,2 но позже нами будут рассмотрены ипростые многомодульные программы.Каждый модуль обычно содержит описание одного или нескольких сегментов памяти. Напомним, что в нашей архитектуре для работы программы каждая команда и каждое данное обязательнодолжны располагаться в каких-либо сегментах памяти, иначе доступ к ним невозможен. Именно поэтому описание сегмента является важной синтаксической конструкцией языка Ассемблер.Как мы уже знаем, в младшей модели нашего семейства ЭВМ в каждый момент времени определены четыре активных (или текущих) сегмента памяти, на которые указывают соответствующиесегментные регистры с именами CS, DS, SS и ES.

Таким образом, перед непосредственной работой ссодержимым любого сегмента требуется установить на его начало определённый сегментный регистр, до этого нельзя ни писать в этот сегмент, ни читать из него. С другими сегментами, кромеэтих четырёх текущих (если они есть в программе), работать в этот момент нельзя, при необходимости доступа к ним нужно менять (перезагружать) содержимое соответствующих сегментных регистров.Стоит заметить, что сегменты могут перекрываться в памяти ЭВМ и даже полностью совпадать(накладываться друг на друга). Однако максимальный размер сегмента в младшей модели нашегосемейства ЭВМ равен 64 Кбайта, и, если сегменты будут перекрываться, то одновременно для работы будет доступно меньшее количество оперативной памяти.3 Заметим, что пересечение сегментовникак не влияет на логику работы центрального процессора.В соответствии с принципом Фон Неймана, мы имеем право размещать в любом из сегментовпамяти как числа, так и команды.

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