- •Методичесике указания к выполнению лабораторных работ по дисциплине
- •График проведения
- •Лабораторная работа № 1
- •Общие сведения
- •Задание
- •Содержание отчета
- •Что нужно знать для защиты отчета
- •Рекомендуемая литература
- •Лабораторная работа № 2
- •Общие сведения
- •Задание
- •Содержание отчета
- •Задание
- •Содержание отчета
- •Задание
- •Содержание отчета
- •Что нужно знать для защиты отчета
- •Рекомендуемая литература
- •Лабораторная работа № 5
- •Общие сведения
- •Задание
- •Варианты заданий
- •Содержание отчета
- •Задание
- •Варианты заданий
- •Содержание отчета
- •Что нужно знать для защиты отчета
- •Рекомендуемая литература
- •Лабораторная работа № 7
- •Общие сведения
- •Варианты заданий
- •Содержание отчета
- •Что нужно знать для защиты отчета
- •Рекомендуемая литература
Содержание отчета
Отчет по лабораторной работе должен содержать:
титульный лист;
тему и цель работы;
листинг программы;
таблицу, содержащую исходные данные, промежуточные значения и результат вычисления примера в десятичном и шестнадцатеричном форматах (для быстрой проверки);
дамп памяти после выполнения программы;
выводы по работе.
Что нужно знать для защиты отчета
Для защиты отчета по лабораторной работе необходимо внимательно изучить тему «Команды двоичной целочисленной арифметики». Вопросы для защиты лабораторной работы индивидуальны и задаются в форме небольших примеров – задач. Для ответа на вопросы необходимо понимать работу команд, правила установки флагов, на которые влияют команды, свободно читать дамп памяти и уметь отвечать на любые вопросы о работе Вашей программы.
Рекомендуемая литература
Юров В. Assembler / В. Юров. – СПб.: Питер, 2001.- 624с.:ил.
Чекатков А.А. Использование TA при разработке программ / АА. Чекатков. – К.: Диалектика, 1995.
Сван Т. Освоение 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 |