Дипломированных специалистов «Информатика и вычислительная техника»


Дополнительные возможности обработки



Download 12,06 Mb.
Pdf ko'rish
bet165/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   161   162   163   164   165   166   167   168   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Дополнительные возможности обработки
Понимая важность типа данных «запись» для эффективного программирования,
разработчики транслятора TASM, начиная с версии 3.0, включили в систему его
команд две дополнительные команды на правах директив. Последнее означает, что
эти команды внешне имеют формат обычных команд ассемблера, но после транс-
ляции они приводятся к одной или нескольким машинным командам. Введение
этих команд в язык
повышает наглядность работы с записями, оптимизи-
рует код и уменьшает размер программы. Эти команды позволяют скрыть от про-
граммиста действия по выделению и установке отдельных полей записи (см. ранее).
Для установки значения некоторого поля записи используется команда SETFIELD
с синтаксисом:
s e t f i e l d имя_элемента_записи
Для выборки значения некоторого поля записи используется команда GETFIELD
с синтаксисом:
g e t f i e l d имя_элемента_записи
Работа команды SETFIELD заключается в следующем. Местоположение записи
определяется операндом приемник, который может представлять собой имя регис-
тра или адрес памяти. Операнд
определяет элемент записи,
с которым ведется работа (по сути, если вы были внимательны, он определяет сме-
щение элемента в записи относительно младшего разряда). Новое значение, в ко-


Записи 291
торое необходимо установить указанный элемент записи, должно содержаться
в операнде регистр_источник. Обрабатывая данную команду, транслятор генериру-
ет последовательность команд, которые выполняют следующие действия.
1. Сдвиг содержимого операнда регистр_источник влево на количество разрядов,
соответствующее расположению элемента в записи.
2. Выполнение логической операции OR над операндами п р и е м н и к и регистр_ис-
точник. Результат операции помещается в операнд приемник.
Важно отметить, что SETFIELD не производит предварительной очистки элемен-
та, в результате после логического сложения командой OR возможно наложение
старого содержимого элемента и нового устанавливаемого значения. Поэтому тре-
буется предварительно подготовить поле в записи путем его обнуления.
Действие команды GETFIELD обратно действию SETFIELD. В качестве операнда
источник может быть указан либо регистр, либо адрес памяти. В регистр, указан-
ный операндом регистр_приемник, помещается результат работы команды — значе-
ние элемента записи. Интересная особенность связана с операндом регистр_прием-
ник. Команда GETFIELD всегда использует 16-разрядный регистр, даже если вы
укажете в этой команде имя 8-разрядного регистра.
В качестве примера применения команд SETFIELD и GETFIELD рассмотрим лис-
тинг 13.8.
Листинг
Работа с полями записи
model small
stack 256
record
flag iotest <>
main:
mov
mov bl,3
setfield
xor
g e t f i e l d
mov
, 1
s e t f i e l d
s e t f i e l d
exi
mov
выход
int 21h
end main ;конец программы
В листинге 13.8 демонстрируется порядок извлечения и установки некоторых
полей записи. Результат работы команд SETFIELD и GETFIELD удобнее всего изучать
в отладчике. При установке значений полей не производится их предварительная
очистка. Это сделано специально. Для такого рода операций лучше использовать
некоторые универсальные механизмы, иначе велик риск внесения ошибок, кото-
рые трудно обнаружить и исправить. В качестве такого механизма можно предло-
жить макрокоманды, к рассмотрению которых мы и приступим в следующей главе.


292 Глава
Сложные структуры данных
В заключение хотелось бы привести еще один пример использования записей.
Это описание регистра EFLAGS. Для удобства мы разбили описание на три части:
eflags_l_7 — младший байт регистра EFLAGS/FLAGS;
я
— второй байт регистра EFLAGS/FLAGS;
т eflags_h — старшая половина регистра EFLAGS.
record
record
record
К этому описанию стоит вернуться после изучения материала следующей гла-
вы, посвященного макрокомандам. Возможно, что для работы с регистром флагов
вам захочется разработать соответствующую макрокоманду. Подобная хорошо
протестированная макрокоманда в будущем поможет вам избежать многих труд-
но обнаруживаемых ошибок.
Итоги
9 TASM поддерживает несколько дополнительных типов данных, значительно
расширяющих возможности базовых директив резервирования и инициализа-
ции данных. По сути, эти типы заимствованы из языков высокого уровня и при-
званы облегчить разработку прикладных программ на ассемблере.
- Практическое использование дополнительных типов данных требует повышен-
ного внимания и отражает специфику программирования на языке ассемблера.
Понятия массива и индексации массива весьма условны, и логическая интер-
претация области памяти, отведенной под массив, определяется алгоритмом
обработки.
Тип структуры в языке ассемблера позволяет создать совокупность логически
взаимосвязанных разнотипных данных и рассматривать их как отдельный
объект. Это очень удобно, когда в программе необходимо иметь несколько та-
ких объектов. В этом случае обычно организуют массив структур.
is Основное достоинство объединений — в возможности «плюрализма суждений»
о типе одной и той же области памяти.
в Записи в языке ассемблера расширяют возможности логических команд для
работы на уровне битов, что подчеркивает значение ассемблера как языка сис-
темного программирования.



Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   161   162   163   164   165   166   167   168   ...   357




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish