Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2010, 19:09   #1
Hunter557
Пользователь
 
Аватар для Hunter557
 
Регистрация: 20.02.2010
Сообщений: 15
По умолчанию Программа проверки на битые пиксели

Доброго времени суток .
вот хотел запрограмировать на ассемблере простенькую програмку для тестирования битых пикселей для работы в DOS . Нужно что бы программа
заставила весь "экран" светится чёрным, красным, синим, зелёным и белым
цветами по очериди .Но не с заданой паузой между сменами цвета ,а чтобы с нажатием любой клавиши на клавиатуре цвет менялся на следующий в заданом порядке. (запустил программу - появился чёрный цвет ,нажал клавишу - красный ...
я на ассемблере програмировать только начинаю знаю как програмировать математические вычисления... а вот как запрограмировать такую "штуку" не знаю .Подскажите как зделать ,или подкиньте пожалуйста текст такой программы.
Hunter557 вне форума Ответить с цитированием
Старый 09.09.2010, 20:01   #2
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Ну можно для простоты выбрать 320x200x256 режим. Это режим 13h прерывания int 10h. (mov ax,13/int 10h). Все равно LCD монитор растянет на весь экран все пиксели я думаю. А дальше адрес видео сегмента в 0A000h (push a000h/pop es) и пишем туда 64 kb любого одного значения, например 0FFh. (rep stosw). Далее нужно играть с палитрой. Это порты ввода вывода 3c8h и 3c9h. Я бы создал такую процедурку примерно:

Код:
mov dx,3c8h  
mov al,FFh ; наш цвет которым заполнен экран
out dx,al ; будем изменять его RGB состовляющую

mov dx,3c9h                  
mov al,63 ; красный 
out dx,al
mov al,63 ; зеленый
out dx,al
mov al,63 ; синий
out dx,al
Таким образом получится экран белого цвета. Если нужно установить например красный, то тоже самое только в al = 63/0/0 ну и тд.
Ждать нажатия любой кнопки - xor ah,ah/int 16h

----

А вот даже не поленился и накидал приблизительно:
Код:
.MODEL Tiny
.CODE
.STARTUP                        
	mov ax,13	; Устанавливаем видеорежим 320x200, 256 цветов
	int 10h

	push 0a000h	; В ES будет адрес видеосегмента A000h
	pop es

	;xor di,di	; зеремлен, потому что он и так в нулях при
			; старте COM проги
	mov cx,32000
	xor ax,ax	; цветовой индекс 0 (черный по умолчанию)
	rep stosw

	mov si,offset pallete ; смешение на палитру
change_col:

	mov dx,3c8h     ; порт видео палитры (3C8h) 
	xor al,al       ; установить индекс палитры 0
	out dx,al 

	mov dx,3c9h                  ; порт записи 3C9h
	lodsb
	cmp al,255	; Дошли до конца палитры? 255-маркер конца
	jne skip_pal	
	mov si,offset pallete ; если дошли до конца - смещение на начало
	lodsb
skip_pal:
   	out dx,al	; красный цвет в порт
	lodsb
   	out dx,al	; зеленую компоненту
	lodsb
   	out dx,al	; и синию	

	xor ah,ah	; ждем нажатие клавиши
	int 16h
	cmp al,27	; нажата ESC?
	jne change_col	; нет - меняем палитру по кругу

	mov ax,3	; установим текстовый режим 80x25
	int 10h
	int 20h		; выходим.

pallete db 63,0,0	; красный цвет
	db 0,63,0	; зеленый цвет
	db 0,0,63 	; синий
	db 63,63,63	; белый
	db 0,0,0	; черный
	db 255		; маркер конца массива
END
Компилировал Turbo Assembler Version 4.1 Copyright (c) 1988, 1996 Borland International.
tasm.exe прога.asm
tlink.exe /t прога.obj
на выходе COM файл, 80 байт.
В Win XP 32bit SP3 полет нормальный
Вложения
Тип файла: rar testpix.rar (821 байт, 20 просмотров)
Чтобы понять рекурсию, сперва нужно понять рекурсию.

Последний раз редактировалось Tronix; 09.09.2010 в 21:26.
Tronix вне форума Ответить с цитированием
Старый 30.01.2011, 19:12   #3
swatkiev
Пользователь
 
Регистрация: 05.04.2010
Сообщений: 15
По умолчанию

Друзья доброго времени суток! Помогите довести до ума задачу. У меня было задание протестировать по кусочкам экран на разные цвета (разбить экран на 9 квадратов и забить в каждый какой-то цвет). Для примера я скинул файл 1.asm, в котором тестируется один из квадратиков на зеленый цвет. С этим я успешно справился.
А теперь вот такая дилемма: нужно используя цикл каждый из квадратиков протестировать на каждый из цветов: синий, зеленый и красный. Я сделал кое-какие наброски, но что-то оно все равно не работает (файл 2.asm).
Вложения
Тип файла: rar Desktop.rar (400 байт, 15 просмотров)
swatkiev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа нахождения и проверки символов/строк MixanMM Общие вопросы Delphi 14 09.07.2009 08:44
Пиксели в сантиметры ve7er Мультимедиа в Delphi 2 26.03.2009 21:37
Пиксели в Image Witaliy Общие вопросы Delphi 2 05.05.2008 19:16
битые файлы Лубышев Свободное общение 4 14.01.2008 20:30