Программирование на ассемблере

  • 24 июля 2011 г.
  • 6816 Слова
3.ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ АССЕМБЛЕРА

В настоящем пособии рассматривается базовый ассемблер MASM версии 5.10 фирмы Microsoft [7], а также режим MASM турбоассемблера TASM версии 3.2 фирмы Borland [8].
Ассемблер является основным языком программирования для МПС, так как обеспечивает максимальную эффективность создаваемых программ с точки зрения их быстродействия и объема.
Ассемблер  этомашинно-ориентированный язык, позволяющий использовать все ресурсы системы. Однако, для успешного программирования на нем необходимо четко представлять аппаратные средства используемой микроЭВМ, то есть ту материальную среду, в которой протекает процесс решения задачи. Так как задача решается программными средствами, то в эту среду входят только программно доступные элементы аппаратных средств, тоесть элементы, доступные с помощью системы команд.
Совокупность программно доступных элементов системы называется ее архитектурой. Архитектура микроЭВМ включает в себя архитектуры микропроцессора, памяти и интерфейса.

3.1. Архитектура микропроцессоров K1810ВМ86/K1810ВМ88

Архитектура МП ВМ86/ВМ88 приведена на рис.3.1. Она включает в свой состав 14 программно доступных регистров. Все ониделятся на две группы:
1) регистры общего назначения (РОН);
2) сегментные регистры.
В свою очередь РОН делятся на регистры данных и регистрыуказатели адреса. Отличительной особенностью регистров данных является возможность их использования как в виде полных 16-битных регистров AX, BX, CX, DX, так и в виде частичных 8-битных регистров AH, AL, BH, BL, CH, CL, DH, DL. Это обеспечивает возможность эффективнойобработки как однобайтных, так и двухбайтных данных. Регистры данных предназначены для хранения данных, и они единообразно участвуют во всех арифметических и логических операциях.
Регистрыуказатели адреса SP, BP, SI, DI могут использоваться только как полные 16-битные регистры. Они предназначены в основном для хранения адресной информации. Однако, эти регистры могут участвовать и варифметических и логических операциях, что позволяет отнести их к РОН.
Определение регистров данных и регистровуказателей адреса как регистров общего назначения в МП ВМ86/ВМ88 весьма условно. Многие команды рассматривают различные регистры этой группы как специализированные регистры, что обуславливает их функциональную неравнозначность. Основная специализация регистров этой группы указана на рис.3.1, а полныесведения о ней  в табл. 3.1.



Рис. 3.1. Архитектура МП ВМ86/ВМ88

Специализация внутренних регистров МП требует, чтобы программист или компилятор языка высокого уровня внимательно распределял и тщательно следил за использованием конкретных регистров. Однако, это дает возможность их неявного использования соответствующими командами, что позволяет получить более короткий машинный код, чем в случаеидеальных РОН.
Сегментные регистры CS, DS, ES, SS служат для поддержки ранее рассмотренного механизма сегментации памяти (см. подраздел 2.2.3) и каждый из них обеспечивает хранение базового (начального) адреса segment соответствующего сегмента.
Таблица 3.1
Специализация РОН

Регистр Специализированные функции
AX Умножение, деление, вводвывод слов
AH Умножение и деление байт
AL Умножение, деление,вводвывод байт, десятичная арифметика, табличное преобразование байта
BX Базовый регистр адреса данных, табличное преобразование
CX Счетчик циклов в командах управления циклами и обработки цепочек
CL Счетчик циклов в командах сдвигов
DX Умножение и деление слов, косвенный вводвывод
SP Указатель стека
BP Базовый регистр адреса стека
SI Индексный регистр, операции с цепочками (строками)DI Индексный регистр, операции с цепочками (строками)

Указатель команд IP обеспечивает хранение смещения offset очередной команды, подлежащей считыванию из текущего сегмента программного кода.
Регистр флагов служит для хранения признаков состояния МП. Все флаги делятся на две группы:
1) арифметические флаги; 2) управляющие флаги.
Арифметические флаги...