КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Пример выполнения работы
Примеры использования логических команд Логические инструкции Применение логических инструкций Логические команды служат для сброса или установки отдельных бит в байте или слове. Они включают булевы операторы НЕ, И, ИЛИ, исключающее ИЛИ и операцию тестирования, которая устанавливает флаги, но не изменяет значения своих операндов. not dst Инструкция not инвертирует все биты байта или слова. and dst, src Инструкция and выполняет операции логическое И двух операндов (байтов или слов) и возвращает результат в операнд-приемник. Бит результата устанавливается в 1, если установлены в 1 оба соответствующих ему бита операндов, и устанавливаются в 0 противном случае. or dst, src Инструкция or выполняет операции логическое ИЛИ двух операторов (байтов или слов) и помещает результат на место операнда-приемника. Бит результата устанавливается в 1, если равен 1 хотя бы один из двух соответствующих ему битов операндов и устанавливается в 0 в противном случае. xor dst, src Инструкция xor выполняет операцию логическое исключающее ИЛИ двух операндов и помещает результат на место операнда-приемника. Бит результата устанавливается в 1, если соответствующие ему биты операндов имеют противоположные значения, и устанавливается в 0 в противном случае. Установить 3 и 0 биты в регистре аl, остальные биты не изменять. or al, 00001001b Сбросить 4 и 6 битвы в регистре al, остальные биты не изменять. and al, 10101111b Инвертировать 2 и 4 биты в регистре al, остальные биты не изменять. xor al, 00010100b Перейти на метку LAB, если установлен 4 бит регистра al, в противном случае продолжить выполнение программы. test al, 00010000b jnz LAB продолжаем ... LAB: Посчитать число единиц в регистре al, рассматривая байт, как набор бит.
mov cx, b; число сдвигов xor bl, bl; обнуление BL LL: shl al, 1; сдвиг влево на один разряд jnc NO; переход, если нет переноса inc bl; иначе увеличить BL NO: loop LL; возврат, если cx ¹0 Дан массив из 10 байт. Все байты имеют нулевые старшие биты. Необходимо каждый байт содержащий единицу в нулевом бите дополнить до четного числа единиц установкой седьмого бита. Текст программы: ·.data · NB db 04h, 07h, 14h, 23h, 04h,38h, 3Fh, 2Ah0Dh, 34h ·.code START: mov ax, @data mov ds, ax; Загрузить сегментный адрес данных lea bx, NB; bx-текущий адрес массива NB mov cx, 10; cx-счетчик числа итераций BEG: mov al, [bx]; считать очередной байт массива test al, 1b; установлен ли бит 0? jz BITOCLR; нет, бит 0 сброшен ; бит 0 установлен test al, 0ffh; четное число единиц? jp OK; да, больше ничего делать не надо or al, 80h; нечетное дополнить до четного? · jmp short OK; бит 0 сброшен BITOCLR: test al, 0ffh; четное число единиц? jnp OK; нет, больше ничего делать не нужно or al,80h; нечетное, дополнить до нечетного
OK: mov [bx], al; записать измененный байт массива loop BEG QUIT: mov ax, 4c00h; Код завершения 0 Int 21h; Выход в DOS · end START Варианты заданий 1. Дан массив из 10 байт. Посчитать количество байт, в которых сброшены 6 и 4 биты. 2. Дан массив из 8 байт. Рассматривая его, как массив из 64 бит, посчитать количество единиц. 3. Дан массив из 8 байт. Рассматривая его как массив логических значений х0 х1 х2 х3 х4 х5 х6 х7 (true-есть ненулевые биты в байте, false-все биты нулевые), вычислить логическую формулу 4. f=(x7 & x6 & x1) V (x6 & x4 & x2 & x1 & x0) V (x7 & x6 & x3 & x1). 5. Дан массив из 10 байт. Посчитать количество байт с числом единиц в байте равным три. 6. Рассматривая байт как набор логических значений x7 x6 x5 x4 x3 x1 x0 (true -1, false - 0), вычислить логическую формулу 7. f=(x7 & x6 & x3) V (x6 & x4 & x2 & x1) V (x7 & x6 & x2 & x0) 8. Дан массив из 8 байт. Рассматривая его, как массив из 64 бит посчитать длину самой длинной последовательности единиц. 9. Дан массив из 10 байт. Посчитать количество единиц во всех разрядах, кратных трём: 3, 6, 9, …, 75, 78.
10. Дан массив из 5 байт. Рассматривая его как массив из 8 пятиразрядных слов, найти “исключающее или” всех 8 слов для выражения “10101”. 11. Дан массив из 6 байт. Рассматривая его, как массив из 48 бит, посчитать в нём количество нулей. 12. Дан массив из 8 байт. Рассматривая его, как массив из 64 бит, посчитать количество пар единиц в окружении нулей. Конец последовательности рассматривать как нуль. 13. Дан массив из 7 байт. Рассматривая его, как массив из восьми семибитных слов, посчитать количество слов с нечетным числом нулей в слове. 14. Дан массив из 9 байт. Рассматривая его как массив из 72 бит, посчитать число переходов между нулями и единицами. 15. Дан массив из 3 байт. Рассматривая его, как массив из 24 бит, посчитать количество одиночных единиц в окружении нулей. Конец последовательности рассматривать как нуль. 16. Дан массив из 6 байт. Посчитать количество байт число единиц, в которых не превышает 3. 17. Дан массив из 11 байт. Посчитать количество байт, в которых нет единиц, стоящих рядом. 18. Дан массив из 4 байт. Рассматривая его, как массив из 32 бит посчитать длину самой длинной последовательности нулей. 19. Дан массив из 6 байт. Посчитать количество единиц во всех разрядах, кратных пяти: 5, 10, …, 45. 20. Дан массив из 3 байт. Рассматривая его как массив из 8 трёхразрядных слов, найти “исключающее или” всех 8 слов для выражения “101”. 21. Дан массив из 7 байт. Рассматривая его, как массив из 56 бит, посчитать в нём количество нулей, стоящих после единицы. Конец последовательности рассматривать как нуль. 22. Дан массив из 8 байт. Рассматривая его, как массив из 64 бит, посчитать количество пар единиц в окружении нулей. Конец последовательности рассматривать как нуль. 23. Дан массив из 5 байт. Рассматривая его, как массив из восьми пятибитных слов, посчитать количество слов с чётным числом единиц в слове. 24. Дан массив из 6 байт. Рассматривая его, как массив из 48 бит, посчитать число двух единиц, стоящих между нулями. Конец и начало последовательности рассматривать как нули. 25. Дан массив из 3 байт. Рассматривая его, как массив из 24 бит, посчитать количество одиночных единиц в окружении нулей. Конец последовательности рассматривать как нуль. 26. Дан массив из 6 байт. Посчитать количество байт, число единиц в которых не превышает 3. 27. Дан массив из 11 байт. Посчитать количество байт, в которых нет единиц, стоящих рядом.
Дата добавления: 2014-10-15; Просмотров: 1524; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |