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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2010, 01:22   #11
Vergo
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 38
По умолчанию

Да, там по другому надо делать. Там пиксель не равен байту.
Vergo вне форума Ответить с цитированием
Старый 15.10.2010, 05:34   #12
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

SwiP
Вот режим 11h (640х480х2) в одном байте сразу 8 точек по горизонтали: 1-пиксел светится, 0-пиксел не светится, выводим как и в первой задаче квадрат 100х100
Код:
; masm dos com #
.286
.model tiny
.code
start:	mov ax,11h; устанавливаю режим 640х480 2 цвета
    	int 10h
	push 0A000h; позиционирую ES на область графического видеоадаптера
	pop es
	mov ax,0FFFFh; 16 точек сразу
	mov di,50; координата верхнего левого угла квадрата
	mov cx,100
@@:	push cx
	mov cx,6; выводим по 16 точек сразу
	rep stosw; вывожу линию из 16*6=96 точек
	push ax
	mov al,0F0h
	stosb; и еще 4 точки  96+4=100
	pop ax
	add di,67; сдвигаюсь на 540 точек (=640-100) 540/8=67,5
	pop cx
	loop @b; вывожу 100 линий
	mov ax,0
	int 16h; любуемся на дела рук своих пока не нажмут на любую клавишу
	mov ax,3
    	int 10h; устанавливаем текстовый режим
	retn; выходим из программы
end start
в 12h режиме в одном байте 2 точки, по аналогии с 13h и 11h режимами разбирайся с 12h сам!
Mikl___ вне форума Ответить с цитированием
Старый 18.10.2010, 20:37   #13
SwiP
Форумчанин
 
Регистрация: 18.03.2009
Сообщений: 101
По умолчанию

Код:
mov ax,0FFFFh; 16 точек сразу
А это можно пояснить?
SwiP вне форума Ответить с цитированием
Старый 18.10.2010, 21:05   #14
Vergo
Пользователь
 
Регистрация: 20.09.2010
Сообщений: 38
По умолчанию

AX вмещает 2 байта, т.е. 16 бит. По одному биту на пиксель.
0FFFFh (в шестнадцатеричной) = 1111111111111111b (в двоичной)
Vergo вне форума Ответить с цитированием
Старый 19.10.2010, 23:01   #15
SwiP
Форумчанин
 
Регистрация: 18.03.2009
Сообщений: 101
По умолчанию

Аа, то есть бит=точка здесь, так?
SwiP вне форума Ответить с цитированием
Старый 20.10.2010, 03:45   #16
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

SwiP
не прошло и пяти дней
Цитата:
Mikl___ 15.10.2010 написал
режим 11h (640х480х2) в одном байте сразу 8 точек по горизонтали
Цитата:
SwiP 20.10.2010 ответил
Аа, то есть бит=точка здесь, так?
Mikl___ вне форума Ответить с цитированием
Старый 01.02.2011, 23:15   #17
yuriyua
 
Регистрация: 10.09.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Mikl___ Посмотреть сообщение
Лучшего способа нет так как в видеопамяти линейная адресация, а экран для человека это матрица из столбцов и строк
Код:
; masm dos com #
.286
.model tiny
.code
start:	mov ax,13h; устанавливаю режим 320х160 256 цветов
    	int 10h
	push 0A000h; позиционирую ES на область графического видеоадаптера
	pop es
	mov al,0Fh; цвет точки
	mov di,50; координата верхнего левого угла квадрата
	mov cx,100
@@:	push cx
	mov cx,100
	rep stosb; вывожу линию из 100 точек
	add di,220; сдвигаюсь на 220 точек (=320-100)
	pop cx
	loop @b; вывожу 100 линий
	mov ax,0
	int 16h; любуемся на дела рук своих пока не нажмут на любую клавишу
	mov ax,3
    	int 10h; устанавливаем текстовый режим
	retn; выходим из программы
end start
как сделать чтобы прямоугольник рисовался не в верхем краю?

Последний раз редактировалось yuriyua; 02.02.2011 в 17:45.
yuriyua вне форума Ответить с цитированием
Старый 02.02.2011, 19:23   #18
yuriyua
 
Регистрация: 10.09.2009
Сообщений: 8
Радость а так непроще?

Код:
	mov  AX,11h	 
	int  10h
	MOV  AH,0CH
	MOV  AL,00
	mov  CX, 100	; X - horizontally
	mov  DX, 99    ; Y - vertically

label_1:      
	inc  dx
	mov cx,100
		label_2:
			inc  cx
			int  10h   
			cmp  cx, 200
		jbe  label_2
	cmp  dx, 200
	jbe  label_1
yuriyua вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Латинский квадрат innaa639 Помощь студентам 1 22.11.2009 22:40
ХИ квадрат Vito89 Помощь студентам 3 25.10.2009 16:35
Черный квадрат Дініс Свободное общение 9 07.09.2009 21:43
нарисовать квадрат с длиной стороны 100 пикселей, используя процедуру linerel(x,y:integer) Кася_ Помощь студентам 6 23.02.2009 19:13
Магический квадрат Anarx Паскаль, Turbo Pascal, PascalABC.NET 2 18.12.2008 13:07