порта, но тогда команда удлинится. Значение имеет длину в
1 бойт.
Следующий класс команд — команды передачи управле-
ния.
Язык Ассемблера поддерживает п р о ц е д у р н о -о р и е н ти р о -
в а н н о е п р о гр а м м и р о в а н и е . Процедуры оформляются так:
CODE
M yP ro c P ro c N e a r I F a r ; N e a r у к а зы в а ть н е о б я з а т е л ь н о .
. . . ; к о д процедуры
r e t ; к о д в о з в р а та
M yP roc ENDP
Теперь о командах.
c a l l
— вызов. В качестве операнда комонда может при-
нимать все что угодно — регистр, память, непосредственное
значение. Также допустимо приведение типа, нопример,
w o r d
PTR, DWORD PTR, FAR PTR.
Все это делоется затем, чтобы оп-
ределить, как будет работать команда. При внутрисегмент-
ном
(n e a r )
вызове в стек записывается значение
i p
и пере-
дается управление по указонному адресу При межсегмент-
ном
(f a r )
вызове в стек записывается сначала
i p ,
затем —
C S ,
и лишь после этого осуществляется вызов.
r e t
— возврат. Команда действует обротно
c a l l
— из-
влекается IP и управление передается по полученному ад-
ресу. Для того чтобы осуществить дальний возврат, при ко-
тором извлекается еще и
C S ,
используется команда
r e t f .
Ко-
манды эти могут принимать аргумент — число, указывающее,
сколько слов надо выбросить из стека перед возвратом. Т.е.
код возврота из процедуры зоключается в использовании ко-
МОНДЫ
RET.
IN T
— вызов процедуры оброботки прерывания. Первый
килобайт оперативной памяти компьютера содержит табли-
цу из 256 4-байтных (долеких) указателей на процедуры, от-
ветственные за обработку прерываний. П реры вания подраз-
деляются на 2 группы — а пп ар а тн ы е и програм м ны е. Суть в
том, что при возникновении аппаратного прерывания вычис-
лительный процесс останавливается, оно обрабатывается, и
управление возврощается программе. Такие прерывания ини-
циируются контроллером прерываний по сигналам IRQ под-
ключенных к нему устройств. Этот мехонизм используется, на-
пример, при вводе данных с клавиатуры — прерывания воз-
.
никают по нажатию клавиш. Программные же прерывания
t k
предоставляют сервис и являются просто процедурами. На
Я
пример,
преры вание
Ю Н
обеспечивается
видеоплатой,
H
13Н
— дисковым контроллером,
21Н
— MS-DOS,
ззн
— драй-
вером мыши и т.п. Понятно, команда
i n t в
качестве операн-
да принимает число размерностью 1 байт. Существует за-
нятное прерывоние
i n t
3, предназначенное для целей отлод-
ки (и защиты от оной). О т
c a l l
команда
i n t
отличается лишь
тем, что в стек зоталкивается еще и регистр
f l a g s .
Для воз-
врата из процедуры обработки используется команда
i r e t .
Подробнее об этом я расскажу в завершающей чости.
JMP
— команда безусловного переходо. О но также при-
нимает все мыслимые типы операндов, но, в отличие от CALL,
ничего не пишет в стек.
J x x x
— совокупность команд условного переходо. О ни
отличаются от амр тем, что могут «прыгать» не долее чем на
127 байт по обе стороны от себя. Далее приведен их спи-
сок (через дробь указаны команды-антонимы, через запя-
тую — команды-синонимы):
^ j c / jn c — перейти в зовисимости от флага переноса
(carry);
^ jo / jn o — перейти в зависимости от флога переполне-
ния (Overflow);
^ ( j e , J Z ) / ( jn e , jn z ) — перейти в зависимости от фло-
га нулевого результата (Zero,Equal);
S j b / jn b — перейти, если ниже/не ниже (below — мень-
ше по модулю);
S jb e / j a — если ниже или равно (below or equal)/ecnn
выше (obove — больше по модулю) — перейти;
S j s / j n S — перейти, если есть знок (signj/н е т зноко;
^ (
j p ,
j p e ) / ( j n p ,
JP O )
— переход в случае четности (par-
ity) или ровенства/отсутствия четности или переполнения;
^ j l / jg e — перейти, если меньше (Lessl/больш е или рав-
но (Greater or equal);
S J le / j g — перейти, если меньше или равно/больш е;
'б JCXZ — перейти, если сх=о
Если же требуется организовать переход на относитель-
но (>127 байт) далекую метку, пользуются таким приемом:
j l e m l
jm p f a r la b e l
m l: . . .
f a r _ l a b e l : . . .
Таким образом, это конструкция обеспечивает дальний
переход по условию JG.
lo o p — организация цикло. Э та команда осуществляет пе-
реход на метку до тех пор, пока регистр с х не становится
ровным о. О на уменьшает его на 1, и если он перед ее вы-
полнением уже выставлен в нуль, он станет равным
65535,
и цикл пойдет, что назывоется, «по полной программе». Есть
ее модификации — loo pe, loopz/ loopne, loopnz — анало-
гично комондам условного перехода. Все варианты loop м о-
гут осуществлять переходы лишь на +127 байт.
REP
— префикс повторения. Главным образом использу-
ется вместе с цепочечными комондами. Действует во всем
подобно loop, заставляя следующую за ним команду выпол-
няться до тех пор, пока с х не станет равным о. Токже суще-
ствуют его модификации — repe, r epz/ repne, repnz
Вот, в основном, и все, что касается передачи управ-
ления.
В следующий раз мы разберем основные арифметические
команды, команды управления микропроцессором, цепочеч-
ные команды, также, понятное дело, сам процесс ассембли-
рования — и утилиты, которые могут помочь в этом непро-
стом деле Сегодня «за бортом» остались директивы услов-
ного ассемблирования (для первых проектов они не очень-
то нужны) и множество специфических команд. Оставляю это
на вашу совесть — своим циклом статей я лишь пытаюсь при-
влечь ваше внимание к языку Ассемблера, чтобы вы далее
могли обучаться самостоятельно, используя справочную ли-
тературу.
А
Окончание. Начало на стр. 3 4 -3 5
Com m ent: Ком м ентарий.
M e s s a g e -ID : < 4 3 3 1 .6 2 9 . X Y z i-W h a t @ O t h e r-H o s t
Поле
S u b je c t
определяет тему сообщения,
R e p ly -T O —
пользователя, которому отвечают,
Comment
— комментарий,
i n - R e p l y - Т о —
покозывает, что сообщение относится к ти-
пу «В ответ на Ваше сообщение, отвечающее на сообщ е-
ние, отвечающее.
..».
Следует сказать, что ф ормат сообщения постоянно до-
полняется и совершенствуется. В RFC-1327 введены допол-
нительные поля для совместимости с почтой Х.400. Кроме
того, следует обратить внимание на поля некоторых доволь-
но часто встречающихся заголовков, которые не регламен-
тированы в RFC-822. Так, первое предложение заголовка,
которое начинается со слова
From ,
содержит UUCP-путь со-
общения, по которому можно определить, через какие ма-
шины сообщ ение «пробиралось». Поле
R e c e iv e d :
содер-
жит транзитные адреса почтовых серверов с датой и вре-
менем прохождения сообщения. Вся эта информация полез-
на при разборе трудностей с доставкой почты.
быввды и заклшчеиия
В заключение хотелось бы отметить, что возможности поч-
ты не ограничивоются только пересылкой корреспонденции.
По почте можно получить доступ ко многим интернет-ресур-
сам, которые имеют почтовых роботов, отвечающих на за-
просы строждущих (вспомните, к примеру, форум «М оего
компьютера»). Поэтому имеет смысл более детально изучить
программное обеспечение, поддерживающее e-mail (авто-
рам — намек) Время, затроченное на чтение документации
и опыты, окупятся возможностью получения информации из
информационных архивов Сети.
И защити вас Бог от СПАМ А. Аминь © .
43/318
25
о к т я б р я
—01
н о я б р я
2004
предыдущая страница 40 Мой Компьютер 2004 43 читать онлайн следующая страница 42 Мой Компьютер 2004 43 читать онлайн Домой Выключить/включить текст