Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB.DOC
Скачиваний:
16
Добавлен:
18.02.2017
Размер:
111.1 Кб
Скачать

Порядок выполнения работы

При выполнении всех операций используйте два числа:

- номер Вашей группы (число N1),

- Ваш номер по списку (N2).

Запустите отладчик Debug.

1. Cложите два числа N1 и N2, записав их в регистры.

2. Вычтите из N1 число N2.

3. Умножте N1 на N2.

4. Разделите N1 на N2.

5. Выведите на экран букву алфавита с номером N2.

6. Выведите на экран строку символов: - Фамилия Имя.

При выполнении пунктов 1-4 используйте режим трассировки T, записывая в конспект состояние регистров после каждой команды.

7. Запишите программу п.5 на диск как COM файл. Проверьте ее работу.

8. Попробуйте поэкспериментировать с отладчиком, решая свои примеры.

Лабораторная работа 6 Вывод точечной графики для ega адаптера. Циклы и процедуры в ассемблере. Краткие сведения о видеосистемах ibm pc.

Особенности различных видеосистем I B M описаны, например, в [ 1 ]. В работе мы ко-ротко рассмотрим, как выводится графическая информация в EGA. В 16 цветном режиме EGA использует 4 битовые плоскости для хранения информации о цвете каждой из 640*350 точек (каждая точка описывается 4-мя битами). Операции над содержимым битовых плоскостей выполняется не непосредственно, а через 4 регистра фиксатора, регистр палитры и регистр маски. Обмен с регистрами возможен порциями по 8 бит (1 байт). Чтобы задать цвет конкрет-ной точки в байте, остальные надо замаскировать с помощью маски.

Для подробного знакомства с EGA советуем прочитать [ Л1. стр. 228-283].

Программа на ассемблере

Типичная ассемблерная программа типа .EXE состоит из трех сегментов (частей):

- стек

- данные

- код.

Правила оформления можно увидеть в приведенном примере. Описание каждого сегмен-та заканчивается оператором ENDS.

1. Сегмент стека - содержит директиву DW (Define Word), описывающую 128 слов. Это размер стека. Cтрока описания сегмента содержит класс сегмента - 'STACK' и тип сегмента - STACK.

2. Сегмент данных - начало DATASG, класс 'DATA'. В нем приведено описание используемых в программе данных, например:

x0 dw (слово) 0 (значение)

y0 db (байт) 0 (значение)

z0 dd (двойное слово) ABCABCH (значение)

3. Сегмент кода - начало CODESG класс 'CODE' - программный.

Текст программного сегмента начинается с оператора ASSUME, который позволяет транслятору сопоставить сегментные регистры и адресуемые ими сегменты. Сама программа состоит из процедур. Программа из приведенного примера рисует на экране прямоугольник высотой hi = 100 точек и шириной len = 128 точек (16 байт) цветом color = 14. В программе две процедуры: RECT - рисование прямоугольника и MAIN - основная.

Процедура начинается с имени (MAIN) и оператора PROG. Назначение отдельных операторов понятно из коментариев. В программе x0 и y0 - координаты левого верхнего угла прямоугольника (x0 - в байтах, y0 - в пикселах (точках)). Оператор CALL вызывает соответст-вующую программу (у нас RECT).

Перед выходом из программы установим текстовый видеорежим.

Текст программы завершается директивой END, заканчивающей трансляцию. В качестве оператора этой директивы указывается точка входа в главную процедуры (MAIN).

В работе нам потребуется повторять процедуру построения прямоугольника несколько раз. Для этого можно использовать один из вариантов построения циклов. В примере рассмот-рены два способа решения тукой задачи.

ПРИМЕРЫ ПОСТРОЕНИЯ ЦИКЛОВ В АССЕМБЛЕРЕ

1. MOV CX, 4 ; задаем в CX счетчик циклов

L1: .................... ; внутренние

.................... ; операторы цикла

LOOP L1 ; уменьшить CX и повторить, если CX <> 0

2. MOV STEP, 4 ; задаем в STEP счетчик циклов

L1: ........................ ; внутренние

.......................... ; операторы цикла

DEC STEP ; уменьшим STEP

JNZ L1 ; повторим цикл, если STEP <> 0

Соседние файлы в предмете Операционные системы