Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Пример использования прерываний

Читайте также:
  1. I период развития менеджмента - древний период. Наиболее длительным был первый период развития управления - начиная с 9-7 тыс. лет до н.э. примерно до XVIII в.
  2. II. Оценка эффективности использования основных средств
  3. II. Пример определения контрактной цены на санитарных рубок
  4. III. Первоначальное накопление капитала (особенности, примеры)
  5. Lt;variant>носит примерный характер
  6. V. Соотношение содержания стандартов и примерных программ
  7. V2: Бронхообструктивный синдром (на примере хр. обструктивного бронхита, бронхиальной астмы).
  8. V2: Мочевой синдром (на примере острого гломерулонефрита, хронического гломерулонефрита, осторого пиелонефрита, хронического пиелонефрита)..
  9. VI. Примерные вопросу к зачету /экзамену/ по логике.
  10. VII. ПРИМЕРНЫЙ ПЕРЕЧЕНЬ ВОПРОСОВ К ЭКЗАМЕНУ ПО КУРСУ

Ниже приведена программа, выводящая на экран строку «Hello world».

 

 

Со строки (4) начинается код программы. Это метка, указывающая Ассемблеру на начало кода. В строке (14) стоят операторы end Begin. Это конец программы. Вместо слова Begin можно было бы использовать что-нибудь другое. Например, Start:. В таком случае, нам пришлось бы и завершать программу End Start (14).

Строки (6) (8) выводят на экран сообщение Hello, world!

Функция 09h прерывания 21h выводит строку на экран, адрес которой указан в регистре DX.

В строку (7) загружаем в регистр DX адрес сообщения для вывода (в данном примере это будет строка Hello, world!$).

Ассемблер подставляет вместо offset Message реальный адрес строки с именем Message в памяти. Можно, конечно, записать сразу

mov dx, адрес строки с именем My_name в памяти

Программа будет работать нормально. Но для этого необходимо высчитать самим этот адрес.

Далее, в строке (8), вызываем прерывание MS-DOS, которое и выведет заданную строку на экран.

При выполнении строки (8) программы на Ассемблере вызываем подпрограмму (в данном случае это называется прерывание), которая выводит на экран строку. Для этого помещаем требуемые значения в регистры. Всю необходимую работу (вывод строки, перемещение курсора) берет на себя подпрограмма. Эту строку можно прочитать так: вызываем двадцать первое прерывание (int от англ. interrupt прерывание). Обратите внимание, что после числа 21 стоит буква h. Это шестнадцатеричное число (33 в десятичной системе). Можно заменить строку int 21h на int 33. Программа будет работать корректно. В Ассемблере принято указывать номер прерывания в шестнадцатеричной системе.

В строке (10) вызываем прерывание 20h. Для вызова данного прерывания нет необходимости указывать какие-либо значения в регистрах. Оно выполняет только одну задачу: выход из программы (выход в DOS). В результате выполнения прерывания 20h, программа вернется туда, откуда ее запускали (загружали, вызывали). Например, в Norton Commander или DOS Navigator.

Строка (12) содержит сообщение для вывода. Первое слово (message сообщение) название сообщения. Оно может быть любым (например, mess или string и пр.). Обратите внимание на строку (7), в которой загружен в регистр DX адрес сообщения.

Последний символ в строке Message указывает на конец строки. Если его уберать, то 21h прерывание продолжит вывод до тех пор, пока не встретится где-нибудь в памяти символ $. На экране появятся случайные символы.




Дата добавления: 2014-12-19; просмотров: 110 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.299 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав