Сист. прогр. Ч1 (Методические указания к выполнению лабораторных работ по СПО), страница 11

2018-01-12СтудИзба

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

Файл "Сист. прогр. Ч1" внутри архива находится в следующих папках: Методические указания к выполнению лабораторных работ по СПО, сист прогр лабы. Документ из архива "Методические указания к выполнению лабораторных работ по СПО", который расположен в категории "". Всё это находится в предмете "операционные системы" из 7 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "операционные системы" в общих файлах.

Онлайн просмотр документа "Сист. прогр. Ч1"

Текст 11 страницы из документа "Сист. прогр. Ч1"

Что произойдет при выполнении программы, приведенной на рис.7.4, если в процедуре BEGIN будет отсутствовать команда RET?

Какая разница между кодированием в директиве PROC операнда с типом FAR и с типом NEAR?

Каким образом может программа начать выполнение процедуры?

В ЕХЕ-программе процедура А10 вызывает В10, В10 вызывает С10, а С10 вызывает D10. Сколько адресов, кроме начальных адресов возврата в DOS, содержит стек?

Предположим, что регистр BL содержит 11100011 и поле по имени BOONO содержит 01111001. Определите воздействие на регистр BL для следующих команд: a) XOR BL,BOONO; б) AND BL,BOONO; в) OR BL,BOONO; г) XOR ВL,1111111В; д) AND BL,00000000B;

Измените программу на рис.7.6 для: а) определения
содержимого TITLEX заглавными буквами; б)
преобразования заглавных букв в строчные.

Предположим, что регистр DX содержит 10111001 10111001, а регистр CL - 03. Определите содержимое регистра DX после следующих несвязанных команд: a) SHR DX,1; б) SHR DX,CL; в) SHL DX,CL; г) SHL DL,1; д) ROR DX,CL; e) ROR DL,CL; ж) SAL DH,1.

8. ПРЕРЫВАНИЯ

В предыдущих главах рассматривались программы, в которых данные определялись в операндах команд (непосредственные данные) или инициализировались в конкретных полях программы. Число практических применений таких программ в действительности мало. Большинство программ требуют ввода данных с клавиатуры, диска или модема и обеспечивают вывод данных в удобном формате на экран, принтер или диск. Данные, предназначенные для вывода на экран и ввода с клавиатуры, имеют ASCII-формат.

Для выполнения ввода и вывода используется команда INT (прерывание). Существуют разнообразные способы указать системе, какое действие (ввод или вывод) и на каком устройстве необходимо выполнить. Данная глава раскрывает основные требования для вывода информации на экран и ввода данных с клавиатуры.

Все необходимые экранные и клавиатурные операции можно выполнить с помощью команды INT 10Н, которая передает управление непосредственно в BIOS. Для выполнения некоторых более сложных операций существует прерывание более высокого уровня INT 21Н, которое сначала передает управление в DOS. Например, при вводе с клавиатуры может потребоваться подсчет введенных символов, проверка на максимальное число символов и проверка на символ "Return". Прерывание DOS INT 21Н осуществляет многие из этих дополнительных вычислений и затем автоматически передает управление в BIOS.

Материал данной главы подходит как для монохромных (черно-белых, BW), так и для цветных видеомониторов.

КОМАНДА ПРЕРЫВАНИЯ INT

Команда INT прерывает обработку программы, передает
управление в DOS или BIOS для определенного действия и затем возвращает управление в прерванную программу для продолжения обработки. Наиболее часто прерывание используется для выполнения операции ввода или вывода. Для выхода из программы на обработку прерывания и для последующего возврата команда INT выполняет следующее:

- уменьшает указатель стека на 2 и заносит в вершину стека содержимое флагового регистра;

- очищает флаги TF и IF;

- уменьшает указатель стека на 2 и заносит содержимое

регистра CS в стек;

- уменьшает указатель стека на 2 и заносит в стек значение

командного указателя;

- обеспечивает выполнение необходимых действий;

- восстанавливает из стека значения регистров и возвращает управление в прерванную программу на команду, следующую после INT.

Этот процесс полностью автоматический. Необходимо лишь определить сегмент стека достаточно большим для записи в него значений регистров.

В данной главе рассмотрим два типа прерываний: команду BIOS INT 10Н и команду DOS INT 21Н для вывода на экран и ввода с клавиатуры, В последующих примерах в зависимости от требований используются как INT 10Н, так и INT 21Н.

УСТАНОВКА КУРСОРА

Экран можно представить в виде двумерного, пространства с адресуемыми позициями, в любую из которых может быть установлен курсор. Обычный видеомонитор, например, имеет 25 строк (нумеруемых от 0 до 24) и 80 столбцов (нумеруемых от 0 до 79).

Команда INT 10Н включает в себя установку курсора в любую позицию и очистку экрана. Ниже приведен пример установки курсора на 5-ю строку и 12-й столбец.

MOV АН,02 ;3anpoc на установку курсора

MOV BH,00 ;Экран 0

MOV DН,05 ;Строка 05

MOV DL,12 ;Столбец 12

IНТ 10Н ; Передача управления в BIOS

Значение 02 в регистре АН указывает команде INT 10Н на выполнение операции установки курсора. Значения строки и столбца должны быть в регистре DX, а номер экрана (или страницы) - в регистре ВН (обычно 0). Содержимое других регистров несущественно. Для установки строки и столбца можно также использовать одну команду MOV с непосредственным шестнадцатиричным значением;

MOV DХ,050СН ;Строка 5, столбец 12

ОЧИСТКА ЭКРАНА

Запросы и команды остаются на экране до тех пор, пока не будут смещены в результате прокручивания ("скроллинга") или переписаны на том же месте другими запросами или командами. Когда программа начинает свое выполнение, экран может быть очищен. Очищаемая область экрана может начинаться в любой позиции и заканчиваться в любой другой позиции с большим номером. Начальное значение строки и столбца заносится в регистр СХ, конечное - в DX, значение 07 - в регистр ВН и 0600Н в АХ. В следующем примере выполняется очистка всего экрана:

MOV AX,0600H ;АН 06 (прокрутка) AL 00 (весь экран)

MOV ВН,07 ;Нормальный атрибут (черно/белый)

MOV CX,0000 : Верхняя левая позиция

MOV DX,184FH ;Нижняя правая позиция

INT 10Н ; Передача управления в BIOS

Значение 06 в регистре АН указывает команде INT 10H на выполнение операции очистки экрана. Эта операция очищает экран пробелами; в следующей главе скроллинг (прокрутка) описывается подробнее. Если вы по ошибке установили нижнюю правую позицию больше, чем 184FH, то очистка перейдет вновь к началу экрана и вторично заполнит некоторые позиции пробелами. Такая операция не приведет к каким-либо ошибкам при работе с монохромными экранами, однако - для некоторых цветных мониторов могут возникнуть серьезные ошибки.

ЭКРАННЫЕ И КЛАВИАТУРНЫЕ ОПЕРАЦИИ В БАЗОВОЙ ВЕРСИИ DOS

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

ВЫВОД НА ЭКРАН В БАЗОВОЙ ВЕРСИИ DOS

Вывод на экран в базовой версии DOS требует определения текстового сообщения в области данных, установки в регистре АН значения 09 (вызов функции DOS) и указания команды DOS INT 21Н. В процессе выполнения операции конец сообщения определяется по ограничителю ($), как показано ниже:

NAMPRMP DВ 'Имя покупателя?','$'

…..

MOV АН,09 ;Запрос вывода на экран

LEA DX,NAMPRMP ;3агрузка адреса сообщения

INT 21Н ;Вызов DOS

Знак ограничителя '$' можно кодировать непосредственно после символьной строки, как показано в примере, внутри строки 'Имя покупателя?$' или в следующем операторе DB '$'. Используя данную операцию, нельзя вывести на экран символ доллара "$". Кроме того, если знак доллара будет отсутствовать в конце строки, то на экран будут выводиться все последующие символы, пока знак "$" не встретится в памяти.

Команда LEA загружает адрес области NAMPRMP в регистр DX для передачи в DOS адреса выводимой информации. Адрес поля NAMPRMP, загружаемый в DX по команде LEA, является относительным, поэтому для вычисления абсолютного адреса данных DOS складывает значения регистров DS и DX (DS:DX).

ПРОГРАММА: ВЫВОД НА ЭКРАН НАБОРА СИМВОЛОВ ASCII-КОДА

Большинство из 256 ASCII-кодов имеют символьное представление и могут быть выведены на экран. Шестнадцатиричные коды 00 и FF не имеют символов и выводятся на экран в виде пробелов, хотя символ пробела имеет ASCII-код 20Н.

На рис. 8.1 показана СОМ-программа, которая выводит на экран полный набор символов ASCII-кода. Программа вызывает три процедуры: B10CLR, C10SET и D10DISP. Процедура B10CLR очищает экран, а процедура C10SET устанавливает курсор в положение (0,0). Процедура D10DISP выводит содержимое поля CTR, которое вначале инициализировано значением 00 и затем увеличивается на 1 при каждом выводе на экран, пока не достигнет шестнадцатиричного значения FF.

page 60, 132

TITLE ALLASC (COM) ;Вывод на экран ASCII- символов O0-FF

COODESG SEGMENT PARA 'Code'

ASSUME CS:CODESG, DS:CODESG, SS:CODESG, ES:NOTHING

ORG 100Н

BEGIN: JMP SHORT MAIN

CTR DB 00, ‘$’

; Основная процедура:

MAIN PROC NEAR

CALL B10CDR ;0чистить экран

CALL C10SET Установить курсор

CALL D10DISP ; Вывести симв. на экран

RET

MAIN ENDP

; Очистка экрана:

B10CLR PROC

MOV AX, 0600H

MOV BH, 07

MOV CX, 0000 ; Левая верхняя позиция

MOV DX, 184FH ; Правая нижняя позиция

INT 10Н

RET

B10CLR ENDP

; Установка курсора в 00, 00:

C10SET PROC

MOV AH, 02

MOV BH, 00

MOV DX, 0000

INT 10Н

RET

C10SET ENDP

Вывод на экран ASCII символов:

D10DISP PROC

MOV CХ , 256 ;256 итераций

D20: LEA DX, CTR ; Адрес счетчика D20

MOV АН., 09 ; опция вывода символа

INT 21Н.

INC CTR ;Уввличить ечетчик

LOOP D20 ;Уменьшить CХ, если не ноль - цикл

RET ; Вернуться

D10DISP ENDP

CODESG ENDS

END BEGIN

Рис.8.1. Вывод на экран набора символов ASCII-кода

Так как символ доллара не выводится на экран и, кроме того, коды от 08Н до 0DН являются специальными управляющими символами, то это приводит к перемещению курсора и другим управляющим воздействиям. Первая выведенная строка начинается с пробельного символа (00Н), двух "радостных физиономий" (01Н и 02Н) и трех карточных символов (0ЗН, 04Н и 05Н). Код 07Н выдает звуковой сигнал. Код 06Н должен отобразиться карточным символом "пики", но управляющие символы от 08Н до 00Н сотрут его. Код 00Н является "возвратом каретки" и приводит к переходу на новую (следующую) строку. Код 0ЕН представляется в виде музыкальной ноты. Символы после 7FH являются графическими.

Можно изменить программу для обхода управляющих символов. Ниже приведен пример фрагмента программы, позволяющий обойти все символы между 08Н и 0DН. Вы можете поэкспериментировать, обходя только, скажем, 08Н "возврат на символ" и 0DН "возврат каретки":

СMР CTR, 08H ;Меныие чем 08?

JB D30 ; Да - принять

СМР CTR,0DH ;Меньше/равно 0D?

JBЕ D40 ; Да - обойти
D30:

MOV AH, 40H ;Вывод символов < 08
……………..

INT 21H
D40:

INC CTR



ВВОД ДАННЫХ С КЛАВИАТУРЫ: БАЗОВАЯ ВЕРСИЯ DOS

Процедура ввода данных с клавиатуры проще, чем вывод на экран. Для ввода, использующего базовую DOS, область ввода требует наличия списка параметров, содержащего спецификацию полей, которые необходимы при выполнении команды INT. Во-первых, должна быть определена максимальная длина вводимого текста. Это необходимо для предупреждения пользователя звуковым сигналом, если набран слишком длинный текст; символы, превышающие максимальную длину, не принимаются. Во-вторых, в списке параметров должно быть определенное поле, куда команда возвращает действительную длину введенного текста в байтах.

Ниже приведен пример, в котором определен список, параметров для области ввода. Здесь LABEL представляет собой директиву с атрибутом BYTE. Первый байт содержит максимальную длину вводимых данных. Так как это однобайтовое поле, то возможное максимальное значение его - шестнадцатеричное FF или 255. Второй байт необходим DOS для занесения в него действительного числа введенных символов. Третьим байтом начинается поле, которое будет содержать введенные символы.



NAMEPAR LABEL BYTE ;Список параметров:

MAXLEN DB 20 ; Максимальная длина

ACTLEM DB ? ; Реальная длина

NAMEFLD DB 20 DUP (‘ ‘) ; Введенные символы

Так как в списке параметров директива LABEL не занимает места, то NAMEPAR и MAXLEN указывают на один и тот же адрес памяти. B трансляторе MASM для определения списка параметров в виде структуры может использоваться также директива STRUC.

Для запроса на ввод необходимо поместить в регистр АН номер функции - 10 (0AH), загрузить адрес списка параметров (NAMEPAR в нашем примере) в регистр DХ и выполнить INT 21Н:

MOV АН,0AH ;3апрос функции ввода

LEA DX,NAMEPAR ;3агрузить адреса списка параметров

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