- •Программирование на языке Ассемблер
- •Классификация языков программирования
- •Поколения мп
- •Структура мп 8086
- •Регистры мп
- •Регистры общего назначения
- •Сегментные регистры
- •Регистры смещений
- •Регистр флагов
- •Структура и организация памяти
- •Сегментация памяти и формирование адреса
- •Особенности машинных команд
- •Основные команды мп
- •1.2 Перестановка (exchange):
- •1.3 Загрузка исполнительного адреса (load effective address):
- •3.1 Команды умножения
- •3.2 Команды деления
- •Переходы. Циклы
- •Команды сравнения и условного перехода
- •Команды условного перехода
- •3. Команды управления циклом
- •Язык Ассемблера ibm pc. Структура операторов и директив. Метки, переменные и их атрибуты
- •Команды
- •Директивы
- •Директивы определения данных
- •Конструкция повторения dup
- •Директива dd (define double word, определить двойное слово)
- •Директивы эквивалентности и присваивания
- •Структура программы. Логические сегменты
- •Побитовая обработка и ее основные виды
- •2. Команды сдвига
- •2.1. Логические сдвиги
- •2.2. Арифметические сдвиги
- •2.3. Циклические сдвиги
- •Стек и сегмент стека
- •Стековые команды
- •Пример использования стека
- •Модульное программирование
- •Типы объединения модулей
- •Связь Паскаль-Ассемблер
- •Параметры-значения
- •Параметры-переменные
- •Способы адресации
- •Команды строковых примитивов
- •Сканирование строки: scasb, scasw
- •Приемы обработки структурированной информации
- •Inc si ; к следующей оценке
- •Inc dx ; учет отличника
- •Составление и оформление программ на ассемблере
- •Префикс программного сегмента. Com- и exe-программы
- •Команда прерывания
- •Функции прерывания 21h
- •Процесс разработки программы на языке ассемблера
- •Трансляция программы
- •Компоновка программы
- •Макроповторения
- •Макрооператоры
- •Директива local
- •Директивы условного ассемблирования
- •Директивы if и ife
- •Директивы ifidn и ifdif
Структура и организация памяти
Физическая память, к которой процессор имеет доступ по шине адреса, называется оперативной памятью.
Оперативная память делится на ячейки размером в 8 разрядов. Ячейки такого размера принято называть байтами (byte). Каждому байту соответствует свой уникальный адрес (его номер), называемый физическим. Диапазон значений физических адресов зависит от разрядности шины адреса процессора. Для МП8086 он находится в пределах от 0 до 220-1 (1Мб).
Байт – это наименьшая адресуемая ячейка памяти.
Более крупные адресуемые ячейки – слова и двойные слова.
Слово (word) – это два соседних байта. Размер слова – 16 разрядов. Адресом слова считается по определению адрес его первого байта (с меньшим адресом).
Двойное слово (double word) – это четыре соседних байта или, что то же самое, два соседних слова. Размер двойного слова – 32 разряда. Адрес двойного слова – адрес первого из его байтов (с наименьшим адресом).
Сегментация памяти и формирование адреса
Вычисление физического адреса (адреса памяти, выдаваемого на шину адреса процессора) можно выразить так:
ФА=[SR]*16+EA16.
Пр.:
Особенности машинных команд
Возможны следующие сочетания операндов в команде:
а) регистр - регистр;
б) регистр - память;
в) память – регистр;
г) регистр - непосредственный операнд;
д) память - непосредственный операнд.
Для команд характерно, что при наличии двух операндов первый из них является приемником, а второй – источником. Результат операции сохраняется по первому адресу.
Основные команды мп
Команды пересылки данных
Пересылка (move):
MOV op1,op2
op1:=op2
В команде MOV допустимы следующие комбинации операндов:
op1 op2
r8 i8, r8, m8 пересылка байтов
m8 i8, r8
r16 i16, r16, sr, m16 пересылка слов
sr (кроме CS) r16, m16
m16 i16, r16, sr
Запрещены пересылки:
из одной ячейки памяти в другую;
из одного сегментного регистра в другой;
запись непосредственного операнда в сегментный регистр.
Командой MOV нельзя менять содержимое сегментного регистра CS.
Пример.
Записать число 100 в сегментный регистр DS:
MOV AX,100
MOV DS,AX ; DS:=100
1.2 Перестановка (exchange):
XCHG op1,op2
В команде XCHG допустимы следующие комбинации операндов:
op1 op2
r8 r8, m8 перестановка байтов
m8 r8
r16 r16, m16 перестановка слов
m16 r16
Не допускается:
перестановка содержимого двух ячеек памяти.
Пример.
MOV AX,62 ; AX=62
MOV SI,135 ; SI=135
XCHG AX,SI ; AX=135, SI=62