Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вопросы - ответы 2010 финал.docx
Скачиваний:
6
Добавлен:
14.09.2019
Размер:
393.65 Кб
Скачать

12) Язык Ассемблера.Логические операции

Логические операции являются важным элементом в проектировании микросхем имеют много общего с логикой программирования. Команды and, or, xor, test являются командами логических операций. Эти команды используются для сброса и установки битов и для арифметических операций в коде АСКИ. Все эти команды обрабатывают один байт или одно слово в регистре или памяти и устанавливают флаги CF,OF,PF,SF,ZF

Пусть AL содержит 1100 0100 , а BH – 0101 1100

AND-Если оба из сравниваемых битов равны 1, то рез-т равен 1. В остальных случаях 0

AND AL,BH ; Устанавливает в AL 0100 0100

OR – Если хотя бы один из сравниваемых битов равен 1, то рез-т равен 1.

OR BH,AL ;Устанавливает в BH 1101 1101

XOR-Если один из сравниваемых битов равен 0, а другой -1 то рез-т равен 1. Если одинаковые-0

XOR AL,AL Устанавливает в AL 0000 0000

Test-действует как and –устанавливает флаги, но не изменяет биты.

Test BL, 11110000b

Jnz ….

LOOP – цикл. Управляет выполнением группы команд определенное число раз. До начала цикла в регистре СX должно быть загружено число выполняемых циклов. Команда LOOP находится в конце цикла, где она уменьшает значение в регистре СХ на единицу.Если знач . в СХ не равно 0, то команда передает урпавление по адресу , указанному в операнде (прибавляет к регистру IP значение операнда) (модификации-LOOPE/LOOPZ –цикл, если равно или нуль или LOOPNE/LOOPNZ-цикл, если не равно или не нуль)

Команды переходов- JE/JZ, JCXZ,JBE/JNA, JA/JNBE

Команды циклического сдвига

13. Язык ассемблера. Операции сдвига.

Команды сдвига делятся на линейные и циклические.

1 Логический сдвиг

SHL – логический сдвиг влево

SHR – логический сдвиг вправо

1.2 Арифметический сдвиг

SAL – арифметический сдвиг влево

SAR – арифметический сдвиг вправо

Пример:

MOV AL, 0FEH //11111100 = 252

SHR AL, 1 //11111110 = 254

SAR AL, 1 //01111111 = 127

2 Команды циклического сдвига

Делятся на команды простого сдвига и через флаг CF.

1 Команды простого сдвига

ROL–сдвиг влево

ROR–сдвиг вправо

2 Команды циклического сдвига через флаг переноса

RCL–сдвиг влево

RCR–сдвиг вправо

Сначала забирается старое значение флага CF, а потом уже берется новое. Эти команды используются для сдвига длинных чисел.

(новое значение)

15. Команды пересылки и сравнения строк.

Команда LODS загружает строку. Просто помещает из памяти а регистр ал байт, в ax – слово. Адрес, из которого производится загрузка, хранится в паре DS:SI. В зависимости от состояния флага DFоперация также уменьшается или увеличивается в SI на 1 при перемещении байта.

STOS сохранение строки. Сохраняет содержимое AL AXв память. Адреса в памяти всегда содержатся в паре ES:DI. В зависимости от состояния флага Df инструкция так же увеличивается или уменьшается на 1.

Инструкция сравнения строк CMPS. Сравнивает содержимое одного элемента данных с содержимым другого. В зависимости от состояния флага DF, CMPS увеличивает или уменьшает значения в SI DI на 1. Операция завершается при ожидаемом результате сравнения или в случаи, когда в CX оказывается нулевое значение.

19. Команды организации вызова процедур

При организации многомодульной программы необходимо решить 2 проблемы:

  1. Обеспечить обращение к подпрограмме и возврат из подпрограммы.

  2. Обеспечить передачу данных в подпрограмму и обеспечить передачу результата из неё.

Для решения первой проблемы предназначены команды вызова процедуры и возврата из процедуры.

Точка вызова – оператор вызова + следующий оператор

Нужно решить проблему: во время вызова необходимо передать процедуре метку, куда она будет возвращаться.

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

вызов: CALL

возврат: RET

В IBM PC существуют два вызова процедур:

  1. Внутрисегментный (ближний)

  2. Межсегментный (дальний)

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

9.1 Ближний вызов и возврат

CALL ссылка

  1. IP  стек

  2. ссылка (хххх)  IP

*IP – адрес следующей команды

RET

стек  IP

9.2 Дальний вызов и возврат

CALL

  1. CS  стек

  2. IP  стек

  3. Смещение  IP [XXXX  IP]

  4. Начало сегмента  CS [YYYY  CS]

RET

  1. Стек  IP

  2. Стек  CS

Коды команд для внутрисегментного и межсегментного вызовов различны. Транслятор определяет автоматически код команды по описанию вызываемой процедуры и формирует коды команд в соответствии с типом процедуры.

Структуры данных и алгоритмы их обработки

Необходимо различать структуры данных и структуры хранения данных.

Структуры данных (абстрактные структуры) – это математические модели, предназначенные для представления информации об объектах и о процессах. Структуры данных появились еще во времена Эвклида.

Структуры хранения данных – это структуры представления информации в компьютере, с помощью которых представляются структуры данных.

1 Структуры хранения данных

  1. Скаляр (единичный элемент)

  2. Массив

  3. Запись

  4. Последовательность (файл)

  5. Динамический список*

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

21. Структуры данных. Классификация и основные понятия.

Структуры данных классифицируются по размерности и линейности.

Структура данных является линейной, если для любого элемента структуры, кроме первого и последнего, имеется только один последующий и только один предыдущий элемент, и первый элемент имеет только один последующий, а последний – только один предыдущий. В противном случае структура нелинейная.

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

Структура данных

Структура хранения данных

Классификация

1.

Скаляр

Скаляр (единичный элемент)

линейная

фиксированной длины

2.

Массив

Массив

линейная

фиксированной длины

3.

Запись – это набор разнотипных поименованных элементов, объединенных в один элемент

Запись

линейная

фиксированной длины

4.

Последовательность

Файл (последовательность)

линейная

переменной длины

5.

Многомерный массив

Массив)

линейная

фиксированной длины

6.

Множества

Массив (иногда, очень редко, список)

линейная

переменной длины

7.

Стек

Массив или динамический список

линейная

переменной длины

8.

Очередь

9.

Дек

10.

Таблица

Массив записей, динамический список

линейная

переменной длины

11.

Дерево

Динамический список, иногда: список на базе массива или массива записей

нелинейная

переменной длины

12.

Граф

Динамический список, редко – список на базе массива

нелинейная

переменной длины

22. Линейные структуры данных. Массив

Массив – это последовательность пронумерованных однотипных (базовых) элементов, расположенных друг за другом на не переменном участке ОП. Является структурой со случайным доступом. Для доступа к необходимой компоненте к имени массива добавляется индекс.

Для массива определены операции:

  • Запись (аргумент: значение и номер элемента, результат: отсутствует)

  • Чтение (выборка)(аргумент: номер элемента, результат: значение выбранного элемента).

Ошибка возникает, если номер элемента выходит за пределы, установленные для массива.