Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 422
от 21.11.2002, 18:30

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1892
Отправлено ответов: 5887
Активность: 311.1 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Bob Johnson
Статус: Профессиональный
Общий рейтинг: 154.3
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 114.46
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 120.07
[Подробней >>]
 
Maverick
Статус: Опытный
Общий рейтинг: 136.69
URL: Задачи по ассемблеру
Телефон: 89039415024 (BiLine GSM)
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 122.93
URL: Страничка рассылки по Паскалю
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
igorash
Статус: Профессиональный
Общий рейтинг: 116.31
[Подробней >>]
 
Broken Sword
Статус: Профессиональный
Общий рейтинг: 130.1
URL: моя рассылка по Protected Mode
[Подробней >>]
GL
Статус: Опытный
Общий рейтинг: 104.03
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.46
URL: Страничка обо мне и моих друзьях
[Подробней >>]
 
masquer
Статус: Профессиональный
Общий рейтинг: 152.07
[Подробней >>]
keleb-glin
Статус: Начальный
Общий рейтинг: 115.73
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 117.38
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1831. Доброго времени суток, уважаемые эксперты. Имеется: Два компьютера соединённые через сетевые карты, ... (ответов: 3)
Вопрос № 1832. Здравствуйте Эксперты! Вопрос по железу Можно ли вставить в материнскую плату Pentium III Socket 370... (ответов: 8)
Вопрос № 1833. Здравствуйте, эксперты! У меня к вам несколько вопросов! 1) Какой максимальный размер файла, можно п... (ответов: 4)
Вопрос № 1834. Здравствуйте уважаемые Эксперты. 2 недели сидел без монитора, аж извелся весь… У меня к Вам те... (ответов: 1)
Вопрос № 1835. Здравствуйте! Подскажите, пожалуйста, как сменить цвет фона элемента диалога(label,combobox,progress... (ответов: 2)
Вопрос № 1836. Уважаемый Bob Johnson, если можно, то пришлите мне тоже лабораторные по Ассемблеру. Мой адрес: cls@s... (ответов: 1)
Вопрос № 1837. Ув. эксперты! В сайсе есть команда BMSG, но я не могу ей воспользоваться. Я пишу BMSG 110114 2 по эт... (ответов: 2)
Вопрос № 1838. Hello! Уважаемые эксперты, есть такая вот задачка: написать прогу проверки пароля до загрузки DOS (W... (ответов: 3)
Вопрос № 1839. Ув. эксперт Broken Sword! Вы меня не так поняли, по команде HWND сайс еще выдает хэндлы окон, вот им... (ответов: 1)

Вопросов: 9, ответов: 25


 Вопрос № 1831

Доброго времени суток, уважаемые эксперты.
Имеется: Два компьютера соединённые через сетевые карты, один продвинутый юзер способный писать на асме под Windows, я. Мне нужно создать программу, которая сможет отправлять/принимать файлы с компьютера на компьютер. На сколько я знаю стандартные Windows сетевые игры идут через протокол TCP/IP (исправьте меня, если я не прав), так вот я подумал, что можно использовать его. Поэтому у меня вопрос, не сталкивался ли кто с такими задачами. Книжек по этому поводу немерено, но все они пытаются толкнуть мне историю интернета и форматы данных интернета, а не программирование их. Может кто имеет документацию такого рода или знает книгу где описано программирование TCP/IP. Если я в чём-то ошибаюсь, то с удовольствием приму исправления. С уважением, MegaLama.



Вопрос отправлен: 16.11.2002, 17:12
Отправитель: megalama (megalama@land.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Доброе время суток, megalama!
Обычно используют действительно TCP/IP, хотя вот NFS - работает на IPX. Тут я тебе посоветую посмотреть примеры из MSDN - в частности, simple:
SamplesVC98sdk etdswinsocksimple - там все достаточно просто (только на С), но из асма вызывать API функции - также, как и из С.


Ответ отправлен: 17.11.2002, 23:45
Отправитель: Bob Johnson


Отвечает baldr

Здравствуйте, megalama!
Ну почти что TCP/IP... Но настолько низко Вам, думаю, писать не надо! Использовать можно
winSock - это модуль функций для работы с портами. Описание - см у Всемирного Разума.


Ответ отправлен: 17.11.2002, 00:29
Отправитель: baldr


Отвечает ASMодей

Здравствуйте, megalama!
В Windows есть такая штука, как Socket. Именно через него происходит
связь по сети. Делается это так: на одном компьютере создается
сокет и включается на прием данных с какого-либо порта (не порта
ввода-вывода). На другом компьютере тоже создается сокет и через
него отправляется файл на первый компьютер (используя сетевой адрес
и тот же номер порта). При этом тебе не придется заморачиваться
всякими протоколами обмена - сокет сделает это сам.


Ответ отправлен: 17.11.2002, 09:49
Отправитель: ASMодей


 Вопрос № 1832

Здравствуйте Эксперты!
Вопрос по железу
Можно ли вставить в материнскую плату Pentium III Socket 370 чипсет i815 процессор Intel Pentium 100 MHz?
Вопрос не праздный, мне это нужно для поэтапного абгрейда компа.
Целую Lenka!



Вопрос отправлен: 16.11.2002, 17:12
Отправитель: Lenka

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Доброе время суток, Lenka!
Нет, тебе придется совместить этот этап с этапами замены самого процессора и памяти. Может также понадобиться заменить еще и корпус (блок питания).


Ответ отправлен: 17.11.2002, 23:46
Отправитель: Bob Johnson


Отвечает Maverick

Здравствуйте, Lenka!
Помоему нет.


Ответ отправлен: 17.11.2002, 14:56
Отправитель: Maverick


Отвечает Sensey

Приветствую Вас, Lenka!
Нет. Разьем не такой. Там Socket 370, а Пень I - socket 7
А вообще-то есть рассылка по железу


Ответ отправлен: 18.11.2002, 19:09
Отправитель: Sensey


Отвечает igorash

Добрый день, Lenka!
100 конечно нет, но если имелось в виду 1000 - то да...


Ответ отправлен: 16.11.2002, 21:26
Отправитель: igorash


Отвечает Broken Sword

:)
Целую, Broken Sword


Ответ отправлен: 17.11.2002, 00:32
Отправитель: Broken Sword


Отвечает GL

Добрый день, Lenka!
Нет, этого сделать нельзя. Т.к. Intel Pentium 100 устанавливается в Socket 7, который не совместим с Socket 370. А переходники такие мне не встречались.

Ответ отправлен: 17.11.2002, 13:34
Отправитель: GL


Отвечает Gibbel

Добрый день, Lenka!
Нет, этого сделать нельзя. Тебе придется одновременно заменить материнку+память+процессор+корпус(блок питания)+все ISA-устройства(большинство современных материнских плат их не поддерживают).
Целую, Gibbel ;-)
P.S.: А вообще, для таких вопросов есть рассылка по "железу"...

Ответ отправлен: 18.11.2002, 09:46
Отправитель: Gibbel


Отвечает masquer

Доброе время суток, Lenka!
Гы-гы, это больше на даунгрейд похоже. Не, не получится, сокет другой должен быть.

Ответ отправлен: 18.11.2002, 13:59
Отправитель: masquer


 Вопрос № 1833

Здравствуйте, эксперты!
У меня к вам несколько вопросов!
1) Какой максимальный размер файла, можно по-байтово прочитать в ДОС. Вопрос возник по тому, что я думаю, ведь есть же какой-то счетчик, который хранит в себе указатель чтения, какой он размерности?
2) Как читать файл в обратном порядке? Кроме как перемещать указатель функцией 42h от конца файла к началу и читать информацию? Читать от начала к концу не интересно, т.к. данные, которые нужно найти находятся в конце файла, а размеры файлов не меньше 0.5 Мб.
3) А как переместить указатель чтения в конец файла?
Я использую функции поиска для длинных имен файлов, а там размер файла указывается так:
1Ch DWORD file size (high 32 bits)
20h DWORD file size (low 32 bits)
А расстояние, которое указывается для перемещения указателя вводится в CX:DX, я так и не понял, какой дворд, как туда запихнуть, вернее понятно, что сначала будет пихаться младший дворд, но какая его часть, куда?
ЗЫ: Все разумеется для ДОС.
--
С уважением, ILYA D.



Вопрос отправлен: 16.11.2002, 17:29
Отправитель: ILYA D.

[Следующий вопрос >>] [Список вопросов]

Отвечает keleb-glin

Здравствуйте, ILYA D.!
В описании функции 42h сказано, что при её выполнении указатель переместится на (CX*65535)+DX байт, т.е. можно прочитать файл размером в 65535*65536+65535 ( ок. 4 гигов ).
Насчёт чтения с конца к началу, это идея неплохая, но сложно реализуемая. Скорее всего, тебе действительно придётся юзать 42h, т.к. подобных функций для работы через хэндл ( наверное и через FCB ) нет. Даже сам FAT устроен так, что в каждом кластере записан адрес следующего ( чтобы перескакивать зарезервированные и BAD - блоки ), но не наоборот.
Указатель чтения перемещается в конец файла функцией 42h с параметрами:
bx = handle
cx = 0
dx = 0
al = 2 - сдвиг указателя в конец файла + cx:dx ( eof + cx*65536 + dx )
Насчёт функций для длинных имён файлов указал хотя бы номер функции. А то я подобного ни в technical help, ни где-либо ещё не обнаружил.

Ответ отправлен: 17.11.2002, 18:05
Отправитель: keleb-glin


Отвечает Bob Johnson

Приветствую Вас, ILYA D.!
Максимальный размер файла в ДОСЕ - 2 или 4 Гб. Длина файла в FAT занимает 4 байта.
2. Именно так, как ты написал. Другого не дано. Но лучше читать не по байту, а по 64 кб - так будет быстрее.
3. Обычной функцией перемещения указателя (42h) - там в al заносится режим перемещения: 0 - от начала файла, 1 - знаковое смещение от текущего положения в файле, 2 - знаковое смещение от конца файла. Тебе нужен вариант 3, т.е. от конца. Чтобы попасть на последний байт файла необходимо переместиться от конца файла на -1 (как мне кажется). А смещение действительно запихивается в CX:DX - это всего лишь пара регистров. В СХ помещается старщая часть смещения, а в DX - младшая. Т.е. в случае с -1 тебе надо поместить в оба этих регистра 0FFFFh.


Ответ отправлен: 17.11.2002, 23:46
Отправитель: Bob Johnson


Отвечает Broken Sword

Доброе время суток, ILYA D.!
1. Побайтово можно прочитать столько байт, сколько максимально занимает один файл: в FAT это 4Гб. Счетчик соответственно имеет размерность 4Гб
2. Смотри, вообще то FAT - это ОДНОНАПРАВЛЕННЫЙ список, поэтому "В ЛОБ" читать задом-наперед невозможно. Нужно использовать какие-то системные штуки. Так, в ДОС-е тоже было бы невозможно читать файл задом-наперед, если бы он не копировался небольшими кусками в память. Поэтому нужно знать, куда он скопировался. А этого теоретически никто не знает. Поэтому придется использовать lseek.
3. Эти два dword-а - для совместимости с NTFS (!), потому что в FAT, я еще раз повторюсь, макс. размер файла - 4 ГБ!!!!! А в NTFS - 2^64 байт!!!! Поэтому старшее слово (1Ch) для FAT БУДЕТ РАВНО НУЛЮ!!! А младший dword (20h) ты делишь на две части: старшую часть кладешь в CX (слово), а младшую часть - в DX (тоже слово).
вот так вот
пока!

Ответ отправлен: 17.11.2002, 00:32
Отправитель: Broken Sword


Отвечает ASMодей

Доброе время суток, ILYA D.!
1. За один раз DOS может прочитать из файла не более 64Кб.
А максимальный размер файла определяется в FAT, и для FAT16
и FAT32 он различается.
2. Похоже, что только так. Только не забывай, что при чтении
указатель тоже будет смещаться на число прочитанных байт.
3. Переместить указатель в конец файла можно функцией 42h,
используя CX:DX=0 и AL=2. А причем здесь поиск файлов?


Ответ отправлен: 17.11.2002, 09:50
Отправитель: ASMодей


 Вопрос № 1834

Здравствуйте уважаемые Эксперты.
2 недели сидел без монитора, аж извелся весь…
У меня к Вам теоретический вопрос.
Попрошу сильно не матюгать и подробно ответить или отослать к какому-нить источнику, где рассмотрен сабж.
Какие секции можно безболезненно склеивать в программе? Например обычная dll-ка (в синтаксисе Фасма) состоит из таких секций:
section '.code' code readable executable
section '.data' data readable writeable
section '.idata' import data readable writeable
section '.edata' export data readable
section '.reloc' fixups data readable discardable
Тоесть было бы круто слепить все эти секции в одну. Но как?
Если просто замутить такую вот кашу, то ничего хорошего не получается:
section 'SewnSect' code data import export fixups readable writeable discardable executable
Когда-то читал статью, в которой говорилось, что любая программа под МастДай теоретически может состоять только из одной секции. ЛЮБАЯ!!!
Заранее благодарю!



Вопрос отправлен: 16.11.2002, 17:50
Отправитель: Бадян (sba@litech.net)

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Приветствую Вас, Бадян!
reloc можно вообще удалять, а все остальные секции при небольшом изврате можно и в одну слепить. Я тоже тебе говорю - любая, я так делал, хотя вручную РЕ ковырять прийдется.

Ответ отправлен: 18.11.2002, 14:02
Отправитель: masquer


 Вопрос № 1835

Здравствуйте! Подскажите, пожалуйста, как сменить цвет фона элемента диалога(label,combobox,progressbar)? Желательно с примером, потому что я пробовал с SetBkColor, что-то он не сменился. Заранее спасибо.



Вопрос отправлен: 16.11.2002, 20:34
Отправитель: Евгений

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Здравствуйте, Евгений!
а ты командой addr вошел в контекст процесса?

Ответ отправлен: 18.11.2002, 14:14
Отправитель: masquer


Отвечает Bob Johnson

Доброе время суток, Евгений!
Возможно, что никак (вот у groupbox'a - точно никак, т.к. винда представляет его только рамкой). Тут попробуй обрабатывать сообщение WM_ERASEBKGND - оно приходит главному окну, когда нужно заполнить фон - ты можешь нарисовать на заднем фоне картинку или еще что-то.


Ответ отправлен: 18.11.2002, 16:37
Отправитель: Bob Johnson


 Вопрос № 1836

Уважаемый Bob Johnson, если можно, то пришлите мне тоже лабораторные по Ассемблеру. Мой адрес: cls@samtel.ru



Вопрос отправлен: 17.11.2002, 11:34
Отправитель: Светлана

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Добрый день, Светлана!
Ok.


Ответ отправлен: 18.11.2002, 16:37
Отправитель: Bob Johnson


 Вопрос № 1837

Ув. эксперты!
В сайсе есть команда BMSG, но я не могу ей воспользоваться. Я пишу BMSG 110114 2 по этой команде сайс должен включатся когда я закрываю окно (число 110114 я получил командой HWND, там написано имя класса, адрес процедуры обработки сообщений, имя модуля и какой-то TID, что это такое?). Ладно, дальше сайс пишет INVALID WINDOW HANDLE, помагите...
ЗЫ У меня сайс 4.01, а винда 2000, но сайс написал что винда NT 5.0



Вопрос отправлен: 17.11.2002, 15:42
Отправитель: Kiselev (kiselev@nightmail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Broken Sword

Приветствую Вас, Kiselev!
BMSG НЕ является контекстно-зависимым брейкпоинтом, поэтому, если ты ввел СУЩЕСТВУЮЩИЙ хэндл, то SI ругаться НЕ БУДЕТ ни при каких обстоятельствах! Т.ч. ищи ошибку в этом.
А TID - это Thread ID (ID потока).

Ответ отправлен: 17.11.2002, 17:36
Отправитель: Broken Sword


Отвечает ASMодей

Приветствую Вас, Kiselev!
TID - это Thread ID (идентификатор потока), а Win2000 - это
и есть Win NT 5.0


Ответ отправлен: 18.11.2002, 06:17
Отправитель: ASMодей


 Вопрос № 1838

Hello!
Уважаемые эксперты, есть такая
вот задачка: написать прогу проверки пароля
до загрузки DOS (Windows)через прерывания BIOS.
Я так понимаю нужно переписать загрузочный сектор
и после отработки программы отдать дальнейшее исполнение коммандному процессору (сommand.com), т.е. то что должна была сделать программа загрузочного сектора. Может конечно я что не правильно выразился, извините за дилетантство.
В Общем если можно объясните мне поподробней, как будет правильно. Заранее благодарень от меня всем ответившим.



Вопрос отправлен: 17.11.2002, 16:11
Отправитель: Snaker (garry_j_p@hotmail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Maverick

Добрый день, Snaker!
Тут тебе помогут доки по загрузочным вирусам.
Если надо, то мыль, скину.
Maverick@nightmail.ru

Ответ отправлен: 17.11.2002, 22:30
Отправитель: Maverick


Отвечает Ayl

Добрый день, Snaker!
Лучше оригинальному boot-сектору, потому как ты не знаешь, какая именно ОС будет грузиться.
Т.е. твои действия должны выглядить следующим образом:
1. Получаешь управление при загрузке
2. Выполняешь проверку пароля
3. Копируешь кусок кода куда-нибудь для передачи управления оригинальному бут-сектору
4. Считываешь оригинальный бут-сектор по адресу 0000h:7c00h
5. Передаешь управление оригинальному бут-сектору по этому адресу

Ответ отправлен: 18.11.2002, 11:01
Отправитель: Ayl


Отвечает Bob Johnson

Добрый день, Snaker!
В твоем варианте необходимо записать содержимое MBR (Master Boot Record) - это первый сектор диска в отдельный файл, туда (в MBR) поместить свою программу, которая запрашивает пароль и, если пароль верный, просто загрузить прежний MBR в память и передать ему управление.
Но лучше поставить пароль в BIOS, т.к. если загрузиться с дискеты и перезаписать MBR (FDISK /MBR или SYS.COM) - то весь твой труд пойдет коту под хвост (а у кота там ... ну ты знаешь).


Ответ отправлен: 18.11.2002, 16:39
Отправитель: Bob Johnson


 Вопрос № 1839

Ув. эксперт Broken Sword!
Вы меня не так поняли, по команде HWND сайс еще выдает хэндлы окон, вот именно ОТТУДА я брал значение 110114(конешно в разных случаях будут разные хэндлы). А насчет существующих хэндлов, то я брал разные хэндлы разных элементов, сайс НИОДНОГО не признает, хотя САМ их мне выдает.



Вопрос отправлен: 17.11.2002, 18:16
Отправитель: Kiselev (kiselev@nightmail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Broken Sword

Здравствуйте, Kiselev!
Да я так и понял, просто ты скорее всего ОШИБСЯ при подстановке этого хэндла в BPMSG, а иначе - это глюк SI. Ну а если ни одного не признает - значит это точно глюк. Поставь 2.7 сайс

Ответ отправлен: 17.11.2002, 22:35
Отправитель: Broken Sword



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (42)
C / C++ (29)
Perl (8)
Delphi (13)
Pascal (21)
Basic / VBA (11)
Java / JavaScript (13)
PHP (11)
MySQL / MSSQL (9)
Пользователю
Windows 95/98/Me (31)
Windows NT/2000/XP (21)
"Железо" (26)
Поиск информации (16)
Администратору
Windows NT/2000/XP (10)
Linux / Unix (15)
Юристу
Гражданское право (7)
Семейное право (2)
Трудовое право (3)
КоАП (2)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное