русс | укр

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

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

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

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


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

M С помощью команды or наложить значение в регистре на исходную запись.


Дата добавления: 2013-12-23; просмотров: 546; Нарушение авторских прав


M Используя имя элемента записи в качестве счетчика сдвигов, сдвинуть влево биты элемента записи.

M Локализовать биты в регистре с помощью маски и команды and.

M Получить битовую маску, соответствующую элементу записи, с помощью оператора mask.

M Поместить запись во временную память — регистр (8-, 16- или 32-битный, в зависимости от размера записи).

Типовые алгоритмы для работы с элементами записи.

Mov ax,width iotest

...

Mov al,width i2

 

– Ассемблер содержит оператор mask, который позволяет локализовать биты нужного элемента записи. Эта локализация производится путем создания маски, размер которой совпадает с размером записи. В этой маске обнулены биты во всех позициях, за исключением тех, которые занимает элемент в записи.

– Действия по преобразованию элементов записи производятся с помощью логических команд.


Непосредственно обратиться к элементу записи невозможно. Чтобы произвести обработку интересующего нас элемента, нужно сначала выделить его, сдвинуть при необходимости к младшим разрядам, выполнить требуемые действия и поместить обратно на свое место в записи.

1) Для выделения элемента записи необходимо:

m Сдвинуть биты элемента к младшим разрядам регистра командой shr. Число разрядов для сдвига получить с использованием имени элемента записи.

В результате этих действий элемент записи будет локализован в начале рабочего регистра и далее с ним можно производить любые действия.

 

2) Чтобы поместить измененный элемент на его место в запись необходимо:

m Подготовить исходную запись к вставке измененного элемента путем обнуления битов в записи на месте этого элемента. Это можно сделать путем наложения командой and инвертированной маски элемента записи на исходную запись.




В качестве примера рассмотрим листинг, который переопределит поле i2 в записи iotest как 10.

Листинг 10.5. Работа с полем записи

.386

.model flat, stdcall

includelib import32.lib

extrn ExitProcess:PROC

extrn MessageBoxA:PROC

iotest record i1:1,i2:2=11,i3:1,i4:2=11,i5:2=00 ; 01101100

.data

flag iotest<>

.code

main:

mov al,mask i2 ; al=01100000

shr al,i2 ; биты i2 в начале ax al=00000011

and al,0feh ;переопределили i2 00000011 and 11111110;

; al=00000010

 

;помещаем i2 на место

shl al,i2 ; al=0100 0000

mov bl,[flag] ; bl=01101100

xor bl,mask i2 ; сбросили i2 01101100 xor 01100000=00001100=bl

or bl,al ; наложили 0000 1100 or 0100 0000=0100 1100

; переопределили i2

mov [flag],bl ; записали новое значение записи в память

exit:

push 0h

call ExitProcess

end main ; конец программы

_____________________________________________________

Самостоятельно на практике: Создать следующую запись

Iotest2 record i1:1,i2:2=11,i3:1,i4:2=11,i5:2=00, i6:3=110,i7:3,i8:2=01.

Разработать программу, которая полю i6 присваивает значение 101. Новое значение записи сохранить в памяти.

 




<== предыдущая лекция | следующая лекция ==>
Работа с записями | Функция DOS 3Dh — Открыть существующий файл


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


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

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

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


 


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

 
 

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

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