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

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


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

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

Выпуск № 514
от 31.03.2003, 19:50

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


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

Joy
Статус: Опытный
Общий рейтинг: 129.56
[Подробней >>]
DiGiT[old]
Статус: Профессиональный
Общий рейтинг: 111.07
[Подробней >>]
Samodelkin
Статус: Доверительный
Общий рейтинг: 141.17
[Подробней >>]
 
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.3
URL: Программирование
[Подробней >>]
akul
Статус: Опытный
Общий рейтинг: 116.33
Телефон: +6019-6416245
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.18
URL: Страничка обо мне и моих друзьях
Телефон: +7 902 168 02 65
[Подробней >>]
 
Maverick
Статус: Профессиональный
Общий рейтинг: 136.93
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 142.75
[Подробней >>]
WNA
Статус: Начальный
Общий рейтинг: 107.28
[Подробней >>]
 
Broken Sword
Статус: Профессиональный
Общий рейтинг: 124.59
URL: моя рассылка по Protected Mode
[Подробней >>]
St
Статус: Опытный
Общий рейтинг: 109.27
[Подробней >>]
Eugene
Статус: Опытный
Общий рейтинг: 108.88
URL: мощный файловый архив
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 118.52
[Подробней >>]
Tigran K. Kalaidjian
Статус: Начальный
Общий рейтинг: 112
[Подробней >>]


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

Вопрос № 2848. Здраствуйте! Порекомендуйте мне, пожалуйста, сайты и книги о програмировании ОС, проектированию файл... (ответов: 2)
Вопрос № 2849. Господа эксперты. Извините заранее, если вопрос не в тему... Я столкнулся с такой проблемой(для меня... (ответов: 1)
Вопрос № 2850. Здравствуйте уважаемые тов. Эксперты! Я тут спрашивал у народа, как мне в программе которая выполняе... (ответов: 1)
Вопрос № 2851. Продолжение вопроса 2840. А какие побочные явления могут возникать при передаче аргументов макроопре... (ответов: 2)
Вопрос № 2852. Здра, уважаемые эксперты! Стоит ли использовать DDK для Win 2000 под Win ХР или для нее существует с... (ответов: 3)
Вопрос № 2853. Есть ли прерывания BIOS, с помощью которых можно получить модель и объем накопителя HDD?... (ответов: 4)
Вопрос № 2854. Доброе утро, день, вечер. (нужное подчеркнуть) Я программирую на Delphi. У меня возникла проблема. ... (ответов: 4)
Вопрос № 2855. Здравствуйте уважаемые Эксперты!!! Может у кого то из вас есть описания функций библиотек wsock32.d... (ответов: 3)
Вопрос № 2856. Большой привет ВСЕМ. Вопрос такой: КАК заставить Operu 7x сохранять страничку целеком и только одним... (ответов: 2)
Вопрос № 2857. Хочу написать прогу для перевода 16-ричных чисел в десятичные? Нужны идеи, как к этому подступиться ... (ответов: 7)

Вопросов: 10, ответов: 29


 Вопрос № 2848

Здраствуйте!
Порекомендуйте мне, пожалуйста, сайты и книги о програмировании ОС, проектированию файловой системы и т.д.
Спасибо



Вопрос отправлен: 26.03.2003, 20:19
Отправитель: Torax (torax@dotes.west.energy.gov.ua)

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

Отвечает Joy

Приветствую Вас, Torax!
На эту тему очен много информации как в инете (поисковики, wasm.ru, codenet.ru, sourses.ru ...), так и в книжных магазинах на полках.

Ответ отправлен: 27.03.2003, 11:23
Отправитель: Joy


Отвечает DiGiT[old]

Доброе время суток, Torax!
Знаешь я прочитал рульную книгу Вильма Столлингса "Операционные системы", это будет в точку, потом я видел книгу Таненбаума, но не читал "Современные операционные системы", в них обо всем изложено, и в конце приведены ссылки на популярные издания. если сможешь почитай Дейсктру, но я не видел такое издание тока слышал.

Ответ отправлен: 27.03.2003, 04:47
Отправитель: DiGiT[old]


 Вопрос № 2849

Господа эксперты. Извините заранее, если вопрос не в тему... Я столкнулся с такой проблемой(для меня). Нужно прочитать информацию, которую отсылает серверу мой модем, т.е. Винда что-то-незнамо-что шлёт серверу - вот это я и хочу узнать. Дело упрощается(а может и нет) тем, что мне нужно выдернуть всего лишь одно число(параметр, значение), по возможности его изменить и отослать новое число(параметр, значение). Есть же программы, которые, к примеру блокируют "отсылание операционкой всякой информации". Надеюсь доступно изложил свою проблему. Помогите хотя бы функциями какими(если такие имеются АПИшные), идеей. Писать буду на Delphi.
Заранее спасибо всем откликнувшимся.
С уважением, Иван.



Вопрос отправлен: 26.03.2003, 21:24
Отправитель: Иван (stein@fromru.com)

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

Отвечает Samodelkin

Приветствую Вас, Иван!
решил сделать собственный файрволл? ну тогда ищи инфу по программированию сокетов. то есть по всяким АПИшным socket, connect, send,recv,gethostbyaddr,gethostbyname,accept,bind и пр...


Ответ отправлен: 27.03.2003, 11:05
Отправитель: Samodelkin


 Вопрос № 2850

Здравствуйте уважаемые тов. Эксперты!
Я тут спрашивал у народа, как мне в программе которая выполняется как загрузчик аллокировать память динамически под переменные. Мне сказали что типа нихрена....
Может вы что подскажете - итак есть загрузчик. для проги нужен буфер в памяти - ну так байт где-то см. приложение. А что делать? Как получить память? Расскажите pls, может ресурс какой посоветуете?


Приложение:


Вопрос отправлен: 26.03.2003, 21:42
Отправитель: Эдвард Самохвалов (zeleniy_kot@yahoo.com)

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

Отвечает Bob Johnson

Доброе время суток, Эдвард Самохвалов!
Загрузчик в смысле boot-сектора? Если да, то тогда память вся (почти) к твоим услугам... Потому что за выделение памяти отвечают функции dos, которые еще не загружены. Так что просто выбираешь себе свободный участок (например, 09000h - 09ААААр) и пишешь туда то, что хочешь.


Ответ отправлен: 27.03.2003, 14:13
Отправитель: Bob Johnson


 Вопрос № 2851

Продолжение вопроса 2840. А какие побочные явления могут возникать при передаче аргументов макроопределениям.
Если можно пример. Заранее благодарен.



Вопрос отправлен: 26.03.2003, 21:52
Отправитель: Андрей

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

Отвечает Joy

Добрый день, Андрей!
Так ты читал п. 3.5 в книге Зубкова? Там все расписано.
Я немного работал с макросами, но и ни каких "побочных" явлений не нашел.

Ответ отправлен: 29.03.2003, 08:05
Отправитель: Joy


Отвечает Bob Johnson

Доброе время суток, Андрей!
В смысле? Макрос как бы раскрывается в процессе компиляции, т.е. компилятор видит имя макроопределения а вместо него подставляет текст по определенным правилам.


Ответ отправлен: 27.03.2003, 14:14
Отправитель: Bob Johnson


 Вопрос № 2852

Здра, уважаемые эксперты!
Стоит ли использовать DDK для Win 2000 под Win ХР или для нее существует свой собственный?
Спасибо



Вопрос отправлен: 26.03.2003, 22:34
Отправитель: equalizer

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

Отвечает akul

Здравствуйте, equalizer!
На данный момент я натолкнулся на такую бяку: собранный video miniport по всем правилам на DDK2000 не заводится под XP (designed for old windows version). Хотя мой драйвер мышки написанный и отлаженный под 2k под ХР работает чудесно. Кстати, коллеги, если кто может - поделитесь DDK для xp.

Ответ отправлен: 27.03.2003, 16:30
Отправитель: akul


Отвечает Gibbel

Здравствуйте, equalizer!
Для WinXP существует свой... Распространяется он на компактах за некоторую сумму (как утверждает Microsoft, цена доставки, но IMHO, за такую цену мне ее бИЛЛ гЕЙТС сам лично должен привезти)...

Ответ отправлен: 27.03.2003, 10:14
Отправитель: Gibbel


Отвечает Bob Johnson

Доброе время суток, equalizer!
Существует. Если ты его сможешь найти - то используй, конечно. Ну а если нет, то под хр можно все-таки ставить драйвера от 2к.


Ответ отправлен: 27.03.2003, 14:14
Отправитель: Bob Johnson


 Вопрос № 2853

Есть ли прерывания BIOS, с помощью которых можно получить модель и объем накопителя HDD?



Вопрос отправлен: 27.03.2003, 06:59
Отправитель: Tomazo Torquemada

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

Отвечает Samodelkin

Доброе время суток, Tomazo Torquemada!
мне о таких неизвестно... обычно для этого применяют программирование портов


Ответ отправлен: 27.03.2003, 11:07
Отправитель: Samodelkin


Отвечает Joy

Приветствую Вас, Tomazo Torquemada!
Ни когда не слышал о том, что с помощью прерываний БИОСа получали модель и т.п. А вот с помощью технологии SMART - легко. Ищи описание в Инете, этого добра полно....

Ответ отправлен: 29.03.2003, 08:05
Отправитель: Joy


Отвечает Maverick

Доброе время суток, Tomazo Torquemada!
Второй раз отвечаю на этот вопрос за седня :)
INT 13 - Дисковое прерывание - GET CURRENT DRIVE PARAMETERS
- получить текущие параметры диска - (для XT,AT,XT286,CONV,PS)
AH = 08h
DL = номер диска
Возвращает: установленный CF при ошибке
AH = код состояния (смотри AH=01h)
BL = тип диска (смотри AH=17h) (только для гибких дисков AT/PS2)
DL = число последовательно ответивших дисков
DH = максимальный номер дорожки
CL = максимальный номер сектора (биты 0-5)
CH = максимальный номер цилиндра (старшие биты в битах 6,7 CL)
ES:DI -> таблица параметров диска


Ответ отправлен: 27.03.2003, 16:19
Отправитель: Maverick


Отвечает Gibbel

Приветствую Вас, Tomazo Torquemada!
Можешь попробовать прочитать эти данные из CMOS.

Ответ отправлен: 27.03.2003, 10:15
Отправитель: Gibbel


 Вопрос № 2854

Доброе утро, день, вечер. (нужное подчеркнуть)
Я программирую на Delphi. У меня возникла проблема.
Есть массив of byte из 170000 элементов. От каждого элемента надо отнять 1 байт (0-1=255).
При реализации данного цикла PIII 1200 Mz выполняет задачу минуты за 2-3.
Вопрос: Возможно ли ускорить процесс при помощи АСМа? Если возможно то как?



Вопрос отправлен: 27.03.2003, 14:20
Отправитель: Aleksey

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

Отвечает Samodelkin

Добрый день, Aleksey!
Реализация такой задачи на Асме даст существенный прирост скорости по сравнению с Delphi. Однако минуты 2-3 это черезчур даже для Delphi! У тебя случаем нехватка оперативки не сказывается? То есть к файлу подкачки при выполнении твоей программы винда не обращается? Если у тебя так мало оперативки что задействуется виртуальная память, то никакой асм не поможет - обращение к жесткому диску сведет на нет выигрыш, какой бы мог получиться при обработке Асмовой прогой вместо дельфёвой массива в реальной RAM.


Ответ отправлен: 27.03.2003, 16:25
Отправитель: Samodelkin


Отвечает masquer

Доброе время суток, Aleksey!
Не тестировал (и особо не оптимизировал), но на любой машине с MMX будет гораздо меньше секунды обрабатываться даже в 100 раз больший объем. Да, кстати о птичках, перепиши свой алгоритм на С и сравни скорость - Делфи отстой...
xor eax, eax
inc eax
movd mm0, eax
punpcklbw mm0,mm0
punpcklwd mm0,mm0
punpckldq mm0,mm0
mov ecx, 170000/32
mov edi, offset Your_170000_Elements
@@: movq mm1, [edi]
movq mm2, [edi+8]
movq mm3, [edi+16]
movq mm4, [edi+24]
psubb mm1, mm0
psubb mm2, mm0
psubb mm3, mm0
psubb mm4, mm0
movq [edi], mm1
movq [edi+8], mm2
movq [edi+16], mm3
movq [edi+24], mm4
dec ecx
jnz @B


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


Отвечает WNA

Добрый день, Aleksey!
Только что проверил - на Celeron 1200 меньше секунды. Просто оптимизируй цикл, возможно у тебя там что-то лишнее считается еще. Вообще хотелось бы увидеть конкретный кусок программы.


Ответ отправлен: 27.03.2003, 14:54
Отправитель: WNA


Отвечает Bob Johnson

Приветствую Вас, Aleksey!
Delphi имеет достаточно крутой компилятор, который все хорошо оптимизирует. Попробуй в свойствах проекта нажать кнопочку "Release", что должно привести к построению максимально оптимизированного файла.
Если же все таки это не поможет, можешь вот такую процедуру вставить в delphi
asm
mov eax, offset my_array
mov ecx, 170000
@@1:
sub byte ptr [eax], 1
inc eax
dec ecx
jnz @@1
end
в теории должно занимать 2 такта на байт, т.е. 340000 тактов на весь твой массив, но с учетом скорости памяти (а это около 400-600 мб на чтение, если у тебя не ddr, и 200 мб на запись, т.е. около 166 мб на копирование) должно занимать 1 миллисекунду... Странно, почему у тебя на delphi занимат 2 минуты? Смотри код, в нем должны быть ошибка...


Ответ отправлен: 28.03.2003, 17:18
Отправитель: Bob Johnson


 Вопрос № 2855

Здравствуйте уважаемые Эксперты!!!
Может у кого то из вас есть описания функций библиотек wsock32.dll и wininet.dll? Буду очень признателен если вы скинете их (описания) мне на ё-майл.



Вопрос отправлен: 27.03.2003, 15:10
Отправитель: Drahus

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

Отвечает Samodelkin

Здравствуйте, Drahus!
По wininet.dll описаний много, но я их избегал до сих пор, мне wsock32.dll больше по душе. Попадалась интересная статейка "Сокеты M$windows" (правда с небольшими ошибками, а еще MSDN на дисках с вижелстудией 6.0 читаю.
На почту... скинул бы статейку ... ну еще кое что ... ОСТОЛОП! ТЫ ЖЕ ПОЧТУ НЕ УКАЗАЛ! и куда я таперь слать буду?


Ответ отправлен: 27.03.2003, 16:45
Отправитель: Samodelkin


Отвечает Gibbel

Добрый день, Drahus!
MSDN forever!!!

Ответ отправлен: 27.03.2003, 15:25
Отправитель: Gibbel


Отвечает Bob Johnson

Добрый день, Drahus!
В MSDN все это есть. Лучше поставь сразу - все равно когда-нибудь сделаешь это. в on-line MSDN тоже доступен: msdn.microsoft.com.


Ответ отправлен: 28.03.2003, 17:18
Отправитель: Bob Johnson


 Вопрос № 2856

Большой привет ВСЕМ. Вопрос такой: КАК заставить Operu 7x сохранять страничку целеком и только одним файлом, типа как в IE



Вопрос отправлен: 27.03.2003, 17:38
Отправитель: Mihail

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

Отвечает Joy

Здравствуйте, Mihail!
Наверное не много не по теме рассылки! Я вообще не слышал, чтоб Opera это делала.

Ответ отправлен: 29.03.2003, 08:05
Отправитель: Joy


Отвечает Samodelkin

Доброе время суток, Mihail!
Ты жестоко ошибаешься :) ИЕ не сохраняет одним файлом. Картинки не могут быть инкапсулированы в текст и сохраняются в виде отдельных фалов в создаваемом подкаталоге с именем "сохраняемое_имя_страницы.files" так что сохранение и графической и тесктовой информации в одном файле не осуществляет ни один браузер

Ответ отправлен: 28.03.2003, 11:33
Отправитель: Samodelkin


 Вопрос № 2857

Хочу написать прогу для перевода 16-ричных чисел в десятичные? Нужны идеи, как к этому подступиться (только кроме прописывания эквивалентов каждому 16-ричному числу!!!).



Вопрос отправлен: 27.03.2003, 18:09
Отправитель: Tomazo Torquemada

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

Отвечает Broken Sword

Здравствуйте, Tomazo Torquemada!
знаю только, что красиво это никак не реализуешь. Я делаю всегда так: делю на 10 число и вывожу остаток (после +30h естественно). Заканчивается это дело только когда AL=0

Ответ отправлен: 27.03.2003, 20:48
Отправитель: Broken Sword


Отвечает St

Привет, Tomazo Torquemada!
Процедура перевода 16-ричного числа размером в WORD в строку десятиричных цифр оканчивающуюся кодом 0 (ASCIIZ-строка).
St

Приложение:

Ответ отправлен: 28.03.2003, 13:17
Отправитель: St


Отвечает Eugene

Здравствуйте, Tomazo Torquemada!
Прописать эквиваленты для всех 16-чных чисел будет очень неоптимально с точки зрения расходуемой памяти. Можешь кроме деления на 10 использовать счётчики. Т.е. организовываешь счётчик по 16-чному числу и в цикле увеличиваешь какую - нибудь переменную с 10-чной коррекцией.

Ответ отправлен: 28.03.2003, 09:08
Отправитель: Eugene


Отвечает Samodelkin

Здравствуйте, Tomazo Torquemada!
ну если тока идеи тогда прописывание эквивалентов можешь забыть. Чисел бесконечное множество - заколебешься прописывать :) Проще всего будет найти алгоритмы перевода шестнадцатеричного числа (то есть строки шестнадцатеричных цифр) в byte, word или dword, а то что получилось затем преобразовать в десятичное число (то есть строку десятичных цифр)


Ответ отправлен: 31.03.2003, 06:03
Отправитель: Samodelkin


Отвечает Ayl

Приветствую Вас, Tomazo Torquemada!
А что сложного-то? 16-ричное число переводится в 10-ую с.с. по простой формуле:
D = H0 + 16*(H1 + 16*(H2 +... +16*Hn)...),
где H0,H1,...,Hn - цифры 16-ричного числа.
Тебе все равно придется завести табличку для преобразования 16-ричных цифр в десятичные числа.
Можно также переводить не по цифрам, а по байтам (2 16-ричные цифры одновременно). Тогда формула будет выглядеть так:
D = B0 + 256*(B1 + 256*(B2 + ... + 256*Bn)...),
где Bi - 2 цифры 16-ричного числа.
Но для этого тебе уже потребуется табличка из 256 элементов.


Ответ отправлен: 28.03.2003, 16:40
Отправитель: Ayl


Отвечает Bob Johnson

Здравствуйте, Tomazo Torquemada!
Как я понял у тебя есть 16-чное число в виде строки, которую тебе нужно преобразовать в строку с десятичным числом. Тогда задача разделяется на 2:
1. Преобразование из строки в число (которое помещается в регистре).
2. Преобразование значения регистра в строку.
1 делается так:
1.1. результат = 0
1.2. идешь по строке слева направо, по одному символу.
1.3. Берешь текущий символ (это '0'-'9' или 'A'-'F') и переводишь его в цифру 0 - 15.
1.4. результат = результат*16 + текущая цифра.
1.5. до тех пор, пока не достугнут конец строки идешь к 1.2.
Для перевода числа в десятичное используй остаток от деления на 10.


Ответ отправлен: 28.03.2003, 17:18
Отправитель: Bob Johnson


Отвечает Tigran K. Kalaidjian

Здравствуйте, Tomazo Torquemada!
Возьмем 16-ричное число. Сумма=0.
Берем последнюю цифру и умножаем на 16 в степени 0(т.е. на 1). Прибавляем к сумме.
Берем предпоследнюю цифру и умножаем на 16 в степени 1. Прибавляем к сумме.
Берем предпредпоследнюю цифру и умножаем на 16 в степени 2. Прибавляем к сумме.
.
.
.
Берем первую цифру и умножаем на 16 в степени (n-1), где n-число разрядов 16-ричного числа. Прибавляем к сумме.
В сумме будет лежать 10-чное число, эквивалентное данному.
Единственное, что ещё надо будет прописать-соответствие "цифр" > 9:
A->10
B->11
C->12
D->13
E->14
F->15
Пример: F1A->10*16^0+1*16^1+15*16^2=3866

Ответ отправлен: 28.03.2003, 17:28
Отправитель: Tigran K. Kalaidjian



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (36)
C / C++ (28)
Perl (6)
Delphi (15)
Pascal (19)
Basic / VBA (9)
Java / JavaScript (9)
PHP (5)
MySQL / MSSQL (6)
Пользователю
Windows 95/98/Me (30)
Windows NT/2000/XP (23)
"Железо" (28)
Поиск информации (15)
Администратору
Windows NT/2000/XP (10)
Linux / Unix (13)
Юристу
Гражданское право (9)
Семейное право (5)
Трудовое право (5)
КоАП (6)

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




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

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


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

В избранное