Целью работы является разработка простой программы использующей логические команды для приобретения практических навыков программирования ветвлений.
2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Логические команды, команды сдвига и вращения сведены в таблицу.
Мнемокод | Формат |
Логические команды AND | AND приемник, источник |
OR | OR приемник, источник |
ХOR | ХOR приемник, источник |
NOT | NOT приемник |
TEST | TEST приемник, источник |
Команды сдвига SAL, SHL | SAL, SHL приемник, источник |
SAR | SAR приемник, источник |
SHR | SHR приемник, источник |
Команды циклического сдвига ROL | ROL приемник, источник |
ROR | ROR приемник, источник |
RCL | RCL приемник, источник |
RCR | RCR приемник, источник |
Логические команды выполняют побитовые операции по приведенным ниже правилам:
Бит | Бит | AND | OR | XOR | NOT | TEST |
0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 1 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 | 1 |
3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Изучить логические команды.
2. Получить у преподавателя вариант задания n из таблицы заданий и разработать на языке ассемблер программу, исходными данными для работы которой являются исходное слово и слово-маска. В разрядах исходного слова совпадающих с единичными значениями слова-маски следует изменить значения в соответствии с заданным вариантом. После этого, пользуясь указанной операцией сдвига, подсчитать количество единиц (нулей) в слове-результате.
3. Оттранслировать программу сформировать исполняемый файл.
4. Запустить программу в пошаговом режиме под управлением отладчика с фиксацией содержимого используемых регистров и ячеек памяти до и после выполнения команды. Результаты прогона программы должны быть представлены в отчете.
4. СОДЕРЖАНИЕ ОТЧЕТА
1. Титульный лист.
2. Индивидуальное задание.
3. Текст программы с комментариями.
4. Тестовые наборы, обеспечивающие проверку алгоритма.
5. Протоколы исполнения программы под управлением отладчика в виде таблицы.
6. Выводы по работе.
5. ВАРИАНТЫ ЗАДАНИЙ
Вариант | Вид обработки | Вид операции | Считать |
1 | установить в 1 | ROL | 1 |
2 | установить в 1 | ROL | 0 |
3 | установить в 1 | SAR | 1 |
4 | установить в 1 | SAR | 0 |
5 | установить в 0 | ROR | 1 |
6 | установить в 0 | ROR | 0 |
7 | установить в 0 | RCL | 1 |
8 | установить в 0 | RCL | 0 |
9 | противоположное | RCR | 1 |
10 | противоположное | SAL | 0 |
Лабораторная работа №4 «Программирование ветвлений»
1. ЦЕЛЬ РАБОТЫ
Целью работы является разработка простой программы использующей операторы условного и безусловного перехода для приобретения практических навыков программирования ветвлений.
2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Команды условного перехода
Мненемокод | Формат |
Команды безусловной передачи управления JMP | JMP имя |
Команды условной передачи управления | |
JA / JNBE | JA / JNBE близкая метка |
JAE / JNB | JAE / JNB близкая метка |
JNC | JNC близкая метка |
JB / JNAE | JB / JNAE близкая метка |
JC | JC близкая метка |
JBE / JNA | JBE / JNA близкая метка |
JCXZ | JCXZ близкая метка |
JE / JZ | JE / JZ близкая метка |
JG / JNLE | JG / JNLE близкая метка |
JGE / JNL | JGE / JNL близкая метка |
JL / JGNE | JL / JGNE близкая метка |
JLE / JNG | JLE / JNG близкая метка |
JNE / JNZ | JNE / JNZ близкая метка |
JNO | JNO близкая метка |
JNP / JPO | JNP / JPO близкая метка |
JNS | JNS близкая метка |
JO | JO близкая метка |
JP / JPE | JP / JPE близкая метка |
JS | JS близкая метка |
3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Изучить команды условных и безусловного переходов.
2. Получить у преподавателя вариант задания n из таблицы заданий и разработать на языке ассемблер программу, которая по заданным целым значениям a, b, i, k вычисляет для заданного варианта:
а) значения i1 = f(n1)(a, b,i) и i2 = f(n2) (a, b,i);
b) значения res= f(n3)(i1,i2,k),
где вид функций f(n1), f(n2) определяется из табл.1, а функции f(n3) - из табл.2 по цифрам шифра индивидуального задания (n1,n2,n3).
Значения a, b,i, k являются исходными данными, которые должны выбираться студентом самостоятельно и задаваться в процессе исполнения программы в режиме отладки. При этом следует рассмотреть всевозможные комбинации параметров a, b и k, позволяющие проверить различные маршруты выполнения программы (по указанию преподавателя).
Таблица 1 | Таблица 2 | |||||||
1 | f={ | -4·i 0 | при a > b при a ≤ b | 1 | f={ | min (i1, i2) max (i1, i2) | при k=0 при k≠0 | |
2 | f={ | 8·i -2·i | при a > b при a ≤ b | 2 | f={ | max (i1, i2) |i1-i2| | при k<0 при k≥0 | |
3 | f={ | i 16·i | при a ≤ b при a > b | 3 | f={ | |i1+i2| min (i1, i2) | при k=0 при k≠0 | |
4 | f={ | -i/4 -i | при a ≤ b при a > b | 4 | f={ | min (i1, 8) max (8, i2) | при k<0 при k≥0 | |
5 | f={ | 2·i i/2 | при a > b при a ≤ b | 5 | f={ | min (i1, i2) |i1|+|i2| | при k=0 при k≠0 | |
6 | f={ | 128 -4·i | при a > b при a ≤ b | 6 | f={ | min (|i1|, 6) |i1|+|i2| | при k=0 при k≠0 | |
7 | f={ | 55 -4·i | при a > b при a ≤ b | 7 | f={ | |i1|-|i2| max (6, |i2|) | при k<0 при k≥0 | |
8 | f={ | 124 -i | при a ≤ b при a > b | 8 | f={ | min (i1, 8) max (4, i2) | при k=0 при k≠0 | |
9 | f={ | -50 -8·i | при a > b при a ≤ b | 9 | f={ | |i1+i2| min (i1, |i2|) | при k<0 при k≥0 | |
10 | f={ | i/16 -i | при a ≤ b при a > b | 10 | f={ | min (i1,i2) max (i1, i2) | при k=0 при k≠0 |
При вычислении функций fn1 и fn2 для реализации операции умножения следует использовать арифметический сдвиг.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


