Читайте также:
|
|
Ниже приведена программа, выводящая на экран строку «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 | Поможем написать вашу работу | Нарушение авторских прав |