17.02.2019, 07:51 [+3 UTC]
в нашей команде: 3 393 чел. | участники онлайн: 7 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.69 (10.02.2019)
JS-v.1.33 | CSS-v.3.35

Общие новости:
10.02.2019, 21:59

Форум:
16.02.2019, 15:03

Последний вопрос:
16.02.2019, 13:32
Всего: 148762

Последний ответ:
16.02.2019, 15:37
Всего: 257791

Последняя рассылка:
17.02.2019, 06:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
03.08.2016, 07:45 »
Telemetrist
Спасибо за подробный и содержательный ответ, он действительно помог мне найти неисправность. Проблема и правда оказалась в цепи ОС, пробило конденсатор С15 который я совсем недавно заменил в блоке регулировок. [вопрос № 189663, ответ № 273992]
15.01.2012, 14:37 »
Даровко Антон Владимирович
Добрый день Гордиенко Андрей Владимирович! Я просмотрел Ваше решение задачи и я ставлю Вам оценку отлично за решение. Спасибо. [вопрос № 185175, ответ № 269589]
Наши встречи:
ID: 846
ID: 854

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 751
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 399
cain52
Статус: 3-й класс
Рейтинг: 267

Перейти к консультации №:
 

Консультация онлайн # 67066
Раздел: • Assembler
Автор вопроса: Paltus
Отправлена: 15.12.2006, 09:01
Поступило ответов: 1


Здравствуйте уважаемые эксперты!

В главе 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-т (что было бы логичнее), а на два. С чем это связано?

Спасибо!

Состояние: Консультация закрыта

Ответ # 132003 от 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
Дата отправки: 17.12.2006, 03:38

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 67066
Boriss

# 1

= общий = | 15.12.2006, 16:56

Я не он, да и книги нет под руками, поэтому только свои соображения изложу 1) Алгоритмов может быть много. 2) А если рисовать рамку не на весь экран? 3) умножение на 2 от того, что каждому символу на экране (в буфере текстового экрана) соответствует два байта: в четном - код символа, в следующем - его аттрибут 4) отсюда - весь буфер текстового экрана можно представить в виде длинной цепочки (линейного массива). Вот и нужно определить место символа в этой цепочке

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.14207 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.69 от 10.02.2019
Версия JS: 1.33 | Версия CSS: 3.35