Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 539
от 08.05.2003, 20:20
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 3153 Отправлено ответов: 9251 Активность: 293.4 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
vitya Статус: Профессиональный Общий рейтинг: 108 [Подробней >>] |
Илья Статус: Опытный Общий рейтинг: 103.76 [Подробней >>] |
Lynx Статус: Доверительный Общий рейтинг: 136.36 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 123.07 URL: моя рассылка по Protected Mode [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 113.97 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 119.12 [Подробней >>] |
Maverick Статус: Профессиональный Общий рейтинг: 134.3 URL: Задачи по ассемблеру Телефон: 89039415024 (BeeLine GSM) [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 150.48 URL: Программирование [Подробней >>] |
Knignick Статус: Доверительный Общий рейтинг: 110.64 [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 115.39 [Подробней >>] |
Ramzes Статус: Опытный Общий рейтинг: 129.61 URL: Microsoft homepage [Подробней >>] |
Tigran K. Kalaidjian Статус: Опытный Общий рейтинг: 115.92 URL: Методы оптимизации работы ПК [Подробней >>] |
Hangatyr Статус: Доверительный Общий рейтинг: 125.13 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 3120. Пришел я в этот мир Неверных женшин наказать - Чтоб их влюбить в себя, А после отказать. Чтобы тогда... (ответов: 5)
Вопрос № 3121. Всем привет! Вопрос такой: int 10h 0Ch выводит точку цвет которой задаёться в al а если у меня svga ... (ответов: 1)
Вопрос № 3122. Здравствуйте, уважаемые Эксперты! Из вопроса №3085. Мыло моё: rix@vlink.ru... (ответов: 2)
Вопрос № 3123. Что такое четность и стоповые биты в параметрах настройки модема и соединения?... (ответов: 4)
Вопрос № 3124. Здравствуйте, уважаемые эксперты. Прошу прощения за свой некорректный вопрос. Речь и... (ответов: 4)
Вопрос № 3125. Как повысить скорость передачи данных через модем? У меня провайдер имеет макс. скорость 56k, а у м... (ответов: 4)
Вопрос № 3126. Здравствуйте, уважаемые эксперты. У меня вопрос по поводу пререываний. Если в ДОСе во время выполнен... (ответов: 8)
Вопросов: 7, ответов: 28
Вопрос № 3120 |
Пришел я в этот мир
Неверных женшин наказать -
Чтоб их влюбить в себя,
А после отказать.
Чтобы тогда любовь им мукой стала
За то, что каждая из них
Кому-то отказала...
Вопрос отправлен: 03.05.2003, 13:20
Отправитель: Redeemer
[Следующий вопрос >>] [Список вопросов]
Отвечает vitya
Здравствуйте, Redeemer!
хороший стих, а при чем тут программирование?
Ответ отправлен: 03.05.2003, 13:31
Отправитель: vitya
Отвечает Илья
Доброе время суток, Redeemer!
Была весна и дамы пахли
Как свежесорванные сливы.
Мужчины вдохновенно ахали...
Но все-таки предпочитали пиво.
Ответ отправлен: 03.05.2003, 15:00
Отправитель: Илья
Отвечает Lynx
Если взять цветной бумаги,
Ручку, ножницы и клей.
А ещё чуть-чуть отваги,
Можно сделать сто рублей. :)))
Ответ отправлен: 03.05.2003, 16:11
Отправитель: Lynx
Отвечает Broken Sword
ты забыл int 20h
Ответ отправлен: 03.05.2003, 16:59
Отправитель: Broken Sword
Отвечает Dark_Lord
Доброе время суток, Redeemer!
и welcome в шизофрению
Ответ отправлен: 04.05.2003, 13:20
Отправитель: Dark_Lord
Вопрос № 3121 |
Всем привет!
Вопрос такой:
int 10h 0Ch выводит точку
цвет которой задаёться в al
а если у меня svga режим?
тут фишка такая получаеться, что
в svga режиме цвет размером word.
Как быть? Не используя $A000:0000?
Может есть ещё какая функция?
Вопрос отправлен: 03.05.2003, 19:00
Отправитель: Tibor (tibor@kingisepp.info)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Здравствуйте, Tibor!
Для SVGA режимов эта функция не подходит. Для них надо использовать функции VESA (int 10h, fn 4fh).
Ответ отправлен: 05.05.2003, 13:03
Отправитель: Ayl
Вопрос № 3122 |
Здравствуйте, уважаемые Эксперты!
Из вопроса №3085. Мыло моё: rix@vlink.ru
Вопрос отправлен: 03.05.2003, 21:45
Отправитель: elm thasa (rix@vlink.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Maverick
Здравствуйте, elm thasa!
Так тебе же давали адрес, на котором они валяются...
Скидываю на всякий случай.
Ответ отправлен: 05.05.2003, 10:11
Отправитель: Maverick
Отвечает Lynx
Доброе время суток, elm thasa!
Рад видеть народ из Волгограда. :)))
Ответ отправлен: 04.05.2003, 09:27
Отправитель: Lynx
Вопрос № 3123 |
Что такое четность и стоповые биты в параметрах настройки модема и соединения?
Вопрос отправлен: 04.05.2003, 13:52
Отправитель: Sandro (amerikalohi@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Здравствуйте, Sandro!
Параметры протокола обмена. Стоповые биты предназначены для указания принимающей стороне, что весь байт передан. Используется для синхронизации. Четность - алгоритм проверки правильности передачи путем подсчета единичных битов. Она может быть отключена или включена как ODD или EVEN. Если она включена как ODD, то если передается нечетное число битов, установленных в единицу, то бит четности равен 0, иначе - 1. Для EVEN - все наоборот.
Ответ отправлен: 05.05.2003, 13:11
Отправитель: Ayl
Отвечает Bob Johnson
Добрый день, Sandro!
Это имеет отношение к соединению между компьютером и модемом. На качество связи не сказывается.
Поставь 8 бит, 1 стоповый, отсутствие контроля четности.
Ответ отправлен: 05.05.2003, 20:36
Отправитель: Bob Johnson
Отвечает Knignick
Приветствую Вас, Sandro!
Четность, точнее контроль четности, подразумевает проверку
данных на наличие ошибок.
Стоповые биты (1 или 2) служат для определения конца пакета данных. Так, 8N1 означает что данные передаются по 8 бит, без контроля четности, за информационными символами следует 1 стоп-бит.
Ответ отправлен: 05.05.2003, 19:24
Отправитель: Knignick
Отвечает Lynx
Добрый день, Sandro!
Чётность - это такой битик, который служит для проверки корректности переданых данных. Передаются 7 бит, а затем бит чётности. Если чит чётности установлен, то число установленых битов (среди тех 7 переданых) - четно, если нет, то нечётно. Ну это самый примитивный способ проверки. На практике используются другие.
А вобще, если хочешь, то в Библиотеке Системного программиста есть книжечка "Програмирование модемов" - там про это всё хорошо написано.
Ответ отправлен: 04.05.2003, 14:42
Отправитель: Lynx
Вопрос № 3124 |
Здравствуйте, уважаемые эксперты. Прошу прощения за свой
некорректный вопрос. Речь идет о системах Windows NT и Windows 2000.
Мой предыдущий вопрос состоит в том как по заданному линейному адресу
определить линейный адрес записи в PTE(page table entry), в частности
линейный адрес самой PTE и линейный адрес PDE(page directory entry)
для вышеуказанных осей. Насколько мне удалось разобраться:
- линейные адреса PTE для этих систем находятся в диапазоне
0xC0000000 - 0x03FFFFFF (наверное по определению), что составляет 4МБ;
- если задан линейный адрес LinAddr, то адрес записи PTE, которая
указывает на страницу содержащую этот адрес (имеется ввиду
содержащую LinAddr) вычисляется по формуле:
((LinAddr>>12)*4)+0xС0000000. Теперь, поскольку сами записи PTE
находятся в 4 Гб линейном адресном пространстве, то PTE находящейся по
адресу 0xС0000000 должна соответствовать запись в PTE находящеяся по
адресу, который можно получить подставив в формулу
LinAddr=0xС0000000. Получаем, что линейный адрес записи указывающей на PTE
находящейся по адресу 0xС0000000, равен 0xC0300000. Но с другой стороны
каждой таблице PTE соответствует запись в таблице PDE и линейный адрес
первой записи в PDE должен указывать на первую PTE а значит должен
совпадать с 0xC0300000. Таким образом линейный адрес PDE==0xC0300000.
Дальше возникают два вопроса:
- так ли на самом деле все происходит как я здесь описал;
- если это все так, то поскольку максимальный размер PDE == 4Кб
(при размере страниц в 4Кб), а максимальный размер всех PTE==4Мб, то размер
области занимаемой PDE+PTЕ==4*1024Кб+4Кб=4100Кб, что явно не помещается
в 4Мб.
Кто в курсах помогите прояснить ситуацию. Кстати какой диапазон
линейных адресов занимают таблицы PDE и PTE в других осях.
Вопрос отправлен: 04.05.2003, 15:02
Отправитель: 1
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Доброе время суток, 1!
В общем случае никак. Именно никак. Почему? Потому, что необходимо знать сегмент и смещение, которые описывают каталог страниц и соотв. таблицу. Если ты знаешь это, то можешь тогда ее прочитать и из нее уже найти ответ на вопрос. Можно сделать такой фокус - создать каталог страниц так, чтобы ни одна страница не попадала на эту область физической памяти, и тогда после включения стр. преобразования ты больше к нему никак не обратишься...
По поводу 4 мб - не обязательно, чтобы каждому элементу каталога реально соответствовало 1024 PTE, если ты укажешь в соответствующем PDE, что его нет в памяти, то процессор будет автоматически считать, что и 1024PTE также нет в памяти. Таким образом, элементы PTE нужны только на то адр. пространство, которое реально используется, остальные - могут отсутствовать.
Ответ отправлен: 05.05.2003, 20:37
Отправитель: Bob Johnson
Отвечает ASMодей
Приветствую Вас, 1!
Если ты в конце концов пришел к выводу, что описатели страничной
структуры не помещаются в 4 мегабайта, то для этого не стоило
производить такие сложные вычисления - сразу понятно, что
4096 + (1024 * 4096) не равно 1024 * 4096, отсюда можно сделать
вывод, что по линейным адресам 0xC0000000 - 0xC03FFFFF расположены
только каталоги страниц, а таблица каталогов находится по другому
адресу.
Ответ отправлен: 05.05.2003, 08:38
Отправитель: ASMодей
Отвечает Ramzes
Приветствую Вас, 1!
Во первых в данных осях для приложений отводится 2GB, остальные 2GB принадлежат самой системе. Если тебя интересуют конкретные адреса, то почитай книгу Джеффери Рихтера, там все подробно описано.
Во вторых Таблицы страниц описывают все адресное пространство, а не только относящееся к твоему приложению.
Теперь что касается PTE.
В Windows трансляция линейного адреса проходит так
Первые 10 бит адреса это индекс записи в Page Table Directory, которая указывает на соответсвующую Таблицу страниц. Всего может быть 2^10 = 1024 записей, и соответсвенно 1024 таблиц.
Следующие 10 бит это индекс записи в Таблице СТРАНИЦ, которая указывает на конкретную страницу.
Опять же может быть 2^10 = 1204 записей, а значит каждая таблица описывает 1024 страниц в памяти. Итого все таблицы описывают 1024*1024 = 2^20 СТРАНИЦ.
Остальные 12 бит адреса описывают смещение в таблице
2^12 = 4 KB = размер страницы.
Размер каждой страницы 4 кб = 2^12. Значит размер физической памяти, описываемой всеми таблицами получается
2^12*2^20 = 2^32 = 4GB.
Ответ отправлен: 04.05.2003, 15:47
Отправитель: Ramzes
Отвечает Broken Sword
Приветствую Вас, 1!
во-первых, я все таки упорно продолжаю настаивать ) что понятия "линейный адрес каталога страниц" просто не существует, т.к. местоположение (физический адрес) каталога страниц в ОП компьютера однозначно определятеся содержимым регистра CR3 и больше ничем. Узнав этот адрес (физ. адрес каталога страниц) и зная линейный адрес мы можем "раскрутить" его и узнать любую информацию
Далее. В win 9x используется только один единственный каталог страниц, тогда как в NT/2000/XP их может быть несколько... при чем что еще примечательно - в NT/2000/XP в дополнение используются 4Мб страницы, против 4Кб в 9x.
Енасчет формулы... насколько я понимаю, вы сдвинули чето вправо на 12 бит а потом умножили на 4. Так вот это неправильно, т.к. старшие 10 бит в этом случае все равно продолжают хранить индекс PDE, поэтому как ни крути а их нужно обнулить....
в сайсе есть прекрасная команда - PAGE. Она превосходно поможет вам разобраться со всеми проблемами (что называется - прямо на теле пациента (Win NT/2000/XP) ) и поможет представить суть страничной адресации во всех ракурсах в т.ч. и нелицеприятных )
резюме: ваша главная ошибка - вы напрочь отрекаетесь от старших 10 битов, которые не имеют никакого отношения к PTE а самым непосредственным образом относятся к PDE, или вот мне другое интересно: где по вашему хранится индекс PDE?
Ответ отправлен: 05.05.2003, 01:25
Отправитель: Broken Sword
Вопрос № 3125 |
Как повысить скорость передачи данных через модем? У меня провайдер имеет макс. скорость 56k, а у меня коннектит к нему с 33k.Но мне этого не достаточно. Есть способ повысить скорость?
Вопрос отправлен: 04.05.2003, 15:33
Отправитель: Sandro
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Доброе время суток, Sandro!
Да.
1. Сменить провайдера.
2. Сменить твою АТС.
3. Сменить модем.
Ответ отправлен: 05.05.2003, 20:37
Отправитель: Bob Johnson
Отвечает Ramzes
Добрый день, Sandro!
По моему нет, т.к скорость соединения падает от плохого качества телефонных линий.
Ответ отправлен: 04.05.2003, 15:48
Отправитель: Ramzes
Отвечает Tigran K. Kalaidjian
Приветствую Вас, Sandro!
На самом деле этот вопрос оффтопичен. Здесь обсуждаются вопросы программирования, а не связь...
А 56k ты в принципе не достигнешь. Если интересно почитать подробнее, то смотри http://kalaidjian.narod.ru раздел "Модемы", а также архивы конференции Fido7.ru.modem
Если интересно почитать документы по поводу природы затухания сигнала "Почему качество плохое. Кто виноват и как выправлять", то пиши на kalaidjian@pochtamt.ru -вышлю прдробную документацию
Ответ отправлен: 04.05.2003, 17:09
Отправитель: Tigran K. Kalaidjian
Отвечает Lynx
Приветствую Вас, Sandro!
Ну скорость передачи данных зависит ещё и от загружености провайдера, помех в линии и т.д. У меня модем 56k, а иногда Винда мне показывает скорость передачи даных 115k... :)))
Ответ отправлен: 04.05.2003, 17:53
Отправитель: Lynx
Вопрос № 3126 |
Здравствуйте, уважаемые эксперты. У меня вопрос по поводу пререываний. Если в ДОСе во время выполнения "чужой" программы нажата клавиша на клавиатуре, то происходит прерывание и код нажатой клавиши заносится в порт. Хотелось бы узнать, какое это прерывание, или как можно узнать нажатую клавишу без "ручного" прерывания в программе(например при написании резидента; если пользователь нажал клавишу на месте, не предусмотренным программой, но ведь она сохраняется)?
Заранее благодарен.
Вопрос отправлен: 04.05.2003, 20:19
Отправитель: a1 (a111_666@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Добрый день, a1!
Да, каша тут какая-то... А почему именно клава, а не таймер? Он-то чаще отрыбатывает...
Прерывание по нажатию (и отпускании) клавиши происходит всегда. Инициируется это контроллером клавиатуры, который при этом записывает в порт 60h скен-код нажатой клавиши. И выставляет запрос на линию IRQ1 для контроллера прерываний. Пока этот запрос обработан не будет, контроллер клавиатуры обрабатывать другие нажатия/отпускания не будет.
Контроллер прерываний, если он не заблокирован, вызывает прерывание, соответствующее запросу. Для IRQ0 оно равно 8, IRQ1 - 9 и т.д.
Вызов прерывания происходит по стандартной схеме - сохраняется контекст программы (флаги и cs:ip) и управление передается по адресу, находящемуся в таблице прерываний. Но кроме этого запрещаются прерывания (сбрасывается флаг IF в регистре флагов) и блокируется контроллер прерываний.
Корректно написанных обработчик прерывания обязан сохранить все используемые регистры и перед выходом из прерывания восстановить их. Кроме этого, перед возвратом управления прерванной программе обработчик должен сбросить блокировку контроллера прерываний.
Во второй части вопроса я вообще ничего не понял - что ты хочешь узнать?
Ответ отправлен: 05.05.2003, 13:25
Отправитель: Ayl
Отвечает Lynx
Добрый день, a1!
За отлов нажатых клавиш отвечает int 09h. Каждый раз когда нажимается клавиша вызывается это прерывание, а скан-код клавиши лежит в порту 60h. Помоему так.
Ответ отправлен: 04.05.2003, 22:39
Отправитель: Lynx
Отвечает Maverick
Приветствую Вас, a1!
Че то вопрос мутноватый. Как так "непредусмотренные программой"
Есть у тебя резидент, он и должен обрабатывать ВСЕ нажатые клавиши, перехватывай int 9h
Ответ отправлен: 05.05.2003, 10:12
Отправитель: Maverick
Отвечает Ramzes
Добрый день, a1!
При нажатии клавиши происходит прерывание под номером 09h.
Скан-код нажатой клавиши можно считать с порта 60h, или из буфера клавиатуры, куда его помещает обработчик int 09h.
Ответ отправлен: 05.05.2003, 12:52
Отправитель: Ramzes
Отвечает Broken Sword
Здравствуйте, a1!
не обязательно чужой - если нажата клавиша на клаве то вырабатывается прерывание 9. Как узнать нажатую клавишу - единственный 100% способ - перехватить int 9 и в начале обработчика проверять порт 60h
Ответ отправлен: 05.05.2003, 00:54
Отправитель: Broken Sword
Отвечает Hangatyr
Приветствую Вас, a1!
1. Прерывание инициируется всегда.
2. Если хочешь узнать какие клавиши были нажаты во время работы программы, напиши резидент и смотри за портом 60h.
Ответ отправлен: 05.05.2003, 18:36
Отправитель: Hangatyr
Отвечает Bob Johnson
Добрый день, a1!
При нажатии (или отпускании) клавиши на клавиатуре вызывается прерывание 9h процессора. Код (скан-код) помещается в порт 60h (кажется). Дос помещает ASCII код нажатой клавиши в специальный кольцевой буфер, рассчитанный на 16 символов. Там код сохраняется до тех пор, пока кто-нибудь его оттуда не считает. Это может быть любая программа.
Ответ отправлен: 05.05.2003, 20:37
Отправитель: Bob Johnson
Отвечает Dark_Lord
Добрый день, a1!
int 9h
Ответ отправлен: 05.05.2003, 22:15
Отправитель: Dark_Lord
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (38) C / C++ (29) Perl (7) Delphi (14) Pascal (27) Basic / VBA (12) Java / JavaScript (10) PHP (6) MySQL / MSSQL (5) |
Пользователю Windows 95/98/Me (34) Windows NT/2000/XP (28) "Железо" (26) Поиск информации (12) |
Администратору Windows NT/2000/XP (16) Linux / Unix (9) |
Юристу Гражданское право (8) Семейное право (4) Трудовое право (5) КоАП (4) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
© 2003 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||