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



Команды циклического сдвига: ROL, ROR, RCL, RCR

Синтаксис:

ROL операнд, счетчик_сдвигов

ROR операнд, счетчик_сдвигов

RCL операнд, счетчик_сдвигов

RCR операнд, счетчик_сдвигов

ROL — циклический сдвиг влево. Содержимое операнда сдвигается влево на количество битов, определяемое операндом счетчик_сдвигов. Сдвигаемые влево биты записываются в тот же операнд справа. ROR — циклический сдвиг вправо. Содержимое операнда сдвигается вправо на количество битов, определяемое операндом счетчик_сдвигов. Сдвигаемые вправо биты записываются в тот же операнд слева. RCL — циклический сдвиг влево через перенос. Содержимое операнда сдвигается влево на количество битов, определяемое операндом счетчик_сдвигов. Сдвигаемые биты поочередно становятся значением флага переноса CF; RCR — циклический сдвиг вправо через перенос. Содержимое операнда сдвигается вправо на количество битов, определяемое операндом счетчик_сдвигов. Сдвигаемые биты поочередно становятся значением флага переноса CF.

Пример:

rcl eax, 1

rol eax,16

ror  eax,1

 

Дайте определение понятия «синтаксис ассемблера» как правила написания программных кодов. Представьте формат предложения ассемблера. Представьте общий формат команд и макрокоманд ассемблера.

Предложения ассемблера, составляющие программу могут представлять синтаксические конструкции 4-х типов:- команды (инструкции): представляют собой символические аналоги машинных команд;процессе трансляции инструкции ассемблера преобразуются в соответствующие команды в системе команд ассемблера;- макрокоманды: это оформляемые определённым образом предложения текста программы замещаемые во время трансляции с генерированным кодом, согласно алгоритму макроса;- директивы, являются указанием транслятору ассемблера на выполнение некоторых действий. У директив нет аналогов в машинном представлении. - комментарии: содержат любые символы в том числе и русские. Комментарии игнорируются транслятором. Синтаксис ассемблера -это предложения составляющие программу, которые могут представлять синтаксическую конструкцию, соответствующую команде, макрокоманде, директиве или комментарию.

 

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

Цикл, представляет собой алгоритмическую структуру, используется для повторения каких либо действий пока выполняется условие. Организовать циклическое выполнение некоторого участка программы можно, используя команды условной передачи управления или команду безусловного перехода jmp, а также с помощью циклических команд loop, loope/loopz, loopne/loopnz. Jmp – команда безусловного перехода loop метка_перехода — повторить цикл. Команда позволяет организовать циклы, подобные циклам for в языках высокого уровня с автоматическим уменьшением счетчика цикла.

loope/loopz метка_перехода — повторить цикл, пока cx <> 0 или zf = 0. Команды loope и loopz — абсолютные синонимы, поэтому используйте ту команду, которая вам больше нравиться. loopne/loopnz метка_перехода— повторить цикл пока cx <> 0 или zf = 1. Команды loopne и loopnz также абсолютные синонимы.

Пример:

MOV CX,20

A20:

INC         AX         

ADD        BX, AX                

LOOP      A20

Дайте определение понятия «директива» в ассемблере. Представьте общий формат директив ассемблера. Перечислите существующие директивы.

Директивы ассемблера — параметры (ключевые слова) в тексте программы на языке ассемблера, влияющие на процесс ассемблирования или свойства выходного файла. Синтаксис задания зависит от ассемблера. Директивы: команды, не переводящиеся непосредственно в машинные инструкции, а управляющие работой компилятора. Набор и синтаксис их значительно разнятся и зависят не от аппаратной платформы, а от используемого компилятора (порождая диалекты языков в пределах одного семейства архитектур). В качестве набора директив можно выделить:

- определение данных (констант и переменных) ;

- управление организацией программы в памяти и параметрами выходного файла;

- задание режима работы компилятора;

- всевозможные абстракции (т.е. элементы языков высокого уровня) — от оформления процедур и функций (для упрощения реализации парадигмы процедурного программирования) до условных конструкций и циклов (для парадигмы структурного программирования);

- макросы.

Общий формат директивы: (с точкой или без) зарезервированное символьное имя принадлежащее директиве.

Директивы: ASSUME; EXTRN; GROUP; INCLUDE; LABEL; NAME; ORG; PROC; PUBLIC; RECORD; SEGMENT; STRUC.

 

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

Цепочка - непрерывная последовательность байт, слов или двойных слов, обрабатываемая как единое целое. Основное отличие цепочек от массивов состоит в способе доступа к элементам: для массивов - произвольный доступ, для цепочек - только последовательный (от начала цепочки к концу или от конца к началу). Цепочечные команды - команды для обработки цепочек. Особенностью всех цепочечных команд (кроме обработки очередного элемента цепочки) является автоматическое продвижение к следующему элементу цепочки.

Цепочечные команды:

Адресация операндов:

- цепочка источник - ds:si;

- цепочка приёмник - es:di.

Последовательность действий:

1) Сформировать физические адреса:

· адрес_источника — пара ds:esi/si;

· адрес_приемника — пара es:edi/di.

2) Установить флаг направления df: командами cld, std.

3) Установить префикс, если необходим в зависимости от команды.

 

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

Этапы создания программ:· Редактирование· Исходный файл Ассемблера *.ASM · Ассемблирование· Объектный файл *.OBJ· Компоновка· Выполняемый файл *.EXE· ВыполнениеНа этапе ассемблирования ваш исходный код (текст программы) превращается в промежуточную форму, которая называется объектным модулем, а на этапе компоновки один или несколько модулей комбинируются в выполняемую программу. Ассемблирование и компоновку вы можете выполнять с помощью командной строки.

Компоновка программы

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

 

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

Способы передачи аргументов в процедуру: через область памяти, через стек, через регистры, и с помощью extern и public.Передача аргументов через общую область памяти предполагает, что вызывающая и вызываемая программы условились использовать некоторую область памяти как общую. Транслятор предоставляет специальное средство для организации такой области памяти. Это директивы сегментации и их атрибуты. Один из них — атрибут комбинирования сегментов. Наличие этого атрибута указывает компоновщику, как нужно комбинировать сегменты, имеющие одно имя. Достоинством является: разделение на модули, отделение интерфейса от реализации. Недостатком этого способа в реальном режиме работы процессора является отсутствие средств защиты данных от разрушения, так как нельзя проконтролировать соблюдение правил доступа к этим данным.

 


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

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






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