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



Download 12,06 Mb.
Pdf ko'rish
bet142/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   138   139   140   141   142   143   144   145   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Комплексный пример
Чтобы проиллюстрировать использование директив MASM для имитации конст-
рукций высокого уровня, рассмотрим пример. Этот пример не является примером
«вещи в себе», он призван показать класс задач, которые актуальны при програм-
мировании на любом языке. Это задачи контроля информации, поступающей в про-
грамму в ходе ее функционирования. Как методически правильно подойти к этому
вопросу, не «изобретая каждый раз заново велосипед»? Если вы знакомы с теори-
ей построения трансляторов, то суть проблемы разбора символьных последова-
тельностей и подходы к ее решению для вас не новы. Если же у вас таких знаний
нет, то материал
раздела будет полезен для формирования у вас теорети-
чески грамотного подхода к решению проблемы контроля входных данных ваших
программ.
Частью любого компилятора является сканер, задача которого — чтение вход-
ного потока символов и выделение в нем синтаксически значимых единиц
мации. Примером таких единиц могут быть ключевые слова языка, имена пе-
ременных, константы и другие синтаксически автономные единицы исходной
программы. Сканер распознает их и в зависимости от их типа формирует внутрен-
нее представление этих единиц и информацию о них для дальнейшей синтакси-
ческой и семантической обработки. Теоретической основой работы сканера явля-
ется теория автоматов.
Немного теории. Конечный автомат представляет собой кортеж М =
А, Р, S,
где:
К — конечное множество состояний;
А — конечный входной алфавит;
Р — множество переходов;
S — начальное состояние;
F — множество конечных (последних) состояний.
Принципиально сканер функционирует так. Он имеет конечное
со-
стояний К, одно из которых является начальным S, и несколько конечных F. Пе-
ред началом обработки символов очередной лексемы
находится в состоя-
нии S. По мере считывания очередной литеры лексемы состояние сканера меняется.
Эти переходы также заранее определены множеством правил перехода Р. После
окончания чтения лексемы автомат должен оказаться в одном из конечных состо-
яний, некоторые из которых могут соответствовать состоянию ошибки. Исходя из
того, в каком из состояний оказался сканер, он делает вывод о принадлежности
лексемы входному языку. Если лексема ошибочная, то компилятором формирует-
ся соответствующее диагностическое сообщение, если же лексема корректная, то
она в зависимости от своего типа подвергается дальнейшей обработке.
Рассмотрим пример конечного автомата для распознавания целых десятичных
чисел со знаком, считываемых программой с консоли. Хорошую помощь в постро-
ении конечных автоматов оказывают формы
и синтаксические


246 Глава
Программирование типовых управляющих структур
диаграммы. Их мы обсуждали в главе 5. Формы
для построения
десятичных чисел со знаком выглядят так:
Графически конечный автомат удобно представлять в виде направленного гра-
фа. Конечный автомат для десятичного числа со знаком показан на рис.
Рис.
Конечный автомат для десятичного числа со знаком
По рисунку легко закончить формальное определение конечного автомата для
десятичного числа со знаком:
К
-{+,-, 0,
Р = {1->2,
2->4,
3->4,
Далее приведена программа (листинг
моделирующая конечный автомат
для распознавания десятичных чисел со знаком.
Листинг
Программа конечного автомата для десятичных чисел со знаком
small
message db
модель памяти
сегмент данных
I am ready to receive your
of signed decimal
number (to finish press Enter): $'
db
input is
please input your
number again or press Enter. $'
db
number is: '
input_string db 10 dup
для ввода 9 цифр и знака
db
you for use this program. I wish you good
proc
int 21h
ret
GetNextChar endp
; сегмент стека
; сегмент кода
;чтение символа из стандартного ввода
в


 proc
mov
mov
lea
int 21h
xor si ,si
Особенности пакета
247
начало процедуры main
заносим адрес сегмента данных в регистр ах
ах в ds
вывод сообщения на экран
подготовка индексного регистра si
ввод первого символа в
||
mov
inc si
jmp
.endif
si<9
call GetNextChar ;ввод очередного символа в al
&& al<=39h)
mov
inc si
al==0dh
. break
jmp bed_end
.
. endw
mov
lea
int 21h ; вывод сообщения good
на экран
jmp exit_prog
mov
lea
int
call GetNextChar
mov
int 21h
main endp
end main
вывод сообщения
на экран
задержка до ввода любого символа
пересыпка
регистр ах
вызов прерывания с номером 21h
конец процедуры m a i n
конец программы с точкой входа main
Напомню, что для получения пригодного для отладки исполняемого модуля
данной программы необходимо сформировать командную строку вида
/Zi
>p
Для отладки используйте отладчик CodeView:
c v . e x e
В качестве упражнения вы можете потренироваться в программировании ко-
нечных автоматов для разбора произвольных символьных строк. После освоения
материала главы
практически полезной может быть программа конечного авто-
мата для разбора чисел с плавающей точкой. Дополнительный материал по про-
граммированию конечных автоматов вы найдете в
В заключение данной главы хотелось бы заметить, что приведенные в ней рас-
суждения о моделировании вариантов типовых циклических конструкций не яв-
ляются догмой. Их основное назначение — показать возможность и практическую
пользу моделирования циклических конструкций в ассемблерной программе. Важ-
ность материала данной главы состоит в том, что использование этих конструкций
в программах способно, наряду с облегчением написания ассемблерного кода, су-
щественно повысить его надежность.


248 Глава
Программирование типовых управляющих структур
Итоги
Язык ассемблер не содержит управляющих конструкций, естественных для язы-
ков высокого уровня. Это существенно снижает наглядность ассемблерных про-
грамм и надежность программирования в целом.
• На практике существует настоятельная необходимость поддержки любым язы-
ком операторов выбора, различного типа операторов цикла и некоторых дру-
гих.
ж В разных пакетах ассемблера реализованы свои «фирменные» подходы к реше-
нию данной проблемы:
TASM имеет два режима работы: MASM и IDEAL. В режиме MASM все
управляющие конструкции нужно моделировать. Этот процесс подробно
описан в первой части данной главы. В режиме IDEAL есть встроенные сред-
ства для организации типовых управляющих конструкций, но из-за прекра-
щения поддержки TASM фирмой Borland работа в режиме IDEAL теряет
актуальность;
D пакет MASM имеет встроенные средства, моделирующие управляющие кон-
струкции языков высокого уровня. Их использование существенно повы-
шает скорость и надежность разработки программ.
Важно понимать, что встроенные средства, моделирующие управляющие кон-
струкции языков высокого уровня — это лишь надстройка компилятора над
некоторым базовым ассемблерным уровнем. В конечном итоге, все высокоуров-
невые конструкции будут переведены в последовательность команд ассембле-
ра и исполнены процессором.



Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   138   139   140   141   142   143   144   145   ...   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