скачать Министерство Образования и Науки РФ Федеральное Агентство по Образованию Государственное Образовательное Учреждение высшего профессионального образования Московский Авиационный Институт Государственный Технический Университет ”МАИ” кафедра 304. Конспект лекций по курсуЯЗЫК АССЕМБЛЕРА IBM PC Москва, 2006 год Место языков ассемблера среди языков программированияЯзыки программирования – это языки, воспринимаемые вводными устройствами ЦВМ. Общая классификация языков программирования (ЯП) приведена на схеме: ![]() Я ![]() ![]() ![]() ![]() Алгоритмические языки Машинно-зависимые (высокого уровня) языки ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Универсальные Проблемно-ориен- ЯСК Машинные тированные Языки ассемблера Алгоритмический язык – это язык, позволяющий записать алгоритм в виде последовательности операторов, т.е. довольно сложных конструкций, что существенно облегчает и ускоряет процесс программирования и отладки программ. Машинный язык содержит подробные конструкции (команды) в двоично-кодированном виде. Язык Ассемблера в основном отличается от машинного языка использованием идентификаторов и мнемонических имён и дополнительными возможностями, позволяющими упростить процесс программирования. Язык Ассемблера требует хорошего знания структурных и архитектурных особенностей процессора и ЭВМ в целом. Ассемблер – это программа, входящая в операционную систему (ОС) и предназначенная для формирования машинных команд путём перевода со входного языка, называемого языком Ассемблера. Рассмотрим язык ассемблера на примере IBM-совместимых персональных ЭВМ (ПЭВМ). К этому классу относятся
ПЭВМ семейства 80x86 можно представить как совокупность следующих программно-логических элементов МП: а) в МП:
б) связанные с МП:
Регистровая структура МП 80x86 приведена на схеме, она включает в себя 4 группы 16-разрядных регистров, которые обслуживают функционирование операционного устройства (ОУ) и шинного интерфейса (ШИ). О ![]() ![]() ![]() ![]() Р ![]() д ![]() ![]() DH DL CS ![]() ![]() ![]() ![]() Р ![]() ![]() у ![]() ![]() DI ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() очередь команд ![]() ![]() ![]() ![]() ![]() Рассмотрим подробнее:
Эти регистры используются для хранения операндов, промежуточных результатов и других видов данных и адресов. Каждый из указанных регистров имеет еще и дополнительное специальное назначение для определенных команд языка ассемблера.
Допускается обращение к частям этих регистров, т.е. старшему байту (вторая буква Н) и младшему байту (вторая буква L).
Группа содержит непосредственно указатели SP – указатель стека, BP – указатель базы и индексные регистры SI – индекс источника, DI – индекс приемника. Регистры-указатели используются для работы со специальной структурой памяти – стеком; индексные регистры используются при выборке операндов из памяти.
Сегментация памяти позволяет укоротить адресные коды, кроме того, каждый сегмент имеет свое предназначение, что повышает надежность программ. CS (Code Segment) – регистр сегмента команд, определяет начало сегмента, содержащего адрес текущей выполняемой команды; DS (Data Segment) – регистр сегмента данных, определяет начало сегмента, содержащего константы и данные; SS (Stack Segment) – регистр сегмента стека, указывает на начало сегмента стека; ЕS (Extension Data Segment) – регистр дополнительного сегмента данных, определяет начало сегмента, который обычно используется для запоминания промежуточных данных или как расширение сегмента данных. В более поздних моделях МП есть дополнительные сегменты: FS, GS – дополнительные сегменты данных LDTR – регистр локальной таблицы дескрипторов.
|