Вывод на экран в графическом режиме средствами NASM

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

Вывод точки

Для вывода используется следующая команда ассемблера:

Ввод: ah=0ch

bh=номер страницы

cx=номер столбца

dx=строка

al=цвет точки

Прерывание — 10h

Задания

1. Используя функцию 0ch, выведите на экран 2 точки в произвольном месте экрана.

При выводе точки следует использовать алгоритм:

  1. Включаем графический режим (функция 0h BIOS).
  2. Выводим точку (функция 0Ch BIOS).
  3. Организуем ввод символа из STDIN для задержки изображения на экране (например, функция 08h DOS).
  4. Включаем 3-й текстовый режим (функция 0h BIOS).

2. Выведите на экран прямоугольник со сторонами, раскрашенными в разные цвета.

В качестве подсказки привожу фрагмент кода вывода верхней красной линии

	mov	ah,0ch
	mov	cx,100
	mov	bh,0
	mov	al,0100b
	mov	dx,100
label1:
	int	10h
	inc 	cx
	cmp	cx,400
	jb	label1

Чтобы нарисовать остальные стороны надо применить с небольшими изменениями этот фрагмент еще 3 раза.

3.  Используя NASM, выведите на экран решетку, состоящую из 4-х горизонтальных и 4-х вертикальных отрезков.

4. Выведите закрашенный прямоугольник.

Замечание по пунктам 2-4

При выводе линий можно использовать циклическую конструкцию loop. Однако при этом следует помнить, что при использовании loop является обязательным использование регистра cx, но этот регистр нужен является обязательным при выводе точки — он хранит номер столбца. Поэтому перед тем как будете задавать cx при выводе точки необходимо сохранить значение регистра cx, например, в стеке.

5. Дополнительное задание. Найдите алгоритмы рисования наклонных прямых и реализуйте его, используя язык NASM. Удачное описание поощряется.

Поделиться:
  • Добавить ВКонтакте заметку об этой странице
  • Мой Мир
  • Facebook
  • Twitter
  • LiveJournal
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • StumbleUpon
  • Technorati
  • БобрДобр
  • Memori.ru
  • МоёМесто.ru