
- •Л Составитель: преп.Каф.ИнформатикиАркабаев Нуркасым Кылычбековичабораторная работа №1 Начало работы на языке ассемблера
- •Теоретическая часть
- •Int 21h
- •Int 21h
- •Задание
- •Контрольные вопросы.
- •Лабораторная работа №2 д Составитель: преп.Каф.ИнформатикиАркабаев Нуркасым Кылычбековичирективы языка ассемблера
- •Теоретическая часть
- •Задания (2 часа)
- •Int 21h
- •Int 21h
- •Контрольные вопросы
- •Лабораторная работа №3 к Составитель: преп.Каф.ИнформатикиАркабаев Нуркасым Кылычбековичоманды пересылки данных. Стек.
- •Теоретическая часть
- •Команды пересылки данных
- •Задание
- •Контрольные вопросы:
- •Лабораторная работа №4 а Составитель: преп.Каф.ИнформатикиАркабаев Нуркасым Кылычбековичрифметические операции. Битовые команды.
- •Теоретическая часть
- •Битовые команды
- •Задание
- •X dw ?
- •Int 21h
- •Int 21h
- •Контрольные вопросы:
- •Теоретическая часть
- •Задание
- •1. Предварительная подготовка
- •2 Порядок выполнения работы на эвм
- •Контрольные вопросы:
- •С Составитель: преп.Каф.ИнформатикиАркабаев Нуркасым Кылычбековичтроковые функции и массивы (4 часа).
- •Теоретическая часть Строковые инструкции
- •Инициализация массивов
- •Задание
- •Контрольные вопросы:
- •Лабораторная работа №7 п Составитель: преп.Каф.ИнформатикиАркабаев Нуркасым Кылычбековичроцедуры.
- •Теоретическая часть
- •Работа команд ret и retf
- •Задание
- •Программа №7.1
- •Контрольные вопросы
Битовые команды
Битовые команды рассматривают свои операнды не в виде привычных уже байтов, слов и двойных слов, в виде последовательности битов. Эти команды реализуют логические операции и команды сдвигов.
Логические операции (или булевы команды) - как, следует из названия, выполняют логические операции - отрицание, конъюнкцию, дизъюнкцию и им присуще ряд черт.
Инвертировать |
not opr |
"И" (конъюнкция) |
and dst,src |
Логическое сравнение |
test opr1,opr2 |
"ИЛИ" (дизъюнкция) |
or dst,src |
"Исключающее ИЛИ" |
xor dst,src |
Команда not на флаги не действует и работает по следующему принципу. Например:
mov al, 1100b ;al=00001100b
not al ;al=11110011b
Все остальные команды сбрасывают CF и OF, а флаги SF, ZF, PF изменяют по обычным правилам.
Команда and производит поразрядное логическое умножение операндов и записывает результат на место первого операнда. Например:
mov al, 1100b ;al=00001100b
and al, 1010b ;al=00001000b
Команда проверка test, аналог предыдущей команды, но результат логического умножения никуда не записывается, основное назначение - установка флагов, особенно флаг нуля ZF.
mov bh, 1100b
test bh, 0011b ;al=00000000b ZF=1
test bh, 1010b ;al=00001100b ZF=0
Команда or производит поразрядное логическое сложение операндов и записывает результат на место первого операнда. Например:
mov al, 1100b ;al=00001100b
or al, 1010b ;al=00001110b
Команда xor производит поразрядное логическое сложение операндов и записывает результат на место первого операнда. Данная операция соответствует фразе " или то, или другое, но не то и не другое одновременно", т.е. если биты совпадают, записывается 0, иначе 1.
mov cl, 1100b
xor cl, 1010b ;al=00000110b
xor cl, cl ;cl=00000000b
Команды сдвига - эти команды перемещают содержимое ячейки влево или вправо. Одним из операндов этих команд является количество сдвигов cnt. Оно либо равно 1, либо определяется содержимым регистра CL (при этом CL сохраняет своё содержимое после операции).
Логические сдвиги - команды сдвига, где участвуют все биты первого операнда, при этом бит, уходящий за пределы ячейки, заносится в флаг CF, а с другого конца в операнд добавляется ноль.
Логический сдвиг влево (shift left): SHL
Логический сдвиг вправо (shift right): SHR
Например:
mov al, 01000111b
shl al,1 ;CF=0, al=10001110b
mov al, 01000111b
shr al,1 ;CF=1, al=00100011b
mov bh, 0011100b
mov cl,3
shl bh,cl ;CF=1, al=11000000b
Арифметические сдвиги - предназначены для реализации быстрого умножения и деления знаковых чисел на степени двойки.
Арифметический сдвиг влево (shift arithmetic left): SAL
Арифметический сдвиг вправо (shift arithmetic right): SAR
Например:
mov ah,10001110b
sar ah,1 ;CF=0, al=11000111b
mov ah,10001110b
sal ah,1 ;CF=1, al=0011100b
Примечание. Команда sal при трансляции будет воспринята как shl, так как это разные мнемонические названия одной и той машинной команды.
Циклические сдвиги. Особенность циклических сдвигов в том, что "уходящий" бит не теряется, а возвращается в операнд, но с другого конца.
Циклический сдвиг влево (shift arithmetic left): ROL
Циклический сдвиг вправо (shift arithmetic right): ROR
Например:
mov ah,11000011b
rol ah,1 ;CF=1, al=10000111b
mov ah,11100010b
ror ah,1 ;CF=0, al=01110001b