Главная » Просмотр файлов » Конспект лекций по курсу Ассемблер (Алещенко)

Конспект лекций по курсу Ассемблер (Алещенко) (1002288), страница 4

Файл №1002288 Конспект лекций по курсу Ассемблер (Алещенко) (Раздаточный материал) 4 страницаКонспект лекций по курсу Ассемблер (Алещенко) (1002288) страница 42016-04-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

Последовательность данных, которая загружена в стек, может быть считана только в обратном порядке. Стек используется в ПЭВМ для временного хранения данных, необходимых для организации процедур, для передачи параметров в процедуры, а так же для хранения некоторых промежуточных данных. Считывание и загрузка в стек осуществляется двухбайтовыми словами.

Стек организуется программно в памяти, для стека можно отвести любую область памяти, удовлетворяющую двум требованиям:

  • максимальная емкость 64КБ (32К слов),

  • конечный адрес должен быть кратным 16 (параграф).

Стек занимает один сегмент памяти, называемый сегментом стека, с сегментным регистром SS, указывающим на начало, т.е. базу стека. Для работы со стеком обычно используют косвенную адресацию через регистр SP – указатель стека, указывающий на текущую ячейку стека, называемую вершиной стека.

В начале работы с SP указывают на последнюю ячейку сегмента стека. При загрузке числа автоматически производится декремент SP := SP–2.

Считывание числа из стека сопровождается автоматическим инкрементом: SP := SP+2, причем считается, что ячейка стека свободна и готова для последующего использования, но ее содержимое после считывания не изменяется.

Для дополнительного обращения к элементам стека (не через вершину) можно использовать регистр ВР, называемый дополнительным указателем стека. Доступ к элементам стека через BP осуществляется на основе определённого расстояния о нужного слова до вершины стека и базовой адресацией:

mov BP,SP ; настройка на вершину стека

mov AX,[BP+4] ; эквивалентно mov AX,SS:[BP+4]

BP по умолчанию относится к сегменту стека, а не к сегменту данных!!!Если в программе нет явного использования стека, то необходимо его зарезервировать в объеме 128Б для автоматического использования.

Стековые команды

а) PUSH op; запись слова в стек, флаги не модифицируются

ор – может быть в регистре (в том числе и в сегментном) или в ячейке памяти, но не непосредственный операнд.

Алгоритм выполнения:

  • декремент значения SP:=SP–2;

  • пересылка содержимого ор на сводную ячейку стека с адресом [SS:SP] (в польской инверсной записи).

Пример:

PUSH AX

Примечания:

- SP используется по умолчанию

- Записать можно только слово

- Если организуется стековый сегмент в максимальном объеме (64КБ), то при полном заполнении, происходит разрушение ранее записанной информации




- Если стек имеет меньший размер, то при полном его заполнении каждое новое обращение разрушает область памяти вне стекового сегмента

SS 128Б







б) РОР ор ; чтение слова из стека

ор – аналогично PUSH.

Алгоритм выполнения:

  • слово из ячейки стека пересылается в ор (порядок байтов восстанавливается),

  • инкремент SP := SP +2

Пример:

POP CX

Примечание: Если пытаться считывать из пустого стека, то ошибка не фиксируется, а считывается слово, следующее за сегментом стека.

в) PUSHF ; копирование слова из регистра FLAGS в стек

POPF ; копирование слова из стека в регистр FLAGS

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

Эти команды позволяют модифицировать флаг TF. Т.к. другого пути воздействия на TF нет, то нужно выполнить засылку флага в стек, затем изменить 8-й бит и записать новое значение из стека в регистр FLAGS.

Доступ к элементам стека с помощью регистра ВР

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

Например:

MOV BP,SP ; BP := SP

MOV AX,[BP+4] ; эквивалентно MOV AХ, SS:[BP+4]



ВР по умолчанию относится к сегменту стека, а не к сегменту данных!!!

Конструкции языка Ассемблера

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

Все конструкции языка делятся на 4 уровня:

  • алфавит;

  • элементарные конструкции (лексемы);

  • предложения;

  • программные единицы.

1. Алфавит

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

2. Лексемы

Лексемы – это элементарные конструкции языка, т.е. слова. В ЯА лексемы представлены пятью классами:



Элементарные конструкции



Идентификаторы Целые числа Ключевые слова Символьные данные



М етки Имена



ВЫРАЖЕНИЯ



1. Идентификаторы – это последовательность латинских букв, цифр и символов . ? @ _ $

Особенности применения имен в ЯА:

      • длина идентификатора не ограничена, но значащими являются только первые 31 символ;

      • идентификатор не может начинаться с цифры;

      • точка может быть только первым символом идентификатора; например, возможен идентификатор

.ABR

      • в идентификаторе одноименные заглавные и строчные буквы считаются эквивалентными;

      • идентификаторы не могут совпадать с зарезервированными (ключевыми) словами.

Идентификаторы делятся на два вида:

а) Имя – ссылка на адрес первого байта, содержащего данные (константы или переменные). Имена описываются директивой декларации.

Пример:

FATAL DB 13

Это имя имеет атрибут (тип) BYTE, WORD и т.д.

б) Метка – идентификатор инструкций или директивы, которая используется для передачи управления.

Метки сегментов и процедур:

LAD SEGMENT

………………….

ENDS

FUN PROC

……………

ENDP.

Метки команд (инструкции) располагаются в начале строки и отличаются от МНК двоеточием. Метка имеет атрибут NEAR или FAR.

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

Одну и ту же инструкцию можно выполнять дважды:

NACHALO:

LAB:ADD AX,DX

…………………..

JMM NACHALO

………………….

JMP LAB.



    1. Ключевые (зарезервированные) слова – это сочетания символов, которые имеют определенный смысл и соответственно воспринимаются Ассемблером.

Например,

.286 – директива, позволяющая использовать в программе команды МП i80286;

AND – мнемоника команды;

AX – имя регистра;

.ERR – директива генерации кода ошибки.



    1. Целые числа могут быть записаны в десятичной, восьмеричной или 16-ричной системах счисления, на это указывает буква в конце числа, называемая спецификатором

Основание ПСС

Спецификатор

Примеры

10

D или ничего

25, -387, +4d

2

B

101b, -1001B

8

O или Q

74q, -22Q

16

H

1A3h, -0B4H



Примечания:

      • для 16-чной ПСС, если число начинается с цифры от A до F, то перед ней записывается ноль,

      • в числах можно использовать заглавные или строчные латинские буквы.



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

Примечания:

      • в качестве символов можно использовать любые изображаемые символы и буквы;

      • заглавные и строчные буквы различаются;

      • если внутри строки символов нужно использовать кавычки, то есть 2 возможности:

или удвоить символ, например, ‘Don’’t’;

или использовать другой вариант ограничителя строки ,

например, «Don’t» или ‘кафе «МИР»’

    1. Выражения в языке ассемблера состоят из чисел и\или символов, обозначающих числа. Выражение определяет операнд или его адрес.

Например, в декларациях Alpha EQU 10/4 ; константа Alpha равна 2.

Возможные операции в выражениях: + - * / mod () not k (подразумевается инверсия k)

High n – старший байт числа n

Low n – младший байт числа n и т.д.

Выражением считается список констант в декларациях, например:

Area DB 2, -8, 7.

В инструкциях выражения используются только для вычисления адресов операндов, при этом возможны виды адресации:

- Косвенная

- Индексная

- Базовая

- Базово – индексная

В программе можно записать эти адресации разными записями:

Название адреса

Обозначение операнда

в инструкции

Формирование адреса



Косвенная

[Рг B]

[Рг U]

[Рг B]

[Рг U]



Индексная

disp [Рг U]

[Рг B]+ disp



disp + [Рг U]



Базовая

disp [Рг B]

[Рг B] + disp



disp + [Рг B]



Базово-индексная

disp [Рг B] [Рг U]

disp [Рг B] + [Рг U]

disp [Рг B + Рг U]



disp + [Рг B] + [Рг U]



Где disp – смещение в байтах, которое может быть константой или выражением.

[Рг B] – содержимое базового регистра (BP или BX).

[Рг U] – содержимое индексного регистра (C или D)

Между индексными или базовыми регистрами (способами адресации) разницы нет, но они выделены, т.к. в базово-индексной адресации можно использовать только пары из разных групп, например:

mov AX, 2[DI] ; AX := ОП[[DI] + 0002h]

mov [BX], AL ; ОП[BX] := [AL].

Предложения языка Ассемблера

Предложения ЯА



Комментарии Инструкции Директивы



Программа на ЯА – это последовательность предложений, каждое из которых занимает отдельную строку. Максимальная длина строки – 131 символ.

Переносить предложения на следующую строку или записывать 2 предложения на одной строке запрещено.

Правила расстановки пробелов:

- пробел обязателен, чтобы отделять стоящие рядом имена или числа;

- внутри имен или чисел пробелы не допускаются;

- в остальных случаях пробелы используются произвольно;

- количество пробелов подряд безразлично.

Характеристики

Тип файла
Документ
Размер
574 Kb
Тип материала
Предмет
Высшее учебное заведение

Список файлов учебной работы

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6508
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее