Дайте определение понятия “операнд”. Приведите классификацию операндов, поддерживаемых транслятором ассемблера. Поясните на примерах каждый перечисленный пункт классификации.



Операнд – объект, над которым выполняется действие. Классификацию операндов:

Постоянные или непосредственные операнды — число, строка, имя или выражение, имеющие некоторое фиксированное значение. Адресные операнды — задают физическое расположение операнда в памяти с помощью указания двух составляющих адреса: сегмента и смещений.

mov ax,0000hmov ds,axmov ax,ds:0000h ;записать слово в ax из области памяти по физическому адресу 0000:0000

- Перемещаемые операнды — любые символьные имена, представляющие некоторые адреса памяти.

- Считчик адреса — специфический вид операнда. Он обозначается знаком $.

jmp $+3 ;безусловный переход на команду movcld ;длина команды cld составляет 1 байтmov al,1

- Базовый и индексный операнды. Этот тип операндов используется для реали­зации косвенной базовой, косвенной индексной адресации или их комбина­ций и расширений.

- Регистровый операнд - это просто имя регистра. В программе на ассемблере можно использовать имена всех регистров общего назначения и большинства системных регистров.

mov al,4 ;константу 4 заносим в регистр almov dl,pass+4 ;байт по адресу pass+4 в регистрdladd al,dl ;команда с регистровыми операндами

- Структурные операнды - используются для доступа к конкретному элементу сложного типа данных, называемого структурой.

- Записи - используются для доступа к битовому полю некоторой записи.


 

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

Макроопределение представляет собой блок исходных предложений, начинающийся директивой MACRO и заканчивающийся директивой ENDM. Формат макроопределения:

имя MACRO [[формальный параметр,...]]

предложения

ENDM

Макрокоманда - оформляемые определ образом предложения текста программы, замещаемые во время трансляции с генерированным кодом согласно алгоритму макроса.

Макрорасширение - это подстановка тела макроса из макроопределения на место макровызова с заменой фиктивных параметров на фактические.

Использование макрокоманд позволяет:- упростить и сократить исходный текст программы;

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

Различие процедур и макросов:

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

 Текст процедуры статичен и неизменен в то время, как состав макрорасширения может зависеть от параметров макрокоманды. Следует помнить, что параметры макрокоманды - это значения времени ассемблирования, а параметры процедуры принимают какие-то определенные значения лишь в процессе выполнения программы.

Синтаксис фактических параметров: имя [[фактический параметр,...]]

Синтаксис формальных параметров: имя [[формальный параметр,...]]

 

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

Перечислим теперь возможные типы операторов ассемблера и синтаксические правила формирования выражений ассемблера. Арифметические операторы Операторы сдвига Операторы сравнения Логические операторы Индексный оператор Оператор переопределения типа Оператор переопределения сегмента Оператор именования типа структуры Оператор получения сегментной составляющей адреса выражения Оператор получения смещения выражения Дадим краткую характеристику операторов: Арифметические операторы. К ним относятся: унарные “+” и “”; бинарные “+” и “”; умножения “*”; целочисленного деления “/”; получения остатка от деления “mod”. Операторы сдвига выполняют сдвиг выражения на указанное количество разрядов

Операторы сравнения (возвращают значение “истина” или “ложь”) предназначены для формирования логических выражений Операторы сдвига выполняют сдвиг выражения на указанное количество разрядов Операторы сравнения (возвращают значение “истина” или “ложь”) предназначены для формирования логических выражений

Допустимыми символами при написании текста программ являются:

1. все латинские буквы: A—Z,a—z. При этом заглавные и строчные буквы считаются эквивалентными;

2. цифры от 0 до 9;

3. знаки ?,@,$,_,&;

4. разделители , . [ ] ( ) < > { } + / * % ! ' " ? \ = # ^.

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

 

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

Массивструктурированный тип данных, состоящий из некоторого числа элементов одного типа(Последовательность значений определённой размерности записанной в памяти).

В языке ассемблера индексы массивов — это обычные адреса, но с ними работают особым образом. Другими словами, когда при программировании на ассемблере говорится об индексе, то, скорее, подразумевается под этим не номер элемента в массиве, а некоторый адрес.

Способы моделирования массивов:

-Можно перечислить элементы массива При перечислении элементы разделяются запятыми.

- Можно использовать оператор повторения DUP. mas dw 5 dup (0)

-Можно использовать директивы LABEL и REPT.

Организация доступа к элементам:

-Индексная адресация со смещением

-Базовая индексная адресация со смещением

Способы адресации:

-Базовая адресация

-Индексная адресация

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

Пример:

mas         dw     0, 1, 2, 3, 4, 5

mov         si, 4

mov      ax, mas[si]           

 

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

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

TINY Код и данные объединены в одну группу с именем DGROUP. Используется для создания программ формата .com. SMALL Эту модель обычно используют для большинства программ на ассемблере. MEDIUM Данные объединены в одной группе; все ссылки на них — типа near. COMPACT Код в одном сегменте; ссылка на данные — типа far. LARGE Код в нескольких сегментах, по одному на каждый объединяемый программный модуль.

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

Микропроцессор имеет 18 команд условного перехода.

Команды условного перехода(несколько): JCC,JCXZ/JECXZ, JE, JZ, JG, JGE, JL, JLE

Источниками условия могут быть:

- любая команда, изменяющая состояние арифметических флагов;

- команда сравнения cmp, сравнивающая значения двух операндов;

- состояние регистра ecx/cx.

Команды условного перехода имеют одинаковый синтаксис:

jcc метка_перехода

Мнемокод всех команд начинается с “j” (от слова Jump) , cc — определяет конкретное условие, анализируемое командой.

Назначение: переход внутри текущего сегмента команд в зависимости от некоторого условия.

JCXZ/JECXZ - Переход, если CX/ECX равен нулю

je - Переход, если равно

JZ - Переход, если 0

JG - Переход, если больше

JGE - Переход, если больше или равно

JL - Переход, если меньше

JLE - Переход, если меньше или равно

Пример:

cmp ax,len je m1 ....m1:

 


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

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






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