Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Команды ввода-вывода на экран дисплея и их использование в программах обработки ⇐ ПредыдущаяСтр 5 из 5
ЦЕЛЬ И ЗАДАЧА РАБОТЫ
Целью работы является закрепление знаний по командам прерывания для ввода-вывода результатов обработки на экран дисплея, алгоритмов обработки и реализации программ на Ассемблере. Задача работы заключается в разработке схемы и программы для заданного поискового алгоритма и вывода результатов на экран дисплея.
2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Метод подъема Существует весьма большое количество всевозможных приемов и методов разработки алгоритмов. Однако среди имеющегося разнообразия этих методов можно выделить небольшой набор основных, в том смысле, что методы из такого набора применяются часто и лежат в основе многих процедур и алгоритмов. Метод подъема можно отнести к одному из общих “рецептов” разработки алгоритмов. Его суть заключается в следующей процедуре: алгоритм начинается с принятия начального предположения или построения начального решения задачи. Затем начинается (насколько возможно) быстрое движение “вверх” от начального уровня по направлению к лучшим решениям. Когда алгоритм достигает точки, из которой больше невозможно двигаться “наверх”, он останавливается. Такой метод применяется, например, в задачах поиска экстремумов (максимумов и минимумов) среди некоторой совокупности числовых данных. Начальное решение можно сформулировать так: пусть экстремальным значением является значение первого элемента из заданной совокупности данных. Лучшим решением по отношению к начальному является такой элемент совокупности, у которого значение больше (в случае поиска максимума) или меньше (в случае поиска минимума) по отношению к начальному значению или к промежуточному “лучшему” решению. Критерием окончания алгоритма (точкой, из которой больше невозможно двигаться “наверх”) является просмотр всех элементов из заданной совокупности.
Команды прерывания Прерывание – это приостанов выполнения программы с целью выполнения какой-то более важной или нужной в данный момент другой программы или процедуры, после завершения которой продолжается выполнение программы с того места, где она была прервана. Прерывание позволяет компьютеру приостановить любое свое действие и переключиться на другое, как запланированное, так и неожиданное, вызванное непредсказуемой ситуацией в работе компьютера. Каждое прерывание вызывает загрузку определенной программы, предназначенной для обработки возникшей ситуации – программы обработки прерываний.
Команды прерывания позволяют воспользоваться встроенными системными ресурсами (программами обработки прерываний) из программы пользователя. Под системными ресурсами понимаются программы, входящие в главную исполнительную программу ЭВМ, которая называется BIOS – базовая система ввода-вывода. В функции этой системы входит: запоминание символов, набираемых на клавиатуре, изображение символов на экране дисплея, обмен данными между устройствами, присоединенными к ЭВМ: дисководами, принтером и т.п. Чтобы обратиться к этим возможностям ЭВМ, пользовательская программа должна быть прервана и выполнена системная функция, после чего пользовательская программа должна быть продолжена со следующей после обращения к системным функциям команды. Эти функциональные возможности и выполняют команды прерывания, имеющие формат INT тип_прерывания. В этой команде тип_прерывания представляет собой номер прерывания, которых в ЭВМ IBM насчитывается 256 (типы прерываний имеют номера 0-255). В некоторых типах прерываний BIOS и DOS имеется много разновидностей, иногда более 10. Так, прерывание 33 (21Н) имеет около 100 разновидностей (это прерывание наиболее часто используется в программах пользователя). В таких случаях вид прерывания (внутри типа) определяется содержимым регистра AH. Каждому прерыванию в памяти ЭВМ соответствует вектор прерывания (эти вектора размещены в оперативной памяти, начиная с нулевого адреса). Каждый вектор прерывания размещается в 32-битовой ячейке памяти и представляет собой адрес, по которому размещена собственно программа прерывания. По сути такие программы очень похожи на процедуры, отличие в том, что программа прерывания заканчивается командой возврата IRET. Наиболее распространенным в программах пользователя является использование прерывания 21H, которое предназначено для вызова функций DOS. В нижеприведенной таблице 7 [5] описываются только некоторые из видов этого прерывания.
Таблица 7 Наиболее часто используемые виды прерывания 21Н
МЕТОДИКА ВЫПОЛНЕНИЯ РАБОТЫ
В диалоговых программах пользователя нередко требуется дать ответ на приглашение к вводу или сделать выбор из меню, нажав букву или цифру. Предположим, что в программе требуется дать ответ Д или Н на вопрос о продолжении или прекращении программы. Ввод Д заставляет программу перейти к группе команд, помеченных как YES, а Н – к командам с меткой NO. При ошибочном нажатии какай либо другой клавиши программа возвращается на ввод символа до тех пор, пока не будет нажата либо Д, либо Н . GET_KEY MOV AH,01Н; считать символ INT 21H CMP AL,’Д’; считан Д? JE YES; если да, то перейти к YES CMP AL,’Н’; считан Н? JE NO; если да, то перейти к YES JNE GET_KEY; иначе возврат на чтение символа. В приведенном фрагменте распознаются только прописные буквы Д и Н, если Вы хотите, чтобы распознавались и строчные буквы, добавьте в программу соответствующие команды! Во многих приложениях, требуется, чтобы пользователь ввел строку с информацией, например, свое полное имя (ФИО). Для этой цели служит функция А прерывания 21Н. Чтобы воспользоваться этой функцией, в программе пользователя требуется зарезервировать в сегменте данных место для вводимой строки (в таблице это называется буфер строки). Количество выделяемых байтов должно быть на 2 больше максимального размера вводимой строки. Причем первый байт буфера должен задавать эту самую максимальную длину (фактически он будет содержать значение количества выделенных байтов памяти минус 2). Например, чтобы предусмотреть в программе ввод пользовательской строки из 50 символов, в сегменте данных нужно описать: STRING DB 50, 51 DUP (?); первый байт в области – константа 50, за ней следуют незаполненные 51 байт для сообщения. Чтение строки выполняется командами: LEA DX, STRING; указатель на буфер поместить в DS:DX MOV AH,0AH; вызвать функцию А INT 21H; прочитать строку. Функция А помещает количество фактически введенных символов во второй байт буфера STRING и не изменяет указатель DS:DX. Т.е. после выполнения команды INT первый информационный символ введенной строки находится по адресу (DX)+2. Вряд ли хорошая пользовательская программа может обойтись без сообщений из программы. Это могут быть либо приглашения к вводу информации, либо сообщения о ходе выполнения программы. Такой сервис в программах на Ассемблере представляет функция 9 для работы с дисплеем. Приведем пример фрагмента программы для выдачи приглашения ‘Введите ФИО’. Для функции 9 необходимо, чтобы текст сообщения заканчивался символом $, поэтому в сегменте данных опишем:
MESS1 DB ‘Введите ФИО: $’. В командном сегментном коде предусмотрим команды вызова функции 9: LEA DX, MESS1 MOV AH,09Н INT 21H. Имейте в виду, что в этом случае курсор устанавливается в позицию $, т.е. в то место строки, где мы хотим видеть фамилию. Чтобы после выдачи приглашения курсор установился в начале следующей строки, необходимо в текст выдаваемого приглашения перед символом доллара ввести символы возврата каретки и перехода на следующую строку, как это демонстрируется ниже: MESS1 DB ‘Введите ФИО’, 0DH,0AH,’$’. Пожалуй, самым важным в программе обработки данных является вывод на экран дисплея числовых результатов обработки. Двоичный код цифры отличается от символа этой цифры на 30h, в чем легко убедиться, изучив таблицу кодов ASCII (приложение Г). Например, если искомая позиция элемента записана в переменную poz, то фрагмент программы для вывода номера позиции на экран дисплея может быть следующим: mov dl, poz add dl, 30h mov ah,02h int 21h Такой фрагмент программы применим, если необходимо вывести однозначной положительное значение. Для вывода многозначных значений со знаком алгоритм вывода должен быть следующим: - анализируем знак числа, если число отрицательное, выводим символ “-”, и преобразуем число, изменяя его знак на “+”; - выделяем цифры числа, деля число на 10 до значения остатка меньшего 10; - выделенные из числа цифры выводим последовательно, начиная со старшей, используя команды, описанные выше. Фрагмент программы для вывода двузначного числа со знаком из байтовой переменной min может быть таким, как показано ниже: mov al, min cmp al,0; анализируем знак числа jge m1 mov dl,'-' mov ah,02h;выводим символ минуса int 21h neg al;меняем знак числа m1: cbw;преобразуем байт в полное слово div c;константа с объявлена в сегменте данных как c db 10 mov r, ah;запоминаем младшую цифру в r mov dl,al;старшую цифру помещаем в dl add dl, 30h; и выводим ее на экран mov ah,02h int 21h mov dl,r;младшую цифру помещаем в dl add dl, 30h; и выводим ее на экран int 21h ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Изучить приведенный теоретический материал к лабораторной работе, выяснить вопросы по лекционному материалу и литературным источникам. 2. Получить задание и разработать для него схему программы, используя рекомендации по проектированию программ. Задать конкретные значения исходных данных для программы в соответствии с полученным от преподавателя вариантом работы и подсчитать ожидаемый результат обработки.
3. Разработать текст программы, используя фрагменты, приведенные в методических рекомендациях, оттранслировать программу и скомпоновать исполнимый модуль. 4. Провести отладку программы и проверить получаемые результаты.
Требования к содержанию и оформлению отчета
Отчет должен включать: а) титульный лист; б) формулировку задачи работы с математической формализацией поискового алгоритма; в) описание результатов выполнения пунктов 2-4: • листинг программы; • результаты выполнения программы с разными исходными данными (тесты программ) в виде сообщений о результатах работы на экране дисплея (Print Screen); г) вывод, согласованный с задачей работы.
Критерии результативности выполнения работы
Лабораторная работа считается успешно выполненной, если: · ожидаемые результаты обработки совпадают с фактическими результатами работы программы; · отчет на бумажном носителе содержит все необходимые пункты согласно требованиям; · студент дает аргументированные пояснения по всем приведенным в отчете пунктам задания; · студент отвечает на контрольные вопросы преподавателя.
Контрольные вопросы 1. Какие программные конструкции используются в поисковых алгоритмах? 2. Поясните механизм прерывания. 3. Как в программах на Ассемблере реализуется вывод на экран сообщений из программы пользователя? 4. Как в программах на Ассемблере реализуется вывод числовых результатов на экран дисплея? 5. Как при выводе обеспечить переход на следующую строку? Варианты заданий
1. В заданном двухмерном массиве целых знакопеременных чисел подсчитать суммы четных и нечетных элементов и определить, какая из сумм по абсолютной величине больше: а) элементы массива однобатовые; б) элементы массива двухбайтовые. 2. В заданном двухмерном массиве целых знакопеременных чисел вычислить суммы отрицательных элементов в столбцах массива: а) элементы массива однобатовые; б) элементы массива двухбайтовые. 3. В заданном двухмерном массиве целых знакопеременных чисел вычислить суммы положительных элементов в строках массива: а) элементы массива однобатовые; б) элементы массива двухбайтовые. 4. В заданной двухмерной матрице размерностью 5*5 целых знакопеременных чисел вычислить суммы элементов на главной и побочной диагоналях. Определить, какая из сумм больше и на сколько: а) элементы массива однобатовые; б) элементы массива двухбайтовые. 5. В заданном двухмерном массиве целых знакопеременных чисел вычислить разность между суммами положительных и отрицательных элементов в строках массива: а) элементы массива однобатовые; б) элементы массива двухбайтовые. 6. В заданном двухмерном массиве целых знакопеременных чисел вычислить суммы положительных и отрицательных элементов. Определить, какая из сумм по абсолютной величине больше и на сколько: а) элементы массива однобатовые; б) элементы массива двухбайтовые.
Список литературы
1. Assembler / В. Юров – СПб.: Питер,2002 – 624 с. 2. Абель П. АССЕМБЛЕР. Язык и программирование для IBM PC. Перевод с англ. под ред. С. М. Малявко Киев: «Век+», 2005. – 734 с. 3. Бройдо В.Л. ПЭВМ: Архитектура и программирование на ассемблере. СПб.: СПб.ГИЭА, 1994. – 218 с.)(сть позднее) 4. Югов В.Ю., Хорошенко С. Assembler: учебный курс. СПб.: Питер, 1999. – 672 с. 5. Л. Скэнлон. Персональные ЭВМ IBM PC и XT. Программирование на языке Ассемблера: Пер. с англ. – 2-е изд., стереотип. – М.: Радио и связь. 1991. –336 с.- старая 6. Бройдо В.Л. Вычислительные системы, сети и телекоммуникации. – СПб.: Питер, 2002. – 688 с. оставить
Приложение А Программная модель микропроцессора Intel (Pentium III)
Регистры общего назначения целочисленного устройства
ss:esp
ebx
31 16 15 0 Сегментные регистры
31 16 15 0 15 0
Регистры устройства с Регистры состояния плавающей точкой (сопроцессора) и управления
. . Системные регистры .
79 0 Регистры ММХ-расширения Целочисленные с плавающей точкой
63 0 127 0 Приложение Б Синтаксис и функции псевдооператоров (директив)
Приложение В
Приложение Г
Формат арифметических команд
CSEG SEGMENT PARA PUBLIC ‘CODE’ ASSUME CS:CSEG, DS:DSEG, SS:STACK
PUSH DS SUB AX,AX
MOV AX,DSEG MOV DS,AX XOR SI,SI
XOR BX,BX MOV CX, LEN_MAS/LEN_STR
VN_CYCL: PUSH CX MOV CX, LEN_STR
XOR SI,SI
MOV AL, MAS[BX][SI] ADD SUM[DI],AL
INC SI
НЕТ LOOP VNUTR_ CYCL
ДА
POP CX
ADD BX, LEN_STR LOOP VN_ CYCL RET OUR_PROG ENDP CSEG ENDS НЕТ ДА END OUR_PROG
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-17; просмотров: 249; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.143.168.172 (0.133 с.) |