Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Топ:
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Интересное:
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Дисциплины:
2024-02-15 | 76 |
5.00
из
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
Команда DEC (decrement - уменьшить) вычитает 1 из содержимого регистра или ячейки памяти, но при этом (в отличие от команды SUB) не воздействует на флаг переноса CF. Команда DEC часто используется в циклах для уменьшения значения счетчика до тех пор, пока оно не станет нулевым или отрицательным. Ее можно использовать также для уменьшения значения индексного регистpa или указателя при доступе к последовательно расположенным ячейкам памяти.
Приведем несколько примеров:
DEC CX ;Уменьшить знамение 16-битового
DEC AL ; или 8-битового регистра
DEC MEM_BYTE ;Уменьшить значение байта
DEC MEM_WORD[BX] ;или слова памяти
Команда обращения знака NEG .
Команда NEG вычитает значение операнда-приемника из нулевого значения и тем самым формирует его дополнение до двух. Команда NEG оказывает на флаг то же действие, что и команда SUB. Но поскольку один из операндов равен 0, то можно точнее описать условия изменения состояний флагов. Итак, при исполнении команды NEG флаги изменяются следующим образом:
Флаг переноса CF и флаг знака SF равны 1, если операнд представляет собой ненулевое положительное число; в противном случае они равны 0.
Флаг четности PF равен 1, если результат имеет четное число битов, равных 1; в противном случае он равен 0.
Флаг нуля ZF равен 1, если операнд равен 0; в противном случае он равен 0.
Флаг переполнения OF равен 1, если операнд-байт имеет значение 80Н или операнд-слово имеет значение 8000Н; в противном случае он равен 0.
Команда NEG полезна для вычитания значения регистра или ячейки памяти из непосредственного значения. Например, Вам нужно вычесть значение регистра AL из 100. Так как непосредственное значение не может служить приемником, то команда SUB 100, AL недопустима. В качестве альтернативы можно обратить знак содержимого регистра AL и добавить к нему 100:
NEG AL
ADD AL,100
Команда расширения знака.
Существуют две команды, позволяющие выполнять операции над смешанными данными за счет удвоения размера операнда со знаком. Команда CBW (convert byte to word — преобразовать байт в слово) воспроизводит 7-й бит регистра AL во всех битах регистра AH.
Команда CWD (convert word to double word — преобразовать слово в двойное слово) воспроизводит 15-й бит регистра AX во всех битах регистра DX.
Таким образом, команда CBW позволяет сложить байт и слово, вычесть слово из байта и т. д. Аналогично, команда CWD позволяет разделить слово на слово.
Приведем несколько примеров:
CBW ;Сложить байт в AL со словом в BX
ADD AX,BX
CBW ;Умножить байт в AL на слово в BX
|
IMUL BX
CWD ;Разделить слово в AX на слово в BX
IDIV BX
Индивидуальное задание.
1 Вычислить сумму элементов массива согласно варианту и переслать результат в элемент массива с заданным номером (табл.3 Лабораторная работа №2).
2. Каждому студенту выдается 4-хзначный вариант. Согласно этому варианту вычислить следующее выражение:
F = КОН1 оп1 (КОН2 оп2 Х оп3 Y ) оп4 Z оп5 КОН3
где
КОН1, КОН2, КОН3 – числовые константы, согласно табл. 1
оп1, оп2, оп3, оп4, оп5 – операции сложения и вычитания согласно табл. 2
X, Y – переменные, тип которых определяется согласно табл. 3
Числовые константы из табл. 1 берутся согласно первой цифре варианта, операции сложения и вычитания из табл. 2 – согласно второй цифре варианта, а размер и тип переменных – из табл. 3 согласно третьей цифре варианта.
Исходные данные хранятся в памяти с адреса 0900H, вычисление выражения производится на Ассемблере, выводимые результаты — располагаются в памяти с адреса 1000Н.
Таблица 1.
Первая цифра варианта | ||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
КОН1 | 12 | 12569 | 87935 | 12 | 78 | 4596 | 12597563 | 4589 | 369 | 458 |
КОН2 | 1369 | 12 | 588 | 96385 | 47 | 589 | 78 | 29 | 3856 | 481 |
КОН3 | 3699 | 4589 | 12 | 3698 | 4589632 | 2385 | 2852 | 562235 | 336 | 36 |
Таблица 2.
Вторая цифра варианта | ||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
оп1 | + | — | — | + | + | + | + | — | — | — |
оп2 | + | + | + | — | — | + | — | — | + | + |
оп3 | — | + | — | — | + | — | + | + | — | + |
оп4 | + | + | — | — | + | — | — | + | + | + |
оп5 | — | + | + | + | — | + | + | + | + | — |
|
Таблица 3.
Третья цифра варианта | ||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
X | Char | un char | int | un int | int | un long | int | char | char | un long |
Y | Int | un int | long | un char | long | un int | int | long | char | un char |
Z | Char | un long | int | un int | char | un char | char | char | long | un int |
Примечания: – char – 8 битн. со знаком
– un. char – 8 битн. без знака
– int – 16 битн. со знаком
– un. int – 16 битн. без знака
– long – 32 битн. со знаком
– un. long – 32 битн. без знака
Пример. У студента индивидуальный вариант 990. Строим индивидуальное выражение для вычисления: F=458 – (481 + X + Y) + Z — 36
Согласно варианту переменные X, Y и Z должны быть описаны следующим образом
char x, z;
int y,f;
Ассемблерный фрагмент выглядит следующим образом:
mov bx, 481h // Пересылаем константу в регистр AX
mov al,x
cbw // Расширяем число X до 16 бит
add bx,ax // 481h + X
add bx, y // 481h + X + Y
mov al,z
cbw // Расширяем число Z до 16 бит
add bx,ax // (481h + X + Y) +Z
sub bx,36h // (481h + X + Y) +Z - 36h
mov cx, 458h
sub cx, ax
mov f,cx
Содержание отчета:
1. Название работы
2. Цель работы
3. Приборы и оборудование
4. Краткие теоретические сведения
5. Индивидуальное задание
6. Распечатанный текст программы
7. Выводы.
Вопросы к защите лабораторной работы.
1. Форматы арифметических данных.
2. Формат и правила применения команд ADD и ADC.
3. Воздействие на флаги команд ADD и ADC.
4. Формат и правила применения команд SUB и SBB.
5. Воздействие на флаги команд SUB и SBB.
6. Команды обращения знака.
7. Команды расширения знака.
Лабораторная работа №4
«Изучение команд умножения и деления»
Цель работы: изучить форматы и правила работы с командами умножения и деления микропроцессора i8086.
Оборудование: IBM - совместимый персональный компьютер, работающий под управлением операционной системы, совместимой с MS-DOS®.
Программное обеспечение: Программа DEBUG.
|
|
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!