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



Download 12,06 Mb.
Pdf ko'rish
bet53/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   49   50   51   52   53   54   55   56   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Рис. 5.4. Синтаксис адресных операндов
Перемещаемые операнды — любые символьные имена, представляющие неко-
торые адреса памяти. Эти адреса могут обозначать местоположение в памяти
некоторой инструкции (если операнд — метка) или данных (если операнд —
имя области памяти в сегменте данных). Перемещаемые операнды отличаются
от адресных тем,
не привязаны к конкретному адресу физической па-
мяти. Сегментная составляющая адреса перемещаемого операнда неизвестна
и определяется после загрузки программы в память для выполнения. К при-
меру:
data segment
25
(0)
lea
- перемещаемый операнд
В этом фрагменте
— символьное имя, значением которого является ад-
рес первого байта области памяти размером 25 слов. Полный физический адрес
этой области памяти будет известен только после загрузки программы в па-
мять для выполнения.
Счетчик адреса — специфический вид операнда. Он обозначается знаком $.
Специфика этого операнда в том, что когда транслятор ассемблера встречает


Синтаксис ассемблера 93
в исходной программе этот символ, то он подставляет вместо него текущее зна-
чение счетчика адреса. Значение счетчика адреса, или, как его иногда называют
счетчика размещения, представляет собой смещение текущей машинной коман-
ды относительно начала сегмента кода. При обработке транслятором очеред-
ной команды ассемблера счетчик адреса увеличивается на длину сформирован-
ной машинной команды. Важно правильно это понимать. К примеру, обработка
директив ассемблера не влечет за собой изменения счетчика, так как директи-
вы ассемблера, в отличие от его
— это лишь указания транслятору на
выполнение определенных действий по формированию машинного представ-
ления программы, и для них транслятором не генерируется никаких конструк-
ций в памяти. В качестве примера использования в команде значения счетчика
адреса можно привести следующий фрагмент:
$+3 ; безусловный переход на команду
; длина команды
составляет 1 байт
mov a l , l
При формировании выражения для перехода, подобного $+3, нужно помнить
о длине самой команды, в которой это выражение используется, так как значе-
ние счетчика адреса соответствует смещению в сегменте команд данной, а не
следующей за ней команды. В нашем примере команда
занимает два байта.
Нужно быть осторожным, длина этой и других команд зависит от того, какие
в ней используются операнды. Команда с регистровыми операндами будет ко-
роче команды, один из операндов которой расположен в памяти. В большин-
стве случаев эту информацию можно получить, зная формат машинной коман-
ды (см. главу 3 и приложение) и анализируя колонку файла листинга
с объектным кодом команды.
Регистровый операнд — это просто имя регистра. В программе на ассемблере
можно использовать имена всех регистров общего назначения и некоторых си-
стемных регистров:
D 32-разрядные регистры ЕАХ, ЕВХ, ЕСХ, EDX, ESI, EDI, ESP, EBP;
16-разрядные регистры АХ, ВХ, СХ, DX,
SP, ВР;
8-разрядные регистры АН, AL, BH, BL, CH, CL, DH, DL;
П сегментные регистры
SS, ES, FS, GS;
D системные регистры CRO, CR2,
CR4, DRO, DR1, DR2, DR3, DR6, DR7 (см. описа-
ние команды MOV в приложении).
Например, команда add ax,bx складывает содержимое регистров АХ и ВХ и запи-
сывает результат в ВХ. Команда dec si уменьшает содержимое SI на 1. И еще
пример:
mov
mov
add
константу 4 заносим в регистр
байт по адресу pass+4 - в регистр
команда с регистровыми операндами
Операнд — порт ввода-вывода. Помимо адресного пространства оперативной
памяти процессор поддерживает адресное пространство ввода-вывода, которое
используется для доступа к устройствам ввода-вывода. Объем адресного про-
странства ввода-вывода составляет 64 Кбайт. Для любого устройства компью-
тера в этом пространстве выделяются адреса. Конкретное значение адреса в пре-
делах этого пространства называется портом ввода-вывода. Физически порту


94 Глава 5. Синтаксис ассемблера
ввода-вывода соответствует аппаратный регистр (не путать с регистром про-
цессора), доступ к которому осуществляется с помощью специальных команд
ассемблера IN и OUT. Например,
in
ввести байт из порта 60h
Регистры, адресуемые с помощью порта ввода-вывода, могут иметь разрядность
или 32 бита, но для конкретного порта разрядность регистра фиксирована.
Команды IN и OUT работают с фиксированной номенклатурой объектов. В каче-
стве источника информации или получателя применяются так
 ре-
гистры -аккумуляторы ЕАХ, АХ, AL. Выбор регистра определяется разрядностью
порта. Номер порта может задаваться непосредственным операндом в коман-
дах IN и OUT или значением в регистре DX. Последний способ позволяет динами-
чески определить номер порта в программе. Например,
dx,20h
out
записать номер порта
в регистр dx
записать значение 20h в регистр
вывести значение
в порт
 Структурные операнды используются для доступа к конкретному элементу
сложного типа данных, называемого структурой. Мы подробно разберемся со
структурами в главе 13.
* Записи (аналогично структурному типу) используются для доступа к битово-
му полю некоторой записи (глава 13).
II Операнд находится в стеке,
ж Операнд располагается в памяти. Это наиболее сложный и в то же время наи-
более гибкий способ задания операндов. Он позволяет реализовать прямой и кос-
венный варианты адресации, являющиеся основными видами адресации.
Последний вариант расположения операндов, ввиду его важности и большого
объема, рассмотрим более подробно. Обсуждение будет сопровождаться примера-
ми команд ассемблера, цель которых — демонстрация того, как изменяется фор-
мат команды ассемблера при применении того или иного вида адресации. В связи
с этим вернемся еще раз к рис. 2.8 (см. главу 2), который иллюстрирует принцип
формирования физического адреса на адресной шине процессора. Видно, что ад-
рес операнда формируется как сумма двух составляющих — сдвинутого на 4 бита
содержимого сегментного регистра и 16-разрядного эффективного адреса, кото-
рый в общем случае вычисляется как сумма трех компонентов: базы, смещения
и индекса.

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   49   50   51   52   53   54   55   56   ...   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