Сист. прогр. Ч1 (Лекции по СПО), страница 11

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

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

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

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

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

При использовании команды LOOP инициализируйте регистр СХ положительным числом. Команда LOOP контролирует только нулевое значение, при отрицательном программа будет продолжаться циклически.

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

Выбирайте команды условного перехода соответственно операциям над знаковыми или беззнаковыми данными.

Для вызова процедуры используйте команду CALL, а для возврата из процедуры - команду RET. Вызываемая процедура может в свою очередь вызвать другую процедуру, и если следовать существующим соглашениям, то команда RET всегда будет выбирать из стека правильный адрес возврата. Единственные примеры в этой книге, где используется переход в процедуру вместо ее вызова, - в начале СОМ-программ.

Будьте внимательны при использовании индексных операндов. Сравните:

MOV AX,SI

mov ах,[SI]

Первая команду MOV пересылает в регистр АХ содержимое регистра SI. Вторая команда MOV для доступа к пересылаемому слову в памяти использует относительный адрес в регистре SI.

Используйте команды сдвига для удваивания значений и деления пополам, но при этом внимательно выбирайте соответствующие команды для знаковых и беззнаковых данных.

ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ

Какое максимальное количество байтов могут обойти команды короткий JMP, LOOP и относительный переход? Какой машинный код операнда при этом генерируется?

Команда JMP начинается на 0624Н. Определите адрес перехода, если шестнадцатеричный объектный код для операнда команды JMP: а) 27, б) 6В, в) Сб.

Напишите программу для вычисления 12 чисел Фибоначчи: 1, 1, 2, 3, 5, 8, 13,... (каждое число в последовательности представляет собой сумму двух предыдущих чисел). Для организации цикла используйте команду LOOP. Выполните ассемблирование, компоновку и с помощью отладчика DEBUG трассировку программы.

Предположим, что регистры АХ и ВХ содержат знаковые данные, а СХ и DX - беззнаковые. Определите команды СМР (где необходимо) и команды безусловного перехода для следующих проверок:

а) значение в DX больше, чем в СХ?

б) значение в ВХ больше, чем в АХ?

в) СХ содержит нуль?

г) было ли переполнение?

д) значение в ВХ равно или меньше, чем в АХ?

е) значение в DX равно или меньше, чем в СХ?

На какие флаги воздействуют следующие события и какое значение этих флагов?

а) произошло переполнение;

б) результат отрицательный;

в) результат нулевой;

г) обработка в одношаговом режиме;

д) передача данных должна быть справа налево.

Что произойдет при выполнении программы, приведенной на рис.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

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