Главная » Просмотр файлов » assembler. Учебник для вузов_Юров В.И_2003 -637с

assembler. Учебник для вузов_Юров В.И_2003 -637с (862834), страница 55

Файл №862834 assembler. Учебник для вузов_Юров В.И_2003 -637с (Юров В.И - Assembler. Учебник для вузов. 2003) 55 страницаassembler. Учебник для вузов_Юров В.И_2003 -637с (862834) страница 552021-12-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 55)

Ее синтаксис:.BREAK [ . I F условие]Директива .BREAK позволяет задать дополнительное условие, при выполнениикоторого будет выполнен выход из цикла независимо от условия основного цикла.Директива .CONTINUE передает управление на начало текущего цикла .WHILE или.REPEAT. Ее синтаксис:.CONTINUE [ . I F условие]При необходимости директива .CONTINUE может определять дополнительноеусловие, при соблюдении которого будет выполнен переход на начало текущегоцикла.Особенности пакета MASM245Директивы .CONTINUE и .BREAK могут использоваться только внутри циклов.WHILE или .REPEAT.Комплексный примерЧтобы проиллюстрировать использование директив MASM для имитации конструкций высокого уровня, рассмотрим пример.

Этот пример не является примером«вещи в себе», он призван показать класс задач, которые актуальны при программировании на любом языке. Это задачи контроля информации, поступающей в программу в ходе ее функционирования. Как методически правильно подойти к этомувопросу, не «изобретая каждый раз заново велосипед»? Если вы знакомы с теорией построения трансляторов, то суть проблемы разбора символьных последовательностей и подходы к ее решению для вас не новы. Если же у вас таких знанийнет, то материал данного раздела будет полезен для формирования у вас теоретически грамотного подхода к решению проблемы контроля входных данных вашихпрограмм.Частью любого компилятора является сканер, задача которого — чтение входного потока символов и выделение в нем синтаксически значимых единиц информации. Примером таких единиц могут быть ключевые слова языка, имена переменных, константы и другие синтаксически автономные единицы исходнойпрограммы.

Сканер распознает их и в зависимости от их типа формирует внутреннее представление этих единиц и информацию о них для дальнейшей синтаксической и семантической обработки. Теоретической основой работы сканера является теория автоматов.Немного теории. Конечный автомат представляет собой кортеж М = {К, А, Р, S,F}, где:К — конечное множество состояний;А — конечный входной алфавит;Р — множество переходов;S — начальное состояние;F — множество конечных (последних) состояний.Принципиально сканер функционирует так. Он имеет конечное множество состояний К, одно из которых является начальным S, и несколько конечных F. Перед началом обработки символов очередной лексемы сканер находится в состоянии S.

По мере считывания очередной литеры лексемы состояние сканера меняется.Эти переходы также заранее определены множеством правил перехода Р. Послеокончания чтения лексемы автомат должен оказаться в одном из конечных состояний, некоторые из которых могут соответствовать состоянию ошибки. Исходя изтого, в каком из состояний оказался сканер, он делает вывод о принадлежностилексемы входному языку. Если лексема ошибочная, то компилятором формируется соответствующее диагностическое сообщение, если же лексема корректная, тоона в зависимости от своего типа подвергается дальнейшей обработке.Рассмотрим пример конечного автомата для распознавания целых десятичныхчисел со знаком, считываемых программой с консоли.

Хорошую помощь в построении конечных автоматов оказывают формы Бэкуса-Наура и синтаксические246Глава 11. Программирование типовых управляющих структурдиаграммы. Их мы обсуждали в главе 5. Формы Бэкуса-Наура для построениядесятичных чисел со знаком выглядят так:<десятичное_знаковое_целое>=*<число_6ез_знака>|+<число_без_знака>|<число_без_знака><число_без_знака>=><дес_цифра>|<число_без_знака><дес_цифра><дес_цифра>=>0|1|2|3|4|5|6|7|8|9Графически конечный автомат удобно представлять в виде направленного графа. Конечный автомат для десятичного числа со знаком показан на рис.

11.1.0...9Рис. 11.1. Конечный автомат для десятичного числа со знакомПо рисунку легко закончить формальное определение конечного автомата длядесятичного числа со знаком:" К = {1,2, 3,4};t A -{+,-, 0, 1,2,3,4,5,6,7,8,9};< Р = {1->2, 1->3,1->4, 2->4, 2->3, 3->4, 3->3};Далее приведена программа (листинг 11.1), моделирующая конечный автоматдля распознавания десятичных чисел со знаком.Листинг 11.1. Программа конечного автомата для десятичных чисел со знаком.model smallмодель памятисегмент данных.datamessage db Odh.Oah, I am ready to receive your v a r i a n t of signed decimalnumber (to finish press Enter): $'message_Invalid_Number db 0dh,0ah,'Your input is bed, please input yournumber again or press Enter.

$'good_luck_messagedb Q d h . Q a h , ' Y o u r number is: 'input_stringdb 10 dup (2Qh) ;строка для ввода 9 цифр и знакаdb O d h . O a h , ' T h a n k you for use this program. I wish you good l u c k . . . $ '; сегмент стека.stack 256h.code; сегмент кодаGetNextChar procmov ah,l;чтение символа из стандартного ввода;символ в alint 21hretGetNextChar endpОсобенности пакета MASMmain247procначало процедуры mainmov ax,@dataзаносим адрес сегмента данных в регистр ахmov ds.axах в dsmov ah,9lea dx,messageint 21hвывод сообщения на экранxor si ,siподготовка индексного регистра sicallGetNextChar ввод первого символа в al.if (al=="+" || al=="-" || al>=30h && al<=39h)mov input_string[si],alinc si.elsejmp bed_end.endif.while si<9callGetNextChar ;ввод очередного символа в al.if (al>=30h && al<=39h)mov input_string[sij,alinc si.conti nue.elseif al==0dh.

break.elsejmp bed_end. endif. endwmov ah,9lea dx,good_luck_messageint 21h; вывод сообщения good luck_message на экранjmp exit_progbed_end:mov ah,9lea dx,message_Invalid_Numberint 2Inвывод сообщения message_Invalid_Number на экранexi t_prog:callGetNextChar задержка до ввода любого символаmov ax,4c00hпересыпка 4с00п.в регистр ахint 21hвызов прерывания с номером 21hmainendpконец процедуры m a i nend mainконец программы с точкой входа mainНапомню, что для получения пригодного для отладки исполняемого модуляданной программы необходимо сформировать командную строку видаM L . E X E /Fl /Zi Prg_ll_l.asm >pДля отладки используйте отладчик CodeView:cv.exe Prg_ll_l.asmВ качестве упражнения вы можете потренироваться в программировании конечных автоматов для разбора произвольных символьных строк. После освоенияматериала главы 17 практически полезной может быть программа конечного автомата для разбора чисел с плавающей точкой.

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

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

Характеристики

Тип файла
PDF-файл
Размер
14,34 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее