Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CП_Ответы.doc
Скачиваний:
15
Добавлен:
27.09.2019
Размер:
281.09 Кб
Скачать
  1. Перечислите команды работы с битами. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд работы с битами.

Команды работы с битами: bsf, bsr, ВТ, BTS, BTR, ВТС.

Синаксис:

bsf операнд_1, операнд_2

bsr операнд_1,операнд_2

bt операнд, смещение_бита

bts операнд, смещение_бита

btr операнд, смещение_бита

btc операнд, смещение_бита

bsf — сканирование битов вперед.

bsr — сканирование битов в обратном порядке.

Команда проверки бита ВТ (Bit Test) переносит значение бита в флаг CF Команда проверки и установки бита BTS переносит значение бита в флаг CF и затем устанавливает проверяемый бит в 1. Команда проверки и сброса бита BTR переносит значение бита во флаг CF и затем устанавливает этот бит в 0.

Команда проверки и инвертирования бита ВТС переносит значение бита в флаг CF и затем инвертирует значение этого бита.

Пример:

bsf bx,ax

bsr bx,ax

bt ax,5

mov ax,10

bts pole,ах

  1. Перечислите основные типы данных микропроцессора. Опишите каждый тип с точки зрения размерности и с точки зрения разрядности. Сформулируйте основной принцип хранения данных для микропроцессоров Intel. Поясните этот принцип на конкретном примере.

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

  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 в младшем байте

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

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

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

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

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

Пример:

.data

str_1 db ‘Ассемблер — базовый язык компьютера’

full_pnt dd str_1

.code

start:

lea si,str_1

les bx,full_pnt    

end start

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

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

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

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

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

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

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

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

  1. Перечислите сегментные регистры для микропроцессоров архитектуры 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).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]