Лекция_11_Команды ЭВМ.ppt
- Количество слайдов: 13
Команды ЭВМ
Лекция 2 Основы программирования МП 1. 2. 3. Структура программы на языке ассемблера. Формат команды Регистры общего назначения. Сегментные регистры. Регистр флагов Структура программы на ассемблере
Структура программы Исходный текст программы (физически содержащийся в файле в расширением asm) состоит из операторов ассемблера, каждый из которых занимает отдельную строку этого текста. Ассемблер транслирует операторы один за другим, генерируя последовательность из команд процессора и байтов данных.
Формат команды Общий формат оператора ассемблера имеет следующий вид: [Метка[: ]] МНЕМОКОД [Операнд 1 [{, Операнд 2}]] [; Комментарий] Метка - это идентификатор, связанный с адресом первого байта того оператора, в котором она появляется. Код операции – это мнемоническое обозначение соответствующей команды процессора или директивы ассемблера.
Формат команды Комментарий - любая последовательность символов, начиная с символа "; " до конца строки, которая поясняет соответствующий оператор Метки используются как операнды в операторах программы для ссылки на адреса команд и данных (переменных, массивов, структур). Имена меток могут состоять из следующих символов: "A" - "Z", "a" - "z", "_", "@", "$", "? ", "0" - "9". Символы "0" - "9" не могут использоваться в качестве первых символов имени метки.
Формат команды Символы "$" и "? " имеют специальное значение, поэтому их не следует использовать в именах пользовательских меток. Имена меток не должны совпадать с именами регистров, мнемониками команд процессора, а также с ключевыми словами Ассемблера (встроенными переменными, операциями, директивами).
Формат команды Мнемокод команды компилируется непосредственно в те команды МП, которым они соответствуют. Важной особенностью машинных команд является то, что они не могут оперировать одновременно двумя операндами, находящимися в памяти. По этой причине возможны следующие сочетания операндов: § Регистр – регистр; § Регистр – память; § Память – регистр; § Непосредственный операнд – память;
Регистры общего назначения (РОН) Использование РОН обычно не регламентируется, однако каждый из них имеет некоторое специфическое назначение. ax – аккумулятор. Часто используется в арифметических командах. bx – base, для хранения адреса (смещения) cx – counter, счетчик dx – data, хранение данных bp/sp – указатель базы/стека si/di – индекс источника/приемника
Регистры общего назначения Схема регистров ax, bx, cx, dx ah 8 бит al 8 бит К 8 -битным частям регистров можно обращаться отдельно.
Сегментные регистры предназначены для хранения адреса сегмента, разрядность каждого 16 бит. cs – сегмент кода ds – сегмент данных ss – сегмент стека es – дополнительный сегмент
Регистр флагов OF DF IF 15 14 13 12 11 10 9 TF SF ZF 8 7 6 AF 5 4 PF 3 2 CF 1 0 Флаг – это бит, принимающий значение 1 ( «установлен» ) или 0 ( «сброшен» ) при выполнении определенных условий. Каждый флаг - один из разрядов регистра флагов eflags/flags. Некоторые флаги (флаги условий) автоматически меняются при выполнении команд и фиксируют те или иные свойства их результата; другие флаги (флаги состояний) меняются программно.
Флаги Флаг Описание CF Флаг переноса. Пред. операции произвела перенос PF Флаг четности. В рез. пред. операции четное число единиц AF Вспомогательный флаг переноса, для BCD-чисел ZF Флаг нуля. Результат пред. операции = 0 SF Флаг знака. В пред. операции отрицательный результат. OF Флаг переполнения. Результат превосходит доп. величину TF Флаг трассировки IF Флаг прерываний DF Флаг направления
Структура программы 32 -х разрядное приложение может создаваться по следующему шаблону. 386. model flat, stdcall. stack. data ; данные. code main: . . . ; команды ассемблера end main end