Emu8086 Запускаем программу Emu8086 и создаём новый файл через меню file new com template (Файл Новый Шаблон файла com). В редакторе исходного кода после этого мы увидим следующее Рис. Создание нового файла в Emu8086
Скачать 251.21 Kb.
|
ПроцедурыПроцедура - это часть кода, которая может быть вызвана из вашей программы для выполнения какой-либо определенной задачи. Процедуры делают программу более структурной и доступной для понимания. В общем случае процедура возвращает программу к той же самой точке, откуда она была вызвана. Синтаксис для объявления процедуры: имя PROC ; здесь находится ; код процедуры ... RET имя ENDP имя - это имя процедуры. Одно и то же имя должно быть в верхней и нижней части, это используется для проверки правильности закрытия процедур. Возможно, вы уже знаете, что команда RET используется для возвращения в операционную систему. Эта же команда используется для возвращения из процедуры (фактически операционная система воспринимает вашу программу, как специальную процедуру). PROC и ENDP - это директивы компилятора, поэтому они не ассемблируются в какой-либо реальный машинный код. Компилятор только запоминает адрес процедуры. Команда CALL используется для вызова процедуры. Пример:
Вышеописанный пример вызывает процедуру m1, которая выполняет команду MOV BX, 5. После окончания процедуры, программа выполняет команду, следующую после команды CALL, т.е. команду: MOV AX, 2. Есть несколько способов передачи параметров процедуре. Самый простой из них - использование регистров. Здесь представлен пример процедуры, которая принимает два параметра в регистрахAL и BL, умножает их и возвращает результат в регистр AX:
В этом примере значение регистра AL изменяется каждый раз при вызове процедуры, а состояние регистра BL не изменяется. Таким образом мы получили алгоритм вычисления числа 2 в 4-ой степени. В результате в регистре AX будет число 16 (или 10h). Здесь дан другой пример, в котором используется процедура для вывода на экран сообщения Hello World!:
"b." - префикс перед [SI] означает, что нам необходимо сравнивать байты, а не слова. Если вы хотите сравнить слова, добавьте префикс "w." вместо "b.". Если один из сравниваемых операторов - регистр, то вставлять префиксы не требуется, так как компилятор знает размер каждого регистра. |