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



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

2.Данныепростого типа, описываемые с помощью ограниченного набора директив резервирования памяти, позволяющих выполнить самые элементарные операции по размещению и инициализации числовой и символьной информации. Размерность: байт — восемь последовательно расположенных битов, пронумерованных от 0 до 7, при этом бит 0 является самым младшим значащим битом; слово — последовательность из двух байт, имеющих последовательные адреса. Размер слова — 16 бит; биты в слове нумеруются от 0 до 15. Байт, содержащий нулевой бит, называется младшим байтом, а байт, содержащий 15-й бит - старшим байтом;двойное слово — последовательность из четырех байт (32 бита), расположенных по последовательным адресам. Нумерация этих бит производится от 0 до 31; учетверенное слово — последовательность из восьми байт (64 бита), расположенных по последовательным адресам. Нумерация бит производится от 0 до 63.Разрядность:Целый тип со знаком — двоичное значение со знаком, размером 8, 16 или 32 бита. Целый тип без знака — двоичное значение без знака, размером 8, 16 или 32 бита. Цепочка — представляющая собой некоторый непрерывный набор байтов, слов или двойных слов максимальной длины до 4 Гбайт.

Данные сложного типа, строятся на основе базовых типов и позволяют несколько сгладить различия между языками высокого уровня и ассемблером. Массив - структурированный тип данных, состоящий из некоторого числа элементов одного типа.Структура — это тип данных, состоящий из фиксированного числа элементов разного типа.Объединение— тип данных, позволяющий трактовать одну и ту же область памяти как имеющую разные типы и имена. Запись— структурный тип данных, состоящий из фиксированного числа элементов длиной от одного до нескольких бит. Микропроцессоры Intel имеют важную особенность : младший байт всегда хранится по меньшему адресу. Адресом слова считается адрес его младшего байта. Адрес старшего байта может быть использован для доступа к старшей половине слова.

Пример:

число 256

2 - будет в старшем байте

56 в младшем байте

 

Дайте определения понятий «адрес» и «указатель» с точки зрения программы на ассемблере. Перечислите команды работы с адресами и указателями. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд работы с адресами и указателями. 

Адрес- метод указания на ячейку памяти, к которой производится доступ. Адресация может быть: абсолютная; сегментная; относительная; косвенная; индексная; непосредственная; регистровая. Указатель - переменная, диапазон значений которой состоит из адресов ячеек памяти и специального значения - нулевого адреса. Значение нулевого адреса не является реальным адресом и используется только для обозначения того, что указатель в данный момент не может использоваться для обращения ни к какой ячейке памяти. Команды работы с адресами и указателями: lea, lds, les, lgs, lfs, lss.

lea назначение,источник — загрузка эффективного адреса;

lds назначение,источник — загрузка указателя в регистр сегмента данных ds;

les назначение,источник — загрузка указателя в регистр дополнительного сегмента данных es;
lgs назначение,источник — загрузка указателя в регистр дополнительного сегмента данных gs;
lfs назначение,источник — загрузка указателя в регистр дополнительного сегмента данных fs;
lss назначение,источник — загрузка указателя в регистр сегмента стека ss.

Пример:

.datastr_1 db ‘Ассемблер — базовый язык компьютера’full_pnt dd str_1.codestart:lea si,str_1les bx,full_pnt end start

 

Перечислите регистры общего назначения для микропроцессоров архитектуры IA-32. Укажите разрядность перечисленных регистров. Охарактеризуйте каждый регистр с точки зрения его использования и функционального назначения.

eax/ax/ah/al (Accumulator register) — аккумулятор. Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно; ebx/bx/bh/bl  — базовый регистр. Применяется для хранения базового адреса некоторого объекта в памяти; ecx/cx/ch/cl  — регистр-счетчик. Применяется в командах, производящих некоторые повторяющиеся действия. Его использование зачастую неявно и скрыто в алгоритме работы соответствующей команды. edx/dx/dh/dl — регистр данных. Так же, как и регистр eax/ax/ah/al, он хранит промежуточные данные.

Следующие два регистра используются для поддержки так называемых цепочечных операций: esi/siиндекс источника. Этот регистр в цепочечных операциях содержит текущий адрес элемента в цепочке-источнике; edi/diиндекс приемника (получателя). Этот регистр в цепочечных операциях содержит текущий адрес в цепочке-приемнике.

Для работы со стеком: esp/sp— регистр указателя стека. Содержит указатель вершины стека в текущем сегменте стека. ebp/bp — регистр указателя базы кадра стека. Предназначен для организации произвольного доступа к данным внутри стека.

Большинство из них могут использоваться при программировании для хранения операндов практически в любых сочетаниях.

 

Перечислите команды сканирования цепочек. Опишите синтаксис каждой команды и принцип ее работы. Опишите результат использования префиксов повторения. Приведите примеры использования команд сканирования цепочек.

К-ды, реализующие эту операцию, производят поиск некоторого значения в области памяти, эта область рассматривается как последовательность (цепочка) элементов фиксированной длины размером 8, 16, 32 бита. Микропроцессор предоставляет 4-ре к-ды сканирования цепочки. Выбор к-ды опред размером элемента: сканировать цепочку scas адрес_приемника

сканировать цепочку байт scasb адрес_приемника С к-дой scas удобно использовать префиксы: repe и repz - если необходимо организовать поиск до тех пор, пока не будет достигнут конец цепочки (содержимое ecx/cx равно нулю); в цепочках встретился элемент, отличный от элемента в регистре al/ax/eax. repne или repnz - если нужно организовать поиск до тех пор, пока: не будет достигнут конец цепочки (содержимое ecx/cx равно нулю); в цепочке встретился элемент, совпадающий с элементом в регистре al/ax/eax.

 

11. Перечислите сегментные регистры для микропроцессоров архитектуры IA-32. Укажите разрядность перечисленных регистров. Определите функциональное назначение каждого из регистров.

6 сегментных регистров: cs, ss, ds, es, gs, fs. Микропроцессор аппаратно поддерживает структурную организацию программы в виде трех частей, называемых сегментами. Для того чтобы указать на сегменты, к которым программа имеет доступ в конкретный момент времени, и предназначены сегментные регистры. Микропроцессор поддерживает следующие типы сегментов: Сегмент кода. Содержит команды программы. Для доступа к этому сегменту служит регистр cs (code segment register) — сегментный регистр кода. Он содержит адрес сегмента с машинными командами, к которому имеет доступ микропроцессор (то есть эти команды загружаются в конвейер микропроцессора). Сегмент данных. Содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр ds (data segment register) — сегментный регистр данных, который хранит адрес сегмента данных текущей программы. Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком. Работу со стеком микропроцессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым. Для доступа к этому сегменту служит регистр ss (stack segment register) — сегментный регистр стека, содержащий адрес сегмента стека. Дополнительный сегмент данных. Неявно алгоритмы выполнения большинства машинных команд предполагают, что обрабатываемые ими данные расположены в сегменте данных, адрес которого находится в сегментном регистре ds. Если программе недостаточно одного сегмента данных, то она имеет возможность использовать еще три дополнительных сегмента данных. Но в отличие от основного сегмента данных, адрес которого содержится в сегментном регистре ds, при использовании дополнительных сегментов данных их адреса требуется указывать явно с помощью специальных префиксов переопределения сегментов в команде. Адреса дополнительных сегментов данных должны содержаться в регистрах es, gs, fs (extension data segment registers).

 

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

Эта операция позволяет извлечь элемент цепочки и поместить его в регистр- аккумулятор al, ax или eax. Эту операцию удобно использовать вместе  с поиском (сканированием), с тем, чтобы, найдя нужный элемент, извлечь его, разместив в регистр-аккумулятор загрузить элемент из цепочки в регистр-аккумулятор al/ax/eax: lods адрес_источника Команда извлекает элемент из цепочки по адресу, соответствующему содержимому пары регистров ds : esi/si, и поместить его в регистр eax / ax / al . При этом содержимое esi / si подвергается инкременту или декременту на значение, равное размеру элемента. загрузить байт из цепочки в регистр- аккумулятор al: lodsb адрес_источника определяемых элементов, в этом случае не обязательно обозначать запятыми поля со значениями которых мы согласны. Ситаксис: Имя_ переменной имя_записи имя поля 1 = выражение1:..Имя поля N= выражение N

 

Назовите регистры состояния и управления для микропроцессоров архитектуры IA-32. Укажите разрядность перечисленных регистров. Охарактеризуйте каждый регистр с точки зрения его использования и функционального назначения. Приведите структуру регистра состояния.

К этим регистрам относятся:

· регистр флагов eflags/flags;

· регистр указателя команды eip/ip.

eflags/flags (flag register) — регистр флагов. Разрядность eflags/flags — 32/16 бит. Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами. Младшая часть этого регистра полностью аналогична регистру flags для i8086. Исходя из особенностей использования, флаги регистра eflags/flags можно разделить на три группы: 8 флагов состояния отражают особенности результата исполнения арифметических или логических операций. 1 флаг управления. Обозначается df (Directory Flag). Значение флага df определяет направление поэлементной обработки в этих операциях: от начала строки к концу (df = 0) либо наоборот, от конца строки к ее началу (df = 1). 5 системных флагов, управляющих вводом/выводом, маскируемыми прерываниями, отладкой, переключением между задачами и виртуальным режимом 8086.
eip/ip — регистр-указатель команд, содержит смещение следующей подлежащей выполнению команды относительно содержимого сегментного регистра cs в текущем сегменте команд.

 


Дата добавления: 2018-05-09; просмотров: 386; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!