Body #07
25 июня 1997

PUSH HL - Процедура вывода точки.

<b>PUSH HL</b> - Процедура вывода точки.
┌══════════════════════════════════════════════════════════════┐
│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ PUSH HL ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓│
└══════════════════════════════════════════════════════════════┘
(C)SATSOFT   					   PHN 270-72-36

СЕГОДНЯ  Я  ПРОДОЛЖАЮ  РУБРИКУ ПОД КОДОВЫМ НАЗВАНИЕМ 'PUSH HL' И
ПРЕДЛАГАЮ  ВАШЕМУ  ВНИМАНИЮ  ОЧЕНЬ  ПРОСТЕНЬКУЮ ПРОЦЕДУРУ ВЫВОДА
ТОЧКИ НА ЭКРАН:

;ВЫВОД ТОЧКИ
	ORG	40000
	LD	D,10	;КООРДИНАТА Х
	LD	E,11	;КООРДИНАТА Y
	LD	A,#AF	;РАСЧЕТ АДРЕСА ПО КООРДИНАТАМ
	SUB	E
	RET	C
	LD	E,A
	AND	A
	RRA
	SCF
	RRA
	AND	A
	RRA
	XOR	E
	AND	#F8
	XOR	E
	LD	H,A
	LD	A,D
	RLCA
	RLCA
	RLCA
	XOR	E
	AND	#C7
	XOR	E
	RLCA
	RLCA
	LD	L,A

ТЕПЕРЬ  МЫ  ЗНАЕМ НОМЕР СЕГМЕНТА, РЯДА, СТОЛБЦА И ЛИНИИ. ВСЕ ЭТИ
ДАННЫЕ  ХРАНЯТСЯ  В  РЕГИСТРОВОЙ  ПАРЕ  'HL'.Т.К. ДАННАЯ ЛИНИЯ В
ЗНАКОМЕСТЕ  ИМЕЕТ  8  ПИКСЕЛОВ,  А ВКЛЮЧИТЬ НУЖНО ТОЛЬКО ОДИН ИЗ
НИХ,  ТО  НЕОБХОДИМО  РАССЧИТАТЬ  КАКОЙ  БИТ ТРЕБУЕТСЯ ВКЛЮЧИТЬ.
ФАКТИЧЕСКИ,   ЕГО   НОМЕР   ОПРЕДЕЛЯЕТСЯ   ОСТАТКОМ  ОТ  ДЕЛЕНИЯ
КООРДИНАТЫ   Х   НА  8,  А  ВЫЧИСЛЯЕТСЯ  ЭТОТ  ОСТАТОК  -  ПУТЕМ
МАСКИРОВАНИЯ ПЯТИ СТАРШИХ БИТОВ. НО ДЕЛО В ТОМ, ЧТО КООРДИНАТА Х
ИЗМЕНЯЕТСЯ  СЛЕВА НАПРАВО,Т.Е. 0,1,2,3,...,175, А НОМЕРА БИТОВ В
БАЙТЕ,   СООТВЕТСТВУЮЩИМ   НАЙДЕННОЙ  ЛИНИИ  ИДУТ  НАОБОРОТ,Т.Е.
7,6,5,...,0.ПОЭТОМУ  НУЖНО СДЕЛАТЬ ПРЕОБРАЗОВАНИЕ. В РЕГИСТР 'А'
ВВОДИТСЯ  ЧИСЛО  '#FE'(11111110),  ПОСЛЕ  ЧЕГО ДЕЛАЕТСЯ ВРАЩЕНИЕ
ЭТОГО БАЙТА N+1 РАЗ, ГДЕ N - ОСТАТОК ОТ ДЕЛЕНИЯ Х НА 8.

	LD	A,D	;КООРДИНАТА Х
	AND	#07	;МАСКИРОВАНИЕ
	LD	B,A	;ОСТАТОК ОТ ДЕЛЕНИЯ Х НА 8
	INC	B	;+1
	LD	A,#FE	;ВВЕЛИ БАЙТ 11111110
LOOP	RRCA		;ВРАЩЕНИЕ N+1 РАЗ
	DJNZ	LOOP	
	LD	B,#FF	;ИНВЕРСИЯ,ЧТОБЫ ПЕЧАТЬ ТОЧКИ БЫЛА ЧЕРНЫМ
	XOR	B	;			       ПО БЕЛОМУ
	LD	B,A	;ЗАПОМНИЛИ В РЕГИСТРЕ 'B'
	LD	A,(HL)	;В 'А' ГРУЗИМ ЗНАЧЕНИЕ ИЗ ЭКРАНА
	OR	B	;ВКЛЮЧЕМ ТРЕБУЕМЫЙ БИТ
	LD	(HL),A	;ГРУЗИМ В ЭКРАН ПОЛУЧЕННЫЙ РЕЗУЛЬТАТ
	RET		;ВЫХОД ИЗ ПРОЦЕДУРЫ	:)

ВМЕСТО  КОМАНДЫ 'OR B' МОЖНО ИСПОЛЬЗОВАТЬ 'XOR B' И ПЕЧАТЬ БУДЕТ
ПРОИЗВОДИТЬСЯ  ПО  XOR'У.ПО  ИДЕЕ, ВСЕ ДОЛЖНО БЫТЬ ПОНЯТНО, Т.К.
ПРОГА  ОЧЕНЬ  ПРОСТАЯ  И  К  НЕЙ В ДОБАВОК ПРЕДОСТАВЛЕНО БОЛЬШОЕ
КОЛИЧЕСТВО КОММЕНТАРИЕВ.

ПИШИТЕ  О  ВСЕМ,  ЧТО  ВАС  ИНТЕРЕСУЕТ  ПО АССЕМБЛЕРУ В РАЗУМНЫХ
ПРЕДЕЛАХ.ПРИСЫЛАЙТЕ   СВОИ  ПРОГРАММЫ,  И  Я  ИХ  ОБЯЗАТЕЛЬНО(!)
ОПУБЛИКУЮ.



Другие статьи номера:

GAME Обзор - Описание игры Emlyn Hughes International Football.

PUSH HL - Процедура вывода точки.

Давайте посмеемся - Результаты конкурса ответов на вопросы. Конкурс на самый смешной анекдот , случай из жизни. 25 анекдотов от редакции.

От авторов - Ответ редакции газеты на письмо BROM'a.

Реклама - Реклама и объявления ...


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Реклама - Ремонт компьютеров, дисководов , мониторов, принтеров и т.д.
FREE SOfTWARE AND MAGIC CARPETS!
CODING - The Оптимизация - построение таблицы частоты повторения байтов.
Census action - новая версия списка Спектрумовских никнеймов, насчитывающая около пяти с половиной сотен пунктов.
BBS - список станций BBS ZXNet.

В этот день...   23 апреля