Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
FASM_Команды_МП.doc
Скачиваний:
29
Добавлен:
03.06.2015
Размер:
217.6 Кб
Скачать

4. Системный сервис

Для организации ввода или вывода следует обратиться к системному сервису ОС, используя прерывание 21h. Обращение к прерыванию требует указания в регистре процессора AH номера функции, обычно он указывается в шестнадцатеричном формате, а в других регистрах указываются коды, необходимые для работы функции. Состав этих регистров и коды зависят от конкретной функции.

Общая схема вызова системной функции:

mov AH, номер_функции

;mov – загрузка исходных данных

;в регистры процессора

int 21h ;Вызов прерывания

;Использование результатов

Для завершения работы программы служит функция 4Ch.

Вызов:

AH=4СH

AL=код завершения.

Нормальный код завершения 0.

Для ввода в программу символа без отображения его на экране служит функция 08h. Код введенного символа будет записан в регистр AL.

Чтобы вывести на экран последовательность байтов – строку используется функция 09h.

Вызов:

AH=09h

DS:DX=адрес выводимой строки.

Последний байт выводимой строки должен хранить код символа ‘$’. Для формирования строк нужно включать управляющие коды 0Ah(10) и 0Dh(13).

Пример:

mes db ‘Пример многострочного’,0ah,0dh

db ‘текста на экране’,’$’

Функции ввода – вывода приведены в приложении №1.

5. Компилирование программ

Компиляция в машинный код выполняется с помощью пункта меню Run.

Команда Run (F9) – получение машинного кода и исполнение программы. Команда Compile(^+F9) – получение файла с машинным кодом. В случае удачной компиляции выводится окно, показанное на рисунке 4.1.

Рис.5.1. Результат компиляции

На рисунке видно, что компилятор создал программу в два прохода. Размер машинного кода составляет значение 69 байтов. В случае ошибки выводится окно с кратким ее описанием и указывается команда, где произошла ошибка. Сама команда в тексте программы выделяется подсвечиванием строки. Окно ошибки показано на рисунке 4.2.

Рис.5.2. Ошибка в команде

В зависимости от типа машинного кода результат помещается в файлы с расширениями myprg.com для «COM» программ и myprg.exe для «EXE» программ.

6. Задания для самостоятельной работы

Требуется разработать программу в EXE или COM формате.

Вариант № 1. Написать программу для замены первого и последнего символа строки из 10 байтов на символ ‘#’. Вывести на экран исходную строку и преобразованную. Формат программы «COM».

Вариант № 2. Написать программу для обмена местами первого и последнего байта строки из 10 символов. Вывести исходную строку и преобразованную. Формат программы «ЕХЕ».

Вариант № 3. Написать программу для сравнения двух строки из 10 байтов. Известно, что строки различаются одним байтом. Вывести на экран значение байта. Формат программы «COM».

Вариант № 4. Написать программу, которая проверяет нахождение в строке байтов символа «А». Вывести контрольные сообщения. Формат программы «ЕХЕ».

Вариант № 5. Задать две строки. Переслать содержимое второй строки в первую. Вывести строки до перезаписи и после. Формат программы «COM».

Вариант № 6. Написать программу для замены символов строки на произвольный символ. Использовать косвенную адресацию. Вывести исходную строку и преобразованную. Формат программы «EXE».

Вариант № 7. Написать программу для замены первой половины символов строки на произвольный символ. Использовать косвенную адресацию со смещением. Вывести исходную строку и преобразованную. Формат программы «COM».

Вариант № 8. Написать программу для замены символов строки на произвольный символ. Использовать индексную адресацию. Вывести исходную строку и преобразованную. Формат программы «ЕХЕ».

Вариант № 9. Написать программу для замены второй половины строки на произвольный символ. Использовать индексную адресацию со смещением. Вывести исходную строку и преобразованную. Формат программы «COM».

Вариант № 10. Известно, что две строки одинаковой длины имеют общий байт. Написать программу, которая выводит значение этого байта на экран. Формат программы «ЕХЕ».

Вариант № 11. Задать строку из 10 байтов. Заменить каждый второй байт символом ‘*’. Вывести исходную строку и преобразованную. Формат программы «COM».

Вариант №12. Задать строку, число байтов четно. Выделить из строки первую часть и вторую. Полученные строки вывести на экран. Формат программы «ЕХЕ».

Вариант № 13. Задать строку. Вывести на экран значение первого и предпоследнего байтов. Формат программы «COM».

Вариант № 14. Задать строку. Число символов четно. В строку поместить код ‘*’. Разделить строку на две по разделителю. Вывести строки на экран. Формат программы «ЕХЕ».

Вариант № 15. Дана строка из 7 символов. Выделить из строки каждый второй байт. Значение байтов выводить на экран. Формат программы «COM».

Приложения

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]