Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод.Указания к Лаб.Раб по АВС.doc
Скачиваний:
10
Добавлен:
05.03.2016
Размер:
2.2 Mб
Скачать

Содержание отчета

Отчет по лабораторной работе должен содержать:

  1. титульный лист;

  2. тему и цель работы;

  3. листинг программы;

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

  5. дамп памяти после выполнения программы;

  6. выводы по работе.

Что нужно знать для защиты отчета

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

Рекомендуемая литература

  1. Юров В. Assembler / В. Юров. – СПб.: Питер, 2001.- 624с.:ил.

  2. Чекатков А.А. Использование TA при разработке программ / АА. Чекатков. – К.: Диалектика, 1995.

  3. Сван Т. Освоение Turbo Assembler./ Т. Сван. – К.: Диалектика, 1996.

Лабораторная работа № 6

Тема: работа с цепочечными командами

Цель работы: освоить команды цепочечной обработки данных (команды работы со строками)

Общие сведения

Изучаемые в данной работе команды называют цепочечными, но в отдельных источниках можно встретить название – строковые команды или команды обработки строковых последовательностей. Вспомним, что подразумевается под понятием строки на ассемблере. Строка, в ассемблер-программах, рассматривается как последовательность ячеек памяти какой-либо длины (байты, слова, двойные слова и т.д.) Сами значения, которые хранятся в ячейках этой памяти, могут быть, а точнее могут рассматриваться, как числовые или как символьные данные, то есть коды символов. Трактовка этих значений лежит на плечах программиста и зависит от постановки задачи.

Для выполнения данной лабораторной работы вам необходимо повторить материал лекции – «Команды цепочечной обработки данных».

Вспомним некоторые основные положения, необходимые для рассмотрения этих команд:

  • команды цепочечной обработки данных по умолчанию используют две регистровые пары - DS:SI, которая указывает на строку источник информации и ES:DI, которая указывает на строку назначения;

  • во флаговом регистре есть флаг, который настраивает работу команд этой группы. Это флаг направления – DF. Если значение этого флага 0, то есть флаг сброшен, то команды обрабатывают данные в направлении от младших адресов к старшим, если DF=1, то есть установлен, то команды обрабатывают данные в направлении от старших адресов к младшим;

  • команды цепочечной обработки данных (кроме команды LODS, LODSB, LODSW) могут использовать повторители: REP, REPZ/REPE, REPNZ/REPNE.

Ниже приведен перечень команд цепочечной обработки данных:

    • LODS – загрузка строки (LODSB загрузка строки по байтам, LODSW загрузка строки по словам),

    • STOS – запись в строку данных (STOSB запись байта в строку данных, STOSW запись слова в строку данных),

    • MOVS – пересылка данных из строки в строку (MOVSB пересылка байта данных из строки в строку, MOVSW пересылка слова данных из строки в строку),

    • CMPS – сравнение строк (CMPSB сравнение строк по байтам, CMPSW сравнение строк по словам),

    • SCAS – сканирование строки с целью сравнения строковых данных (SCASB сканирование строки байт с целью сравнения строковых данных, SCASW сканирование строки слов с целью сравнения строковых данных).

Кроме приведенных команд для выполнения отдельных заданий, в зависимости от постановки задачи, вам потребуется вспомнить команды:

  • двочиной логики (AND, OR, XOR, NOT);

  • команды сдвигов (SHL/SAL, SAR, SHR, ROR, ROL, RCR, RCL);

  • команды организации циклов с заданным количеством повторений и с выходом по условию;

  • команды условных переходов.

Ниже приведены для повторения команды организации циклов и условных переходов.

    • LООР – циклическое выполнение, пока содержимое нулю

    • LOOPE/LOOPZ – цикл.пока равно/цикл, пока нуль

    • LOOPNE/LOOPNZ – цикл пока не равно/цикл пока не нуль.

Таблица 5.1 – Jcc – команды условных переходов

Команда

Перейти, если

Условие перехода

JO

переполнение

OF=1

JNO

нет переполнения

OF=0

JC / JB / JNAE

Перенос (ниже; не выше и не равно)

CF=1

JAE / JNB / JNC

выше или равно (не ниже; нет переноса)

CF=0

JE / JZ

равно (ноль)

ZF=1

JNE / JNZ

не равно (не ноль)

ZF=0

JBE / JNA

ниже или равно (не выше)

(CF or ZF) = 1

JA / JNBE

выше (не ниже и не равно)

(CF or ZF) = 0

JS

знаковый бит равен 1

SF=1

JNS

знаковый бит равен 0

SF=0

JP / JPE

есть паритет (сумма 0-ых битов четная)

PF=1

JNP / JPO

нет паритета (сумма 0-ых битов нечетная)

PF=0

JL / JNGЕ

меньше (не больше и не равно)

(SF xor OF) = 1

JGE / JNL

больше или равно (не меньше)

(SF xor OF) = 0

Продолжение таблицы 5.1

JLE / JNG

меньше или равно (не больше)

(SF xor OF) or ZF = 1

JG / JNLE

больше (не меньше и не равно)

(SF xor OF) or ZF = 0

JCXZ

СХ=0

СХ=0