Таненбаум Э.- Архитектура компьютера. стр.541

Назначение этого приложения не в том, чтобы готовить профессиональных программистов, пишущих на ассемблере, а в том, чтобы помочь читателю освоить архитектуру вычислительных систем через практические примеры. Именно по этой причине в качестве основы для изложения материала выбрана такая простая машина, как 8088 производства Intel. Сами по себе модели 8088 встречаются сейчас очень редко, но программы, написанные для них, можно выполнять и на современных системах Pentium, что позволяет читателю воочию наблюдать результаты своей работы. Скажем больше — значительная часть команд ядра Pentium совпадает с аналогичными командами 8088; различие между ними сводится лишь к разрядности регистров (32 и 16 бит соответственно). Таким образом, это приложение можно рассматривать как введение в курс программирования на языке ассемблера Pentium.

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

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

Основные понятия

Наш обзор программирования на ассемблере мы начнем с краткого описания самого языка ассемблера, после чего приведем небольшой пример.

Язык ассемблера

Каждый язык ассемблера, или просто ассемблер, основывается на мнемониках — кратких осмысленных с точки зрения программиста обозначениях машинных команд (сложения, вычитания, умножения и других) наподобие ADD, SUB и MUL. Вместе с тем, ассемблеры допускают применение символических имен для обозначения констант и меток для обозначения команд и адресов памяти. Кроме того, большинство языков ассемблера поддерживают некоторое количество псевдокоманд, которые не относятся к уровню архитектуры набора команд, но регулируют процесс ассемблирования.

При ассемблировании программы, написанной на языке ассемблера, с помощью специальной программы (она так и называется — ассемблер) получается двоичная программа, готовая непосредственно к выполнению в реальной аппаратной среде. Здесь следует отметить, что начинающие программисты, составляющие текст программы на языке ассемблера, часто допускают ошибки, при обнаружении которых выполнение двоичной программы останавливается без указания причин. Чтобы упростить задачу программиста, двоичную программу можно запустить не в реальной аппаратной среде, а в симуляторе, который в каждый отдельный момент времени выполняет только одну команду и выводит детальный отчет о своих действиях. В этом случае отлаживать программы становится значительно проще. В среде симулятора программы выполняются значительно медленнее, чем в реальных условиях, но цель — научиться программировать на языке ассемблера — в данном случае оправдывает средства. При дальнейшем изложении материала мы подразумеваем применение такого симулятора (называемого также интерпретатором, или трассером), который интерпретирует и отслеживает выполнение каждой команды двоичной программы. Термины «симулятор», «интерпретатор» и «трассер», таким образом, употребляются в нашем тексте в одинаковом значении. Как правило, говоря об выполнении программы в среде симулятора, эту среду называют «интерпретатором»; если же речь идет о ее применении в качестве инструмента отладки, используется термин «трассер»; в любом случае, имеется в виду одна и та же программа.


⇐ Предыдущая страница| |Следующая страница ⇒