Главная » Просмотр файлов » В.Н. Пильщиков - Программирование на языке ассемблера IBM PC

В.Н. Пильщиков - Программирование на языке ассемблера IBM PC (1110551), страница 13

Файл №1110551 В.Н. Пильщиков - Программирование на языке ассемблера IBM PC (В.Н. Пильщиков - Программирование на языке ассемблера IBM PC) 13 страницаВ.Н. Пильщиков - Программирование на языке ассемблера IBM PC (1110551) страница 132019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Таким образом, эта коь(аида очепь похожа иа комагщу САН., ио только вызывает процедуры более "хитрым" способом. Отметим, что по комэиде Р)Т можио сгенерировать прерымщие с любым иомером, например, прерывание, соответствующее делению иа 0 или иажатию клавиши иа клавиатуре. Олцако делать этого ие следует, а надо использовать эту комаилу только для вызова процедур ОС. Далее. В состав ОС (имеется в виду дисковая операпиоииая система фирмы М1сгозо(г - М8 ))ОЯ) входит много процедур и для иих ие хватает допустимых номеров прерываний. В связи с этим процедуры обьедиияютея в группы с тем, чтобы процелуры из одной группы вызмвались по прерыванию с одиим и тем же иомером. Процедуры одной группы принято называть фуикциями соответствую-, щего прерывания.

Чтобы различать их, перед выполнением комаиды ВчтТ в регистр АН записывают помер нужной функции: иоч хи, <лонер фуаяпеи> глт <лемэр прериэааея> Получив по комэцде ПЧТ управлеиие, ОС по номеру из регистра АН определяет, к какой именно фушшии произошло обращение, после чего и передает управление ей. Для выполнения функции может потребоваться определенная ииформация (иапример, для функции вывода символа иа экран нужно указать код этого символа).

Такая иифорьпщия передается через репгсгры. Какие именно параметры илло передавать и через какие регистры - зависит от конкретной фуикпии, общих правил здесь иет. Мы ие будем перечислягь иомера всех прерываний и функций ОС, это можио найти в многочисленных книгах по МВ ПОЗ. Мы рассмотрим лишь некоторые лэад-зээсд. пр рзи функции, реалшующие ввод-вмвод и окончание счета программы, - те, на основе котормх чуть позже будут определены операции вмзда-вывода, которыми мы пользуемся в данной книге. Отметим, что все они явщются функциями прерывания с шестнадцатеричнмм номером 21 (десятмчным 33). 13.23.

Некоторые функции прерывания 21Ь Завэршэидв программ и Завершив все свои действия, програьпга обязана вернуть управление операционной системе, чтобы пользователь мог продолжить работу на ПК. Такой возврат, соответствующий операции "завершить программу", реализуется функцией 4СЬ прерывания 21Ь: ИОт ИЬ,<код эаээриэвак>' нот ьл,зси хнт 21и Каждан программа, вообще говора, обязана сообщить, успешно или нет она швершила свою работу.

Дело в том, что любая программа вызывается из кахой-то другой программы (например, из операшюнной снстемм), и иногда вызвавшей программе, чтобы правильно продожкить работу, надо зназь, выполнила ли вызванная программа все, что надо, или она проработала с ошибкой. Такая информациа передается в виде када завершения программы (некоторого целого числа), который должен быть нулевым, если программа проработала правильно, н' ненулевыы (каким именно - оговаривается в каждом случае особо) в противном случае. (Узнать код завершения вызванной програмым можно с помощью функции 4РЬ прерывания 21Ь.) Потребуется этот код илн нет, прогрэыма все равно должна выдать его. Вывод иа экран (э шэксшээаэг режима) Дяя вывода одного сиывола на экран ПК исповьзуепж функшм 02 прерывания 21Ь: иот вк,<код эааодамото сзаюолэ> нот зл,з 1нт 21и Выводимый символ высвечивается в позиции курсора (что бы там ни было записано), после чего курсор сдвнгаетса на одну позицию вправо.

Если курсор находился в конце строки экрана, то он перемещается на начало следующей строки, а если курсор был в конце последней строки экрана, то содержимое экрана сдвигаетсв на одну строку вверх, а внизу поавллетса пустая строка, в начало которой н устанавливаетса курсор. Особым образом осуществляется вывод символов с кодами 7, 8, 9, 10 (ОАЬ) и 13 (01)Ь).

Символ с кодом 7 (Ье11, звонок) на экране не высвечиваегса (н курсор не сдвигается), а вызывает звуковой сигнал. Символ с кодом 8 (Ьасйзрасе, шаг назад) вошращает курсор на одну позицюо влево, если только он не был в самой левой позиции строки. Символ с ходоы 9 (гаЬ, табуащия) сме- 244 пиелеммироввиие ие ломке ассемблера гнм Рс шает курсор вправо на ближайшую позицию, кратную 8. Символ с кодом 10 (11пе Геед, перевод строки) перемещает курсор в следующ)ло строку экрана, оставляя его в той же колонке.

Символ с кодом 13 (сагпяе гецлп, возврат каретки) устанавливает курсор на начало текущей строки; вывод подряд символов с кодами 13 и 10 означает перевод курсора на начало следующей строки. Вля вывода на экран строки (последовательности символов) можно, конечно, использовазь функшяо 02, однако сделать это можно и за один прием с помощью фуншщи 09 прермвания 21Ь: вя:вх г начальная алрос оэроюз иос лн,в гнт 21ь Перед обращением х этой функции в репгстр РБ должен быть помещен номер того сегмента памяти, в котором находится выводимая строка, а в регистр РХ- смещение строки внутри этого сегмента.

При этом в конце строки должен находиться символ 5' (код 24Ь), юпормй служит прюнэхом ковша строки и сам не выводится. Среди фушший 1)03 нет такой, которая выловит числа. Такую операцию, если надо, приходится реализоапь на основе рассмотренных функций. ВееО о кллеиаюуры При нажатии (в любой момент) клавиши на клавиатуре ее код (соответ. ствуюший символ) юноситсл опепэционной системой в специальный буфер ввода, откуда эти ходы будут затем считываться функциямн ввода. Тем самым возможен "досрочный" ввсп: символы могут быть набраны еще до того, хак программа начнет ввод. Размер этого буфера ОС - 15 позиций, поэтому если до выполнения какой-нибудь функции ввода уже было нюкато 15 клавиш, то на нажатие 1б-й и последующих клавиш ОС не реагирует (кроме выдачи звукового сигнала).

По мере считывания из этого буфера коды сдвигаются в его начало и кодм новых нажатых клавиш дописываются в конец буфера; функции ввода всеща считывают символы из начала буфера. Если вызвана функция ввода, а в буфере нет никахих символов, то ОС ожидает нажатия клавиши. Если программа не желает вводить символы, которые были набраны досрочно, то она должна очистить буфер ввода ОС, для чего следует выполнить функцию ОСЬ (12) прерывания 21Ь при нулевом репютре А1:.

иоч ьь,е моч лн,ось гит лзь Из всех функций 1303, реализующих ввод с клавиатуры, мы рассмотрим только одну - функцию ОАЬ (10) прерыванию 21Ь, с помощью которой можно ввестИ сразу несколько символов (строху) и когорал допускает редактирование набирае. мого текста: вася-э юл. и р вэв Па:ВХ ° адрес буаерэ для эаээсэ ээедеээоа стрехи иот ьа,саь пгт хза Эта функция вводит символы до тех пор, поха не будет нажата клавиша Епгег, и записывает их в указанный буфер. Вводимые символы высвечиваются на экране (ввод с эхом).

Пока не нажата клавиша Епгег, набираемый текст можно редактировать с поьющыо следующих клавиш: +-, Васхэрасе - отмена последнего символа Езс - отмена всего набранного текста Буфер, начальный адрес которого задается в регистрах Рб и РХ (это не буфер ОС, а буфер программы), должен изгсть следующую структуру: шах и з1 з2 ... зп СК 0 1 2 3 и+1 и+2 шах+1 Перед обращением к функции в начальный баГгт (с индексом 0) буфера должно быть записано число (шах), указывающее максимальное количество символов, которое имеет право ввести эта функция (размер буфера должен быть рассчитан на это количество). Если уже введено шах-1 символов, то следующие символы не вводятся и не записываются в буфер, а лишь раздается звуковой сигнал (шах-ым символом будет код клавиши Епгег).

Число (и) реально введенных символов записывается функцией в байт буфера с индексом 1, а свми символм - начиная с позиции, имеющей индекс 2. В (и+2)-ю позицию буфера записывается "конец строки" Сй (код 13), соответствующий клавише Епгег, однахо в числе и он не учитмвается.

Пример: ввг пв зо, г, зо рог<' '> ;э сегменте деээээ ьха пх,ввг иот ан,оьь гнт 21ь Если при вводе были набраны символы АВС, то содержимое буфера В()Р будет следующиьс ВОГ(С1-ЗС, Вщцг)-З, ВВГ121-ЭЗЬ <х д Ь1, ВВГ(З1-ЭЗЬ, ВОГ(Э)-ЭЗЬ, Вог151 13 <са)р оателэлее беате ле лелееетае 13З. Операции ввода-вывода Кэк ватно, функции ОС реализуют очень полезные, но, к сожалению, слишком мелкие операции ввода-вывода.

Например, с их помощью можно вывести на экран символ, но нельзя вывести число. Это не очень приятно. Во-первых, более крупные операции (типа вывода чисел) приходится реализовывать в программах кюкдый раз заново. Во-вторых, отсутствие таких операций вмзывает Лноюг-миэи- явн пваевммиюввниа на замяв ассемблера ИЫ лп 13ЗЛ. Сиена храиениа и подключения операций ваада-вывода Вначале рассмотрим схему хранения операций ввода-вывода (ВВ) и подключения нх к прогрш|мам: 1О.АЗМ Р.АЗМ 1пс1 го.аип макросм процедур В — ~'~МАЕМ М-юР,ОВ1-и~ ЫЯД вЂ” зь Р.ЕХЕ 1ОРКОС.ОВ1 / программа Часть операций ввода-вывода реализована в виде процедур, описания которых собранм в отдельном модуле, хранящемся в файле с именем 1ОРКОС.АЗМ (текст модуля приведен ниже). Предполагается, по этот модуль заранее отгранслнрован и в виде обьехтного модула записан в файл с именем 1ОРКОС.ОВ1.

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

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

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

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