Вопрос № 67066:
Здравствуйте уважаемые эксперты!
В главе 14-ть книги Олега Калашникова описывается принцип рисования рамки на экране. Автор говорит следующее:
- Перед тем как вывести рамку в центр экрана необходимо разделить её высоту на два...
Вопрос № 67.066
Здравствуйте уважаемые эксперты!
В главе 14-ть книги Олега Калашникова описывается принцип рисования рамки на экране. Автор говорит следующее:
- Перед тем как вывести рамку в центр экрана необходимо разделить её высоту на два и из полученного числа вычесть середину высоты.
Загружаем следующий код в отладчик (он взят из книги):
mov ax, Height_X
shr al, 1
mov dh, 11
sub dh, al
Что мы видим? Загружаем в ах высоту нашей рамки - 23 строки, делим на два, вычитаем серидину получая в dh - 0. Расчитывая ширину отладчик также показывает в итоге ноль. И для чего нужны такие координаты? Не проще ли тогда сразу обнулить dh командой xor dh, dh?
Дальше - хуже. Автор пишет, что координату нужно перевести в линейный массив. В текстовом режиме 80х25 символов каждая строка "весит" 2*80=160 байт и соответственно каждый столбец 2*25=50 байт. Вот пример из книги:
mov dh, 8
mov dl, 56
linear = dl*2
linear = linear+dh*160
Так вот при расчёте мы почему то строку умножаем на 160, а вот столбец не на 50-т (что было бы логичнее), а на два. С чем это связано?
Спасибо!
Отправлен: 15.12.2006, 09:01
Вопрос задал: Paltus (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: IceWolf
Здравствуйте, Paltus!
Здравствуйте, Paltus!
1.>Не проще ли тогда сразу обнулить dh
А если высота рамки не 23... Например 10: 10/2=5 11-5=6, а не ноль. Кстати, пример из рассылки.
2. Ищем адрес символа в буфере: длина каждой строки 80 символов*2=160 байт(символ=2 байта). Помимо этого рамка начинается не с левого края экрана, т.е. слева от неё незаконченая строка, кол-во символов в ней и есть нометр столбца. А учитывая, что символ-2байта, получаем Adres=stroka*80*2+ctolbez*2.
С уважением, IceW0|f.
Приложение:
--------- Идеальных защит не существует, ибо то, что создано человеческим разумом, им же будет и разрушено!
Ответ отправил: IceWolf (статус: 5-ый класс)
Ответ отправлен: 17.12.2006, 03:38 Оценка за ответ: 5