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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2009, 16:12   #1
shumsheec
Пользователь
 
Регистрация: 10.02.2009
Сообщений: 33
По умолчанию Не работает программа на встроенном видео

Доброго времени суток, уважаемые!
Не могли бы вы помочь с маленькой проблемой? Программа, написанная на ассемблере и использующая графический режим, правильно выполняется на внешней видеокарте. На встроенной графике - только на секунды две появляется чёрный экран, и сама выгружается. Я новичок в ассемблере, задание делал по примерам к Зубкову, но и они выполняются только на внешней видеокарте.
вот код моей программки:
Код:
Код:
CSEG segment		; имя сегмента программы
org 100h			; начинаем её со смещения 100h
Start:			; метка начала программы
;*******************************************************************************
	mov 	ah, 0h	;Установка видео режима
	mov 	al, 4h	;AL = режим(графика, 320*200)
	int 	10h     	;Видео сервис
	MOV  	CX, 160	;номер столбца
   	MOV  	DX, 100	;номер ряда 
Main:
Set_quadro:
	Call	set_dot
	Push	dx
	Push	cx
	Inc	dx
	Call	set_dot
       Inc	dx
	Call	set_dot
	Pop 	cx
	Pop	dx
Main_loop:
	Mov	ah, 1		; код функции "проверка готовности"
	Int	16h		; обращение к BIOS
	Jz	Main_loop	; символ не введён, возвращаемся на начало подпрограммы
	Xor	ah, ah	; код функции "чтение символа в AL"
	Int	16h		; обращение к BIOS
;*******************************************************************************
	Cmp	al, 'k'	; сравнение полученного символа с "g"
	Jne	_cmp2
	Call	del_quadro
	Inc	cx
	Cmp	cx,320
	Jne	inc_2
	Xor	cx,cx
Inc_2:
	Inc	dx
	Cmp	dx,200
	Jne	main
	Xor	dx,dx
	Jmp	main
_cmp2:
;******************************************************************************
	Cmp	al, 'g'
	Jne	_cmp3
	Call	del_quadro
	Dec	cx
	Jnz	Dec_2
	Mov	cx,319
Dec_2:
	Inc	dx
	Cmp	dx,200
	Jne	main
	Xor	dx,dx
	Jmp	main
_cmp3:
	Cmp	ah, 41h
	Jne	Main
	mov 	ah, 0h	;Установка видео режима
	mov 	al, 3h	;AL = режим(текст,80x25,16/8)
	int 	10h     	;Видео сервис
	int 	20h		; выход из программы
;*******************************************************************************
set_dot:	
   	Mov	ax, 0B800H         ;указываем на видеобуфер
   	mov	ES,AX             ;
   	Mov	ax, 0C03h
	Int	10h
	ret
;*******************************************************************************
Del_dot:
	Mov	ax, 0B800H         ;указываем на видеобуфер
   	mov	ES,AX             ;
   	Mov	ah, 0Ch
	Mov	al,4
	Int	10h
	Ret
;*******************************************************************************
del_quadro:
	Call	del_dot
	Push	dx
	Push	cx
	Inc	dx
	Call	del_dot
       Inc	dx
	Call	del_dot
	Pop 	cx
	Pop	dx

;*******************************************************************************
CSEG ends			; конец сегмента
end Start			; конец программы.
я так понимаю, что дело в подчёркнутом участке кода, но во всех примерах и теории делается именно так... Наставьте на верный путь, плиз, подсажите, что дописать, чтобы было видео-независимо?..
OS Windows XP SP3, motherboard GA M55-S3Gplus, CPU Athlon 6000
shumsheec вне форума Ответить с цитированием
Старый 24.03.2009, 00:06   #2
Axell
Пользователь
 
Аватар для Axell
 
Регистрация: 23.03.2009
Сообщений: 12
По умолчанию

Здравствуйте.
Я недавно програмирую на асемблере, расскажите пожалуйста как вывести в графичесом режиме изображение закрашеного круга.
Axell вне форума Ответить с цитированием
Старый 25.03.2009, 11:54   #3
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

не использовать устаревшие графические режимы
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 25.03.2009, 18:14   #4
Axell
Пользователь
 
Аватар для Axell
 
Регистрация: 23.03.2009
Сообщений: 12
По умолчанию

дело не в графическом режиме, он работает как часы. Мне нужно написать процедуру построения закрашенного круга. На языке высокого уровня это делается просто (на паскале например), а с ассемблером не могу разобраться ((((
какие есть варианты???
Axell вне форума Ответить с цитированием
Старый 26.03.2009, 12:33   #5
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

алгоритм брезенхема например
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 26.03.2009, 22:04   #6
Axell
Пользователь
 
Аватар для Axell
 
Регистрация: 23.03.2009
Сообщений: 12
По умолчанию

с алгаритмом я разобрался, но как это реализовать на ассемблере, сам код не могу написать, запутался в регистрах, и цикле.
Axell вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа видео наблюдения 322223 Мультимедиа в Delphi 11 16.08.2009 12:51
Программа работает не корректно Neymexa Общие вопросы C/C++ 5 24.12.2008 19:17
Программа не работает ZYRGiX Помощь студентам 2 22.07.2008 21:44
Программа не работает Михаил Юрьевич Общие вопросы Delphi 2 19.04.2008 23:27
Не работает программа на delphi pcholka Софт 5 10.01.2008 20:04