русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Test al, 00010000b


Дата добавления: 2014-11-28; просмотров: 873; Нарушение авторских прав


Jnz LAB

…продолжаем

LAB:

Пример 5. Посчитать число единиц в регистре al, рассматривая байт, как набор бит.

Mov cx, b ; число сдвигов

Xor bl, bl ; обнуление BL

LL: shl al, 1 ; сдвиг влево на один разряд

Jnc NO ; переход, если нет переноса

Inc bl ; иначе увеличить BL

NO: loop LL ; возврат, если cx ¹0

Пример выполнения работы

Дан массив из 10 байт. Все байты имеют нулевые старшие биты. Необходимо каждый байт, содержащий единицу в нулевом бите, дополнить до четного числа единиц установкой седьмого бита. Текст решения представлен в листинге 4.1.


Листинг 4.1. Решение

Data segment

NB db 04h, 07h, 14h, 23h, 04h,38h, 3Fh, 2Ah0Dh, 34h

Data ends

Code segment

Assume cs: code. ds:data

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

Code ends

End START




Варианты заданий



<== предыдущая лекция | следующая лекция ==>
Инструкция test выполняет логическое «И» двух операндов (байтов или слов), модифицирует флаги, но результат не возвращает, т.е. операнды не изменяются. | Блок 1.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.013 сек.