Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » [2009] Большаков С.А. - Методическое пособие по выполнению ЛР по СП

[2009] Большаков С.А. - Методическое пособие по выполнению ЛР по СП (Всякие мелочи), страница 19

PDF-файл [2009] Большаков С.А. - Методическое пособие по выполнению ЛР по СП (Всякие мелочи), страница 19 Системное программирование (17501): Другое - 4 семестр[2009] Большаков С.А. - Методическое пособие по выполнению ЛР по СП (Всякие мелочи) - PDF, страница 19 (17501) - СтудИзба2018-01-09СтудИзба

Описание файла

Файл "[2009] Большаков С.А. - Методическое пособие по выполнению ЛР по СП" внутри архива находится в папке "Всякие мелочи". PDF-файл из архива "Всякие мелочи", который расположен в категории "". Всё это находится в предмете "системное программирование" из 4 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 19 страницы из PDF

Условная компиляцияДирективы условной компиляции позволяют включать или не включать текст в исходную программу в зависимости от ряда условий. Перечень групп директив приведенниже:− IF1, IF2, ELSE, ENDIF – директивы условной компиляции (проходы компилятора).− IF, IFE, ELSE, ENDIF – директивы условной компиляции (логическое условие).2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”93− IFDEF , IFNDEF, ELSE, ENDIF – директивы условной компиляции (объявление переменных этапа компиляции).− IFB, IFNB, ELSE, ENDIF – директивы условной компиляции (проверка наличия параметра макрокоманды).− IFIDN, IFIDIF, ELSE, ENDIF - директивы условной компиляции (сравнение переменных этапа компиляции).Рассмотрим кратко их возможности.Директивы IF1, IF2 включают текст в исходную программу, если выполняетсяпервый (IF1) или второй (IF2) проход компилятора.

Обычно это делается при подключении библиотек макрокоманд, так как повторное включение приводить к ошибкам. Например:IF1INCLUDE MACRO.LIBENDIFМакробиблиотека MACRO.LIB будет включена только на первом проходе.Директивы IF, IFE, ELSE, ENDIF включают текст в исходную программу, на основе логических условий этапа компиляции. Если условие выполнено (равно нулю дляIFE), то текст в исходную программу включается. Если условие не выполнено (не равнонулю для IF), то текст в исходную программу включается. Конструкция ELSE позволяетзадать альтернативу по этому условию.

Синтаксис и семантика директив описаны нижн:IF <выражение> IF TRUE (если истина) Если значение выражения не нулевое, операторы условного блока ассемблируются.IFE <выражение> IF FALSE (если ложь) Если значение выражения равно нулю, операторы условного блока ассемблируются.Значения истина и ложь в Ассемблере определяются так:FALSE(0000h) - ложьTRUE(FFFFh) - истинаВ общем виде конструкции условных директив можно описать так:IFXX <аргументы>…<директивы для истинного значения условия>…[ELSE]…<директивы для ложного значения условия>…ENDIFРассмотрим простые примеры условных директив:IF N EQ 5print 'A', PERELSEprint 'B', PERENDIFЕсли переменная этапа компиляции N равна 5, то выполняется обращение к макрокомандеprint с параметром ‘A’, в противном случае с параметром ‘B’.IFIDN <&CR>,<PER>CALL LFCRENDIFЕсли параметр макрокоманды (CR) установлен в значение <PER>, то вызывается процедура перевода строки и возврата каретки.IFNDEF COUNT2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”94COUNT = 0ENDIFЕсли переменная этапа компиляции COUNT не определена, то она определяется с начальным значением равным нулю.IFB VJMP METENDIFЕсли параметр макрокоманды V не задан при вызове (BLANK), то генерируется командабезусловной передачи управления на метку.Надеюсь, что более полную информацию по условной компиляции вы найдете влитературе, документации и справочниках по макроассемблеру.

Практическое использование таких директив Вы должны продемонстрировать при выполнении 9-й ЛР.18.12. Директива EXITMОбычно работа макрокоманды завершается в тот момент, когда встретилась последняя директива ENDM макроопределения. Существует и другая возможность завершить работу макрокоманды (как процедуры этапа компиляции) – это использование директивы EXITM. Если встретилась такая директива, то дальнейший режим обработкимакровызова завершается и Ассемблер переключается на обработку команды, следующейза данным макровызовом. В одном макроопределении может быть несколько выходов,которые выполняются директивой EXITM. Например, если после проверки параметра мыобнаруживаем ошибку, то можем сделать выход из макроопределения. Например:…IF <PAR> NE <TEST>…JMP METELSE…EXITMENDIF…18.13.

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

Это выполняется директивой %OUT. Например:%OUT Отладка макрокоманды printЕсли такая директива встретится в макрокоманде, то будет напечатано это сообщение.Для инициации (форсировании) ошибки используется другая директива - .ERR. Например:.ERR%OUT Ошибка в макрокоманде printВ окно ошибок будет помещено это сообщение.2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”9518.14. Сравнение макросов и процедурПо сравнению с процедурами макрокоманды имеют четыре преимущества:1.

Макрокоманды являются более гибкими по сравнению с процедурами. Они позволяют задавать параметры, пропускать их при вызове макрокоманд, выполнятьусловную компиляцию.2. Макрокоманды выполняются с более высокой скоростью (более эффективной),так как не тратиться время на команды вызова, а все действия по настройке выполняются на этапе компиляции.3. Макрокоманды легко упаковать в библиотеку и подключать их в программу.4. Программа, построенная на основе макрокоманд, является более наглядной и понятной.Недостатками макрокоманд по сравнению с процедурами является:1. Программа, построенная на основе макрокоманд, имеет больший размер, так какпри каждом вызове макрокоманды выполняется макрорасширение.

В некоторыхслучаях это может стать существенным недостатком.2. Макрокоманды труднее отлаживать, так как трудно создать специальный отладчик, так как все выполняется на этапе компиляции.В целом, можно сделать вывод, что если рационально использовать комбинациюмеханизмов макрокоманд и процедур, то можно получить эффективный и наглядный коддаже на языке Ассемблера.18.15. Макрокоманды – процедуры этапа компиляцииДля тех, кто хорошо освоил механизм макрокоманд, приходит понимание того, чтомеханизм макрокоманд и условной компиляции программ очень мощный и эффективныймеханизм для создания программных систем. Главное понять, что макрокоманды, по сути,являются процедурами этапа компиляции.

Так как существует возможность вложенноговызова макрокоманд, возможность определения переменных этапа компиляции и использования библиотек, то возникает возможность описания собственного языка специальногоназначения. Действительно существуют специализированные системы программирования,целиком построенные на основе макроассемблера. Например, система имитационного моделирования GPSS в первых своих версиях была реализована по этой схеме. Важно, чтотрудозатраты на такие системы значительно ниже, чем при создании системы программирования с нуля.18.16. Примеры программы с макросамиВ следующем тексте работающей программы с макросами, которые я привожу безпояснений, вы найдете много полезных фрагментов для выполнения 9-й ЛР.mycode segment 'code'assume cs:mycode, ds:mycodeassume ss: stseg; Макрокоманда выделения памяти c заполнением выражениямиFCount = 1Fparam = 12009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”96FIELD MACRO VARDB &VARENDM;;;;; Натуральные числа в порядке возрастанияMAS MACRO SIZEM , NAME , BASE , STEPFCount = BASE&NAMEDB BASEREPT SIZEM - 1FIELD %FCount + STEPFCount = FCount + 1ENDMENDM;;; Натуральные числа в порядке убыванияMASM MACRO SIZEM , NAME , BASE , STEPFCount = BASE&NAMEDB BASEREPT SIZEM - 1FIELD %FCount - STEPFCount = FCount - 1ENDMENDM; Арифметическая прогрессияMASN MACRO SIZEM , NAME , BASE , STEPFCount = BASE&NAMEDB BASEREPT SIZEM - 1FIELD %FCount * STEPFCount = FCount + 1ENDMENDM; Геометрическая прогрессияMASP MACRO SIZEM , NAME , BASE , STEPFCount = 1&NAMEDB STEP + BASEREPT SIZEM - 1FParam = 1REPT Fcount + 1FParam = Fparam * STEPENDMFIELD %FParam + BASEFCount = FCount + 1ENDMENDM;SUM MACRO NAME , SIZE , VSUMLOCAL VMLOCAL VERRPUSH CXPUSH AXPUSH DX2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”97PUSH SIMOV CX , SIZECMP CX , 0JB VERRXOR AX , AXMOV SI,0XOR DX , DXVM: MOV DL , NAME[SI]ADD AX, DXINC SILOOP VMMOV VSUM , AXMOV DX, AXCALL PRINTDECVERR: POP SIPOP DXPOP AXPOP CXENDM;Макрокоманда для произведенияPRSTR MACRO NAME , SIZE , KSTRLOCAL MCLOCAL MC1LOCAL MFINLOCAL MPRODPUSH CXPUSH SI;; НУ цикла;;Перевод строкиmov dl, 0Ahmov ah, 2int 21hmov dl, 0Dhmov ah, 2int 21h;;MOV CX , SIZEMOV SI , 0;; Цикл по массивуMC:PUSH CXMOV CX , KSTR;; Цикл по строкеMC1: MOV DL, NAME[SI]CALL PRINTBINC SICMP SI , SIZEJNE MPROD;; Последний переводmov dl, 0Ahmov ah, 2int 21hmov dl, 0Dh2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”98mov ah, 2int 21hJMP MFINMPROD:LOOP MC1POP CX;;Перевод строкиmov dl, 0Ahmov ah, 2int 21hmov dl, 0Dhmov ah, 2int 21hLOOP MC;; Конец ЦиклаMFIN:POP SIPOP CXENDM;Макрокоманда печати массива в десятичном виде по столбцамPRCOL MACRO NAME , SIZE , KCOLLOCAL MCLOCAL MC1LOCAL MFINLOCAL MPRODLOCAL TEMPLOCAL OBXODLOCAL MTEMPPUSH CXPUSH SI;; НУ цикла;;Перевод строкиmov dl, 0Ahmov ah, 2int 21hmov dl, 0Dhmov ah, 2int 21h;; Определение числа строкMOV CX , SIZE/KCOLMOV SI , SIZE MOD KCOLCMP SI , 0JE MTEMPADD CX, 1MTEMP: MOV TEMP , CX;;MOV SI , 0;; Цикл по массивуMC:PUSH CXMOV CX , KCOLPUSH SI;; Цикл по строке2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”MC1:MOV DL, NAME[SI]CMP SI , SIZEJGE MPRODCALL PRINTBADD SI , TEMPLOOP MC199;;MPROD:POP SIINC SIPOP CX;;Перевод строкиmov dl, 0Ahmov ah, 2int 21hmov dl, 0Dhmov ah, 2int 21hLOOP MC;; Конец ЦиклаMFIN:POP SIPOP CXJMP OBXODTEMP DB 0OBXOD:ENDM;main proc;Занесение регистра DSPUSH CSPOP DS;;;;;;;;;;;;;;;;;;JMP MEND1; Описания массивов.XALLMAS 10 , T0 , 3 , 5.SALLMASM 5 , T1 , 100 , 1MASN 5 , T2 , 1 , 5.XALLMASP 5 , T3 , 10 , 3.SALLPRSTR T0 , 5, 3;PRCOL T0 , 5, 3; выход с ожиданиемVARDW 0; Запрос символа с клавиатуры; СуммированиеMEND1:SUM T0 , 10 , VARMOV DX , VAR2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”100CALL printdecMOV DL , 131CALL printbPRSTR T0 , 20, 5;PRCOL T0 , 27, 6mov ah, 08hint 21hmov al, 0; Выход в ДОСmov ah, 4chint 21hmain endp;------------------;;;;;;;;;;;;;;;; Печать числа; DX - числоprintdec proc; Перевод числа; 10000PUSH CXPUSH SIPUSH AX; Начальные условия цикла переводаMOV SI , 0MOV CX , 4; DX:AX - делимоеMOV DDWORK , 10000; Цикл переводаCICLE:MOV AX, DXMOV DX , 0DIV DDWORK; AX - остаток , DX - частноеXCHG DX , AX; Коррекция для вывода символаADD dl , 30hCMP dl , 30hJNE MC1MOV dl , 20hMC1:MOV CHI[SI] , dlINC SI; DX - остаток , AX - частноеXCHG DX , AX; Новый делительPUSH DXPUSH AXMOV AX , DDWORKMOV DX , 0DIV D10MOV DDWORK , AXPOP AXPOP DX2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”101LOOP CICLE;На конец цикла; Коррекция для вывода символаADD dl , 30hMOV CHI[SI] , dl; Вывод строкиMOV AH , 09hMOV DX , offset STRint 021hPOP AXPOP SIPOP CXretprintdec endp; Перевод десятичное и печать байтовой переменной; без перевода строкиDL - байтprintb procPUSH CXPUSH SIPUSH AX; Начальные условия цикла переводаMOV SI , 0MOV CX , 2; DX:AX - делимоеMOV DDWORK , 100MOV DH , 0; Цикл переводаCICLE1:MOV AX, DXMOV DX , 0DIV DDWORK; AX - остаток , DX - частноеXCHG DX , AX; Коррекция для вывода символаADD dl , 30hCMP dl , 30hJNE MC11MOV dl , 20hMC11:MOV CHIB[SI] , dlINC SI; DX - остаток , AX - частноеXCHG DX , AX; Новый делительPUSH DXPUSH AXMOV AX , DDWORKMOV DX , 0DIV D10MOV DDWORK , AXPOP AXPOP DXLOOP CICLE12009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”102;На конец цикла; Коррекция для вывода символаADD dl , 30hMOV CHIB[SI] , dl; Вывод строкиMOV AH , 09hMOV DX , offset CHIBint 021hPOP AXPOP SIPOP CXretprintb endp;;; - mas - size- kcol;DDWORK DW 0D10DW 10DD10DW 10000DD11DW 1000DD12DW 100DD13DW 10STRDB 'Результат = 'CHIDB '', 10, 13 ,'$'CHIBDB '',' ' , '$';;;;;;;;;;;;mycode ends;------stseg segment stack 'stack'dw 256 dup(0)stseg ends;------end main2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”10319.

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