Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Регистры общего назначения

Перечислим регистры, относящиеся к группе регистров общего назначения. Поскольку эти регистры физически находятся в микропроцессоре внутри арифметико-логического устройства (АЛУ), их называют регистрами АЛУ:

АХ/АН/Аl, (Accumulator register) - аккумулятор. Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно.

BX/BH/BL (Base register) - базовый регистр, или регистр базы. Применяется для хранения базового адреса некоторого объекта, находящегося в памяти.

CX/CH/CL (Count register)- регистр-счетчик. Применяется в командах, производящих некоторые повторяющиеся действия. Его использование зачастую неявно и скрыто в адгоршме работы соответствующей команды К примеру, команда организации цикла 1оор, кроме передачи управления команде, находящейся но некоторому адресу, анализирует и уменьшает на единицу значение регистра СХ.

DX/DH/DL (Data register) - регистр данных. Так же, как и регистр АХ/АН/Аl, хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно.

Следующие два регистра используются для поддержки так называемых цепочечных команд, производящих последовательную обработку цепочек элементов, каждый из которых может иметь длину 16 или 8 бит:

SI (Source Index register) - индекс источника. Этот регистр используется цепочечными командами и содержит текущий адрес элемента цепочки-источника.

DI (Destination Index register) - индекс приемника. Этот регистр используется цепочечными командами и содержит текущий адрес цепочкиприемника.

В архитектуре микропроцессора i8086 на программно-аппаратном уровне поддерживается такая структура данных, как стек. Для работы со стеком микропроцессор имеет специальный набор команд, а в программной модели микропроцессора для этою существуют специальные регистры:

(Start Pointer register) - регистр указателя стека. Содержит указатель вершины стека в текущем сегменте стека.

ВР (Base Pointer register) - регистр указателя базы кадра стека. Предназначен для организации произвольного доступа к данным внутри стека.

Такой набор регистров может показаться неудобным, в силу своем жесткой функциональной ограниченности. Большинство регистров может использоваться при Программировании для хранения операндов практически В любых сочетаниях. Однако, как мы отметили выше, некоторые команды используют фиксированные регистры для выполнения своих действий. Это нужно обязательно учитывать. Использование жесткого закрепления регистров для некоторых команд уменьшает их функциональность, но позволяет более компактно кодировать их машинное представление. Знание этих особенностей позволит вам при необходимости хотя бы на несколько байт с экономить намять, занимаемую кодом вашей программы.

 

35. Структура МП Intel 80x86: Операционное устройство, Устройство шинного интерфейса

Операционное устройство МП содержит группу общих регистров, арифметико-логическое устройство (АЛУ) и регистр флагов F.
Восемь 16-битовых регистров общего назначения участву­ют во многих командах.
В соответствии с основным назначением рассматриваемых регистров выделяют регистры АХ, ВХ, СХ, DX, используемые прежде всего для хранения данных, и регистры SP (Stack Pointer), BP (Branch Pointer), SI (Stack Index), DI (Data Index), которые хранят главным образом адресную информацию. Осо­бенностью регистров АХ, ВХ, СХ, DX является то, что они до­пускают раздельное использование их младших байтов AL, BL, CL, DL и старших байтов АН, ВН, СН, DH. Тем самым обеспе­чивается возможность обработки как слов, так и байтов и соз­даются необходимые условия для программной совместимости с МП 8080. Все остальные регистры являются неделимыми и оперируют 16-битовыми словами, даже в случае использования только старшего или младшего байта. Указательные регистры SP и BP хранят смещение адреса в пределах текущего и стекового сегмента памяти, а индексные регистры SI и DI хранят смеще­ние адреса соответственно в текущем сегменте данных и в те­кущем дополнительном сегменте. Однако при использовании этих регистров для адресации операндов возможна смена сег­ментов памяти.
Кроме основных функций, соответствующих названию регистров, общие регистры выполняют и ряд специальных функций.
АЛУ содержит 16-битовый комбинационный сумматор, с помощью которого выполняются арифметические операции, наборы комбинацион­ных схем для выполнения логических операций, схемы для опе­раций сдвигов и десятичной коррекции, а также регистры для временного хранения операндов и результатов.
К АЛУ примыкает регистр флагов F (рис. 2.3). Его млад­ший байт FL полностью соответствует регистру флагов МП Intel 8080, а старший байт FH содержит четыре дополнительных фла­га. Шесть арифметических флагов фиксируют определенные признаки результата выполнения операции (арифметической, ло­гической, сдвига или загрузки регистра флагов). Значения этих флагов (кроме флага AF) используются для реализации условных переходов, изменяющих ход выполнения программы. Различные команды влияют на флаги по-разному.

Рис. 2.3. Формат регистра флагов F
Назначение арифметических флагов:
CF (Carry Flag) - флаг переноса.
PF (Parity Flag) - флаг четности (или паритета).
AF (Additive Flag) - флаг вспомогательного переноса, фик­сирует перенос (заем) из младшей тетрады в старшую при сло­жении (вычитании.
ZF (Zero Flag) - флаг нуля.
SF (Sign Flag) - флаг знака.
OF (Overflow Flag) - флаг переполнения.
Для управления некоторыми действиями МП предназначе­ны три дополнительных флага.
DF (Direct Flag) - флаг направления, управляемый коман­дами CLD и STD; определяет порядок обработки цепочек в соот­ветствующих командах: от меньших адресов (DF = 0) или от больших (DF = 1).

Устройство шинного интерфейса содержит блок сегментных регистров, указатель ко­манд, сумматор адресов, очередь команд и буферы, обеспечи­вающие связь с шиной. Шинный интерфейс выполняет операции обмена между МП и памятью или портами ввода-вывода по за­просам операционного устройства. Когда операционное устрой­ство занято выполнением команды, шинный интерфейс само­стоятельно инициирует опережающую выборку кодов очеред­ных команд из памяти.
Очередь команд представляет собой набор байтовых реги­стров и выполняет роль регистра команд, в котором хранятся ко­ды, выбранные из программной памяти. Длина очереди состав­ляет 6 байт, что соответствует максимально длинному формату команд. Наличие очереди команд, а также способность операци­онного устройства и шинного интерфейса работать параллельно позволяют совместить во времени фазы выборки команды и вы­полнения заданной операции: пока одна команда исполняется в операционном устройстве, шинный интерфейс осуществляет выборку следующей команды. Таким образом, достигаются вы­сокая плотность загрузки шины и повышение скорости выпол­нения программы.
Буфер шины адреса/данных (БАД) содержит 16 двуна­правленных управляемых усилителей с тремя выходными со­стояниями и обеспечивает номинальную нагрузочную способ­ность линий AD15-AD0.
Буфер шины адреса/состояния (БАС) содержит четыре однонаправленных усилителя с тремя выходными состояниями и обеспечивает номинальную нагрузочную способность линий A19/S6-A16/S3.

 

36.

Регистр флагов был уже в первом 16-разрядном микропроцессоре Intel — 8086. Он носил имя FLAGS и имел длину 16 бит. Появление микропроцессора 80286 добавило в регистр FLAGS бит NT и битовое поле IOPL, однако сам регистр оставался 16-разрядным.

С выходом микропроцессора 80386 регистр был расширен до 32 бит и стал называться EFLAGS. В нём появились ещё два дополнительных бита: VM и RF. В последующих поколениях 32-разрядных микропроцессоров были добавлены биты AC, VIF, VIP и ID. Тем не менее, сохранялась полная совместимость «снизу вверх»: любая старая программа, которая корректно работала с регистром EFLAGS, не модифицируя «неизвестные» ей биты, оставалась работоспособной и на последующих процессорах.

Расширение разрядности процессора до 64 бит, первоначально произведённое компанией AMD (технология AMD64) и позже скопированное Intel (EM64T), удвоило и размер регистра флагов, получившего название RFLAGS. Однако его старшая половина (биты с 32-го по 63-й включительно) пока не используется и является зарезервированной, поэтому формат «значащей» части RFLAGS полностью совпадает с форматом EFLAGS.

Назначение разрядов Править

Формат регистра EFLAGS выглядит следующим образом:

Заметим, что все неиспользуемые биты равны нулю. Исключением является бит 1, который всегда имеет единичное значение.

Далее описывается назначение каждого бита, входящего в состав регистра флагов.

Флаги состояния Править

Эти флаги отражают результат, полученный в предыдущей арифметико-логической операции. Многие из них могут использоваться в дальнейшем для выполнения условных переходов или условных пересылок.

Флаги этой группы могут изменяться любыми программами с помощью команд, заносящих в регистр флагов новое значение (SAHF, POPF/POPFD/POPFQ).

CF Флаг переноса (бит 0). На самом деле он имеет разное назначение в зависимости от выполняемой инструкции. В арифметических операциях над целыми числами этот флаг, будучи установленным, показывает наличие переноса или заёма (это можно рассматривать как «беззнаковое переполнение»), а будучи сброшеннм — отсутствие переноса или заёма. Кроме того, этот флаг применяется в некоторых других инструкциях и тем или иным образом характеризует полученный результат. Подробно использование этого флага в каждой конкретной инструкции указывается в её описании
PF Флаг чётности (бит 2). Устанавливается, если младший байт результата содержит чётное число единичных битов, в противном случае сбрасывается
AF Флаг вспомогательного переноса (бит 4). Устанавливается при возникновении переноса или заёма из 4-ого раззряда в 3-ий разряд. Сбрасывается при отсутствии такового. Используется командами десятичной коррекции.
ZF Флаг нуля (бит 6). Устанавливается при получении нулевого результата, сбрасывается в противном случае.
SF Флаг знака (бит 7). Устанавливается, если в результате операции получено отрицательное число, т.е. если старший разряд результата равен единице. В противном случае сбрасывается
OF Флаг переполнения (бит 11). Устанавливается, если в результате арифметической операции зафиксировано знаковое переполнение, то есть если результат, рассматриваемый как число со знаком, не помещается в операнд-приёмник. Если знакового переполнения нет, этот флаг сбрасывается

Флаг направления Править

Этот флаг может изменяться любыми программами с помощью специальных инструкций CLD и STD, а также загрузкой нового содержимого регистра флагов.

DF Флаг направления (бит 10). Когда этот флаг сброшен, строковые операции (MOVS, CMPS, SCAS, LODSи STOS) обрабатывают данные в порядке возрастания адресов (увеличивая содержимое регистров SI/ESI/RSI и DI/EDI/RDI после каждой итерации), а когда установлен — в порядке убывания адресов (уменьшая содержимое указанных регистров после каждой итерации)

Системные флаги Править

Эти флаги могут изменяться только системным программным обеспечением, работающим при нулевом (наивысшем) текущем уровне привилегий (CPL). Исключением является флаг IF, состояние которого в определённых условиях может меняться менее привилегированным кодом. Загрузка регистров флагов программами, выполняющимися не на нулевом уровне привилегий, не изменяет значения системных флагов.

TF Флаг ловушки (бит 8). Когда установлен, вызывает прерывание #DB (вектор 1) после выполнения каждой команды процессора за исключением той, которая осуществила установку этого флага
IF Флаг разрешения прерывания (бит 9). Когда установлен, процессор обрабатывает маскируемые прерывания, запросы на которые поступают от контроллера прерываний илиулучшенного контроллера прерываний. Когда сброшен, маскируемые прерывания процессором игнорируются (находятся в ожидании обработки). Возможностью установки и сброса флага IF программами, выполняющимися не на нулевом уровне привилегий, управляют поле IOPL регистра флагов и бит VE управляющего регистра CR3
IOPL Поле уровня привилегий ввода/вывода (биты 12 и 13). Содержит уровень привилегий ввода-вывода для выполняемой в настоящий момент программы. Если текущий уровень привилегий (CPL) программы численно меньше либо равен значению, находящемуся в поле IOPL, программа может использовать инструкции ввода-вывода, а также менять состояние флага IF. Поле IOPL дополняется картой разрешения ввода-вывода в TSS, а также битом VME в управляющем регистре CR4
NT Вложенная задача (бит 14). Этот флаг устанавливается процессором автоматически при переключении на новую задачу. Переключение на задачу происходит при использовании её в качестве обработчика прерывания через шлюз задачи в IDT или при её вызове командой CALL, обращённой к TSS или шлюзу задачи, находящимся в GDT или LDT
RF Флаг возобновления (бит 16). Управляет реакцией процессора на точки останова. Когда установлен, запрещает генерацию отладочных прерываний (#DB). Основной функцией флага RF является обеспечение повторного выполнения инструкции после возникновения отладочного прерывания, вызванного точкой останова. Для этого отладчик перед возвратом к прерванной программе должен установить этот бит в регистре флагов прерванной программы, сохранённом в стеке, что обеспечит нормальное выполнение инструкции, к которой произойдёт возврат из отладчика. После её выполнения процессор автоматически сбросит флаг RF, что обеспечит нормальное функционирование установленных точек останова
VM Режим виртуального процессора 8086 (бит 17). Когда этот флаг установлен, процессор работает в режиме виртуального процессора 8086
AC Проверка выравнивания (бит 18). Когда одновременно установлены этот флаг и бит AC управляющего регистра CR0, а программа выполняется на третьем уровне привилегий, активизируется проверка выравнивания операндов, расположенных в памяти. При попытке доступа к невыровненному операнду возникает исключение #AC (вектор 17)
VIF Виртуальный флаг разрешения прерывания (бит 19). Этот флаг используется совместно с флагом VIP, если в управляющем регистре CR4 установлен бит VME, разрешающий использование расширений режима виртуального процессора 8086
VIP Ожидающее виртуальное прерывание (бит 20). Этот флаг используется совместно с флагом VIF, если в управляющем регистре CR4 установлен бит VME, разрешающий использование расширений режима виртуального процессора 8086
ID Идентификация (бит 21). Возможность программно устанавливать и сбрасывать этот флаг служит признаком того, что процессор поддерживает инструкцию CPUID

Оставшиеся команды микропроцессора 8088 управляют его работой.

Многие из них устанавливают или сбрасывают некоторые флаги

состояния.

Установка флагов

Есть три команды, которые непосредственно управляют состоянием

флага переноса. Команды STC, CLC, CMC соответственно могут

устанавлмвать, сбрасывать и изменять флаг переноса. Этот флаг -

единственный, которому уделено такое внимание, и в первую очередь,

благодаря важности флага переноса при операциях с повышенной

точностью. Флаг переноса критичен на промежуточных шагах любых

многословных операций. Возможность сбрасывать или устанавливать

флаг переноса может помочь при циклической обработке с повышенной

точностью. На Фиг. 4.31 показан пример использования команды CLC.

Цикл внутри примера складывает отдельные байты двух 10-разрядных

упакованных десятичных чисел. Программа выполняет цикл пять раз,

так как за каждую итерацию она обрабатывает две цифры. Информация

о переносе из одного оборота цикла в другой передается через флаг

переноса. Команда CLC сбрасывает флаг переноса перед первым циклом

для того, чтобы перед первым сложением не было переноса. Флаг

переноса также важен в операциях сдвига, где он становится девятым

или семнадцатым битом регистра во время выполнения операции.

 

Два флага состояния микропроцессора имеют специальные команды

работающие с ними. Программа может установить или сбросить маску

прерываний соответственно командами STI и CLI. Команда STI включает

систему прерываний микропроцессора 8088, позволяя ему реагировать

на внешние прерывания. Команда CLI блокирует систему внешних

прерываний.

Microsoft (R) Macro Assembler Version 5.00 1/1/80 04:02:06

Фиг. 4.31 Десятичная арифметика повышенной точности Page 1-1

 

PAGE,132

TITLE Фиг. 4.31 Десятичная арифметика повышенной точности

 

0000 CODE SEGMENT

ASSUME CS:CODE,DS:CODE

 

= 0005 NUMBER_LENGTH EQU 5; 5 байт для упакованного числа

0000 0005[ NUMBER_ONE DB NUMBER_LENGTH DUP (?)

??

]

0005 0005[ NUMBER_TWO DB NUMBER_LENGTH DUP (?)

??

]

;----------------------------------------

; Эта программа складывает два десятичных упакованных

; числа (NUMBER_ONE и NUMBER_TWO) и заносит результат

; в NUMBER_TWO.

;----------------------------------------

 

000A START_ADD:

000A B9 0005 MOV CX, NUMBER_LENGTH; Определение длины чисел

 

;----- Установка индексных регистров на младший байт складываемых чисел

 

000D 8D 36 0004 R LEA SI, NUMBER_ONE + NUMBER_LENGTH - 1

0011 8D 3E 0009 R LEA DI, NUMBER_TWO + NUMBER_LENGTH - 1

 

0015 F8 CLC; Нет младших разрядов

 

0016 ADD_LOOP:

0016 8A 04 MOV AL, [SI]; Взять байт из первого числа

0018 12 05 ADC AL, [DI]; Добавить из второго с учетом переноса

001A 27 DAA; Коррекция до упакованного формата

001B 88 05 MOV [DI], AL; Занесение байта результата

001D 9C PUSHF; Сохранение флага переноса (CF)

001E 4E DEC SI; Сдвиг указателя первого числа

001F 4F DEC DI; Сдвиг указателя второго числа

0020 9D POPF; Восстановление флагов

0021 E2 F3 LOOP ADD_LOOP; Обработка следующего байта

 

0023 CODE ENDS

END

 

Фиг. 4.31 Операции с BCD повышенной точности

 

Программа может установить или сбросить флаг направления с

помощью команд STD и CLD. Команда CLD сбрасывает флаг направления,

приводя к тому, что строковые команды ведут обработку при

возрастающих адресах памяти. Команда STD устанавливает флаг, в

результате чего строковые команды уменьшают адресный указатель

после каждого выполнения.

 

37. структура файла ассемблер-программы

Программа на ассемблере представляет собой набор предложений языка, каждое из которых занимает отдельную строку кода программы, в них м.б. записаны:

- инструкции процессора, которые транслируются в машинный код программы;
- директивы, которые указывают транслятору на необходимость выполнения некоторых действий, и при трансляции не создают машинный код.
- макрокоманды – символьные обозначения, которые во время трансляции программы замещаются одним или несколькими ассемблерными предложениями;

Также, каждая инструкция программы может иметь свою метку – имя, которое будет однозначно описывать местонахождение этой инструкции в программе. Имя метки пишется в самом начале строки и отделяется двоеточием.
При необходимости, в конце любого предложения, программист может поместить комментарий, отделив его точкой с запятой.

Для того чтобы создать из текста программы работоспособный исполняемый EXE-файл, необходимо выполнить два действия – создать из текста объектный файл (OBJ), а затем из объектного – исполняемый.

Для этого, в командной строке ДОС необходимо выполнить две команды:

tasm prog.asm – для трансляции программы в OBJ-файл
tlink prog.obj – для создания из OBJ-файла EXE-файла

Здесь prog.asm – имя исходного файла с текстом программы. Также, необходимо наличие в текущем каталоге файлов tasm.exe и tlink.exe.

Директивы оформления программы

Директивы SEGMENT, ASSUME, END и.386

Любая программа состоит из набора машинных команд и данных, которые во время выполнения находятся в памяти. Иногда для работы программы необходимо также дополнительное место, например под стек. В принципе, возможно совместное размещение команд, данных и стека в одном блоке памяти, но тогда появляется опасность при записи в стек или область данных повредить команды, а также усложнится отладка программы. Поэтому, целесообразнее будет использовать разные области памяти (сегменты) для хранения команд процессора, данных, и для реализации стека.

Операционная система должна знать, сколько памяти необходимо выделять под программу, какие сегменты нужно определить при запуске, и чем их нужно заполнить, а также местонахождение команды, начиная с которой происходит выполнение программы – так называемой «точки входа». Вся эта и другая полезная информация находится в исполняемом файле программы.

Для того чтобы транслятор ассемблера знал, в какой сегмент нужно положить определенные данные или команды, используется директива SEGMENT:

<имя сегмента> SEGMENT [параметры]
...
команды/данные
...
<имя сегмента> ENDS

В качестве параметров можно указать дополнительную информацию о сегменте. Например, параметр STACK указывает операционной системе, что этот сегмент будет использоваться, как системный стек.

38. односегментные и многосегментные файлы

Первый пример законченной программы, рассмотренный нами в гл. 2, относился к наиболее распространенному типу.ЕХЕ-приложений. Для такой программы характерно наличие отдельных сегментов команд, данных и стека; для адресации к полям каждого сегмента используется свой сегментный регистр. Удобство.ЕХЕ-программы заключается в том, что ее можно почти неограниченно расширять за счет увеличения числа сегментов. В случае большого объема вычислений в программу можно включить несколько сегментов команд, обеспечив, разумеется, переходы из сегмента в сегмент с помощью команд дальних переходов или дальних вызовов подпрограмм. Если же программа должна обрабатывать большие объемы данных, в ней можно предусмотреть несколько сегментов данных. Каждый сегмент не может иметь размер более 64 Кбайт, однако в сумме их объем ограничивается только наличной оперативной памятью. Правда, в реальном режиме затруднительно обратиться к памяти за пределами 1 Мбайт адресного пространства, так что максимальный размер программы, если не предусматривать в ней какие-то специальные средства поочередной загрузки сегментов, ограничен величиной 550... 600 Кбайт. Наличие в МП 86 лишь двух сегментных регистров данных (DS и ES) несколько усложняет алгоритмы обработки больших объемов данных, так как приходится постоянно переключать эти регистры с одного сегмента на другой. Однако реально в современных процессорах имеются не два, а четыре сегментных регистра данных (DS, ES, FS и GS), которые вполне можно использовать в приложениях DOS, упростив тем самым процедуры обращения к данным и ускорив выполнение программ. Позже все эти возможности будут рассмотрены более подробно.

Во многих случаях объем программы оказывается невелик - меньше, а часто и много меньше, чем 64 Кбайт. Такую программу нет никакой необходимости составлять из нескольких сегментов: и команды, и данные, и стек можно разместить в единственном сегменте, настроив на его начало все 4 сегментных регистра. Для односегментных программ в MS-DOS существует специальный формат и специальные правила их составления. Программные файлы с программами, составленными по этим правилам, имеют расширение.СОМ. В формате.СОМ обычно пишутся резидентные программы и драйверы, хотя любую прикладную программу небольшого объема можно оформить в виде.СОМ-приложения. Если посмотреть список системных программ, входящих в DOS, и реализующих, в частности, внешние команды DOS, то можно заметить, что приблизительно треть этих программ написана в формате.COM (COMMAND.COM, FORMAT.COM, SYS.COM и др.), а две трети - в формате.EXE (FC.EXE: PRINT.EXE, XCOPY.EXE и т.д.). Ниже мы рассмотрим правила составления и особенности исполнения как.ЕХЕ-, так и.СОМ-программ.

39. элементарные конструкции языка ассемблера: алфавит, ключевые слова

Все ассемблерные программы состоят из одного или более

предложений и комментариев. Предложение и комментарий

представляют собой комбинацию знаков, входящих в алфавит

языка, а также чисел и идентификаторов, которые тоже

формируются из знаков алфавита.

 

2.1. Алфавит.

 

 

Макроассемблер распознает следующий набор знаков:

 

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p q r s t u v w x y z

0 1 2 3 4 5 6 7 8 9

? @ _ $:. [ ] () < > { }

+ / * & %! ' ~ | \ = # ^;, ` "

Конструкции языка ассемблера формируются из идентификаторов и ограничителей. Идентификатор представляет собой набор букв, цифр и символов _,?, $ или @, не начинающийся с цифры. Идентификатор должен полностью размещаться на одной строке и может содержать от 1 до 31 символа (точнее, используются только первые 31 символ идентификатора, остальные игнорируются). Следует заметить, что символ _, хотя и допускается в качестве компоненты идентификатора, ассемблером игнорируется. Поэтому, например, идентификаторы A_B и AB совпадают. Друг от друга идентификаторы отделяются пробелом или ограничителем, которым считается любой недопустимый в идентификаторе символ.Посредством идентификаторов представляются следующие объекты программы: 1. Переменные. 2. Метки. 3. Имена.Некоторые идентификаторы, называемые ключевыми словами, имеют фиксированный смысл и должны употребляться только в соответствии с этим. Ключевыми словами являются: 1. Директивы ассемблера. 2. Инструкции процессора. 3. Имена регистров. 4. Операторы выражений.

 

40)элементарные конструкции языка ассемблера: выражения и их использования

Использование выражений позволяет вам получать модульный

код, поскольку вы можете символически представлять в программе

значения. Турбо Ассемблер выполняет все повторные вычисления, не-

обходимые при изменениях (и не требует этого от вас).

 

В присваиваниях Турбо Ассемблер использует стандартное ин-

фиксное обозначение. Выражения могут содержать операнды и унарные

или бинарные операции. Унарная операция помещается перед одиноч-

ным операндом; бинарные операции помещаются между двумя операнда-

ми. Примеры простых операций показаны в Таблице 5.8.

 

 

Простые выражения Таблица 5.8

---------------------T------------------------------------------

¦ Выражение ¦ Что получается при вычислении ¦

+--------------------+------------------------------------------+

¦ 5 ¦ константа 5 ¦

¦ -5 ¦ константа -5 ¦

¦ 4+3 ¦ константа 7 ¦

¦ 4*3 ¦ константа 12 ¦

¦ 4*3+2*1 ¦ константа 14 ¦

¦ 4*(3+2)*1 ¦ константа 21 ¦

L--------------------+-------------------------------------------

 

В Приложении B содержится полная грамматика в форме Бэку-

са-Наура, используемая при синтаксическом анализе выражений в

режимах MASM и Ideal. Эта грамматика последовательно описывает

синтаксис выражений Турбо Ассемблера, а также старшинство опера-

ций.

 

 


<== предыдущая | следующая ==>
 | 

Date: 2016-05-24; view: 1375; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.01 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию