Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 301
от 26.06.2002, 19:00
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 551 Отправлено ответов: 1526 Активность: 276.9 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Broken Sword Статус: Профессиональный Общий рейтинг: 146.28 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 160.5 [Подробней >>] |
vitya Статус: Опытный Общий рейтинг: 117.07 [Подробней >>] |
Portnov Статус: Опытный Общий рейтинг: 159.09 [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 120.38 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
Guess Who Статус: Доверительный Общий рейтинг: 104.97 [Подробней >>] |
Федос Статус: Доверительный Общий рейтинг: 119.17 [Подробней >>] |
kvINT Статус: Опытный Общий рейтинг: 115.46 [Подробней >>] |
igorash Статус: Опытный Общий рейтинг: 122.75 [Подробней >>] |
Frank Статус: Профессиональный Общий рейтинг: 121.36 [Подробней >>] |
Blackeye Статус: Профессиональный Общий рейтинг: 118.73 URL: Delphi, my programms... [Подробней >>] |
kostik Статус: Профессиональный Общий рейтинг: 116.28 URL: Все о программистах и для программистов Телефон: (4212)393-276 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 500. Подскажите плиз самый быстрый способ узнать длину текстовой строки, оканчивающейся nulloм. WinAsm...... (ответов: 5)
Вопрос № 501. День добрый, господа эксперты ! Помню давно была хорошая оболочка для Аскмблера под Дос. Пытался най... (ответов: 3)
Вопрос № 502. Как правильно экспортировать dll-библиотеки с функциями в SoftIce. После того как прописал кое-какие... (ответов: 2)
Вопрос № 503. Здравствуйте!!! Кто нибудь имеет понятие как можно работать с компилятором DSL из пакета LINGVO. Я в... (ответов: 2)
Вопрос № 504. Уважаемые эксперты есть одна проблема ,подцепил не знаю где (асю может поставил) вредную такую вещь ... (ответов: 5)
Вопрос № 505. Посмотрите пожалуйста программу. Можно ли что-то улучшить или добавить? Программа предназначена для ... (ответов: 2)
Вопрос № 506. Доброго времени суток, господа эксперты. Кажется, мой вопрос неправильно поняли, я спрашивал, как ОП... (ответов: 1)
Вопрос № 507. Привет эксперты!!! Да нет же,есесно я догадался нажать на f1. DSL компилятор преобразует словарные ... (ответов: 1)
Вопрос № 508. Эксперты. Как никогда не задумывался , но вот сегодя столкнулся. Загружаю программу в отладчике AFDP... (ответов: 4)
Вопрос № 509. Может быть мой вопрос покажеться немного странным. Но...я пишу программу кнахождения квадратного ура... (ответов: 9)
Вопросов: 10, ответов: 34
Вопрос № 500 |
Подскажите плиз самый быстрый способ узнать длину текстовой строки, оканчивающейся nulloм. WinAsm...
Вопрос отправлен: 21.06.2002, 19:36
Отправитель: DrGenius (drgenius@nm.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Добрый день, DrGenius!
Это ламерский и далеко не "самый быстрый" способ, просто о нем ОЧЕНЬ мало кто знает: (оно в принципе и не нужно, но пусть будет, может кому и пригодится):
les di,string
mov ax,1212h
int 2Fh
..............
string db 'xxxxxxxxxxxxxxxxx',0
сx=string lenght
p.s. тока щас обратил внимание на WinAsm в конце твоего вопроса... ну ниче, все равно пусть будет... )
вот, кстати, полез в ральфа брауна в раздел 2Fh - там дохренища фич, о которых никто даже не подозревает....
(от compare filenames до get dos data), нада будет полазить...
Ответ отправлен: 21.06.2002, 22:48
Отправитель: Broken Sword
Отвечает masquer
Доброе время суток, DrGenius!
Все зависит от того, какой длины строки ты предполагаешь мерять, ежели длиной до 1-2 Мб, то подойдети стандартный вариант
mov edi, offset buffer
xor eax, eax
mov ecx,-1
repnz scasb
not ecx
dec ecx - длина здесь
а ежели более, то MMX юзай. Примером пока кидать не буду.
Ответ отправлен: 21.06.2002, 19:58
Отправитель: masquer
Отвечает vitya
Приветствую Вас, DrGenius!
быстрее чем просто проходом не выйдет. просто по очереди смотри все значения строки пока не встретишь 0.
Ответ отправлен: 22.06.2002, 09:00
Отправитель: vitya
Отвечает Portnov
Приветствую Вас, DrGenius!
По-моему, так:
mov si,offset stroka
mov cx,0ffffh
looping:
lodsb
or al,al
jz str_end
loop looping
str_end:
not cx
;Теперь в CX - длина строки.
C уважением, Portnov.
Ответ отправлен: 22.06.2002, 17:06
Отправитель: Portnov
Отвечает baldr
Доброе время суток, DrGenius!
mov cx, 0FFFFh
mov di, offset stroka
mov al, 0
repne scasb
При выходе - DI указывает на конец строки... Вычитаешь из него смещение начала и все...
ES должен указывать на сегмент, в котором определена stroka.
Ответ отправлен: 23.06.2002, 00:48
Отправитель: baldr
Вопрос № 501 |
День добрый, господа эксперты !
Помню давно была хорошая оболочка для Аскмблера под Дос.
Пытался найти, но не нашел.
Помогите, если знаете где лежит пишите !
Спасибо !
Вопрос отправлен: 22.06.2002, 01:42
Отправитель: Skeleton (skeleton22@yandex.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Portnov
Добрый день, Skeleton!
Я некоторое время пользовался TurboShell. Наверняка она есть на сайтах вроде ListSoft.ru, Download.ru, Freeware.ru. Что интересно - написана на асме.
C уважением, Portnov.
Ответ отправлен: 22.06.2002, 17:08
Отправитель: Portnov
Отвечает Guess Who
Добрый день, Skeleton!
Хоть бы название дал. Я знаю, что есть TASMED и Turbo Assembler Shell. Где найти? Юзай поисковик.
Ответ отправлен: 22.06.2002, 13:21
Отправитель: Guess Who
Отвечает baldr
Здравствуйте, Skeleton!
http://darksawa.r2.ru/files/Tasmed.zip
TASMeD - очень удобная вещь... Скачай - оценишь... Только сразу совет: не запускай проги
из-под нее. Лучше выйди в DOS и там ручками запусти tasm... Или пиши мне - у меня уже
давно есть bat-файлик для компиляции асмовских файлов из Dos Navigator'а или Нортона...
Ответ отправлен: 23.06.2002, 00:48
Отправитель: baldr
Вопрос № 502 |
Как правильно экспортировать dll-библиотеки с функциями в SoftIce. После того
как прописал кое-какие в winice.dat, SoftIce их всё-равно не грузит. Команда Exp
выводит стандартные kernel, user32 и.т.д, а моих нет.
Вопрос отправлен: 22.06.2002, 02:56
Отправитель: Speedy Gonsalez (kiselevo@mtu-net.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Portnov
Доброе время суток, Speedy Gonsalez!
Может оказаться, что не хватает памяти для символов. В настройках где-то задается этот объем. Попробуйте поставить побольше.
C уважением, Portnov.
Ответ отправлен: 22.06.2002, 17:09
Отправитель: Portnov
Отвечает masquer
Доброе время суток, Speedy Gonsalez!
Блин, ну точно FAQ создавать надо, я уже раз десять на этот вопрос отвечал - увеличь размер памяти под символы, если не понятно - справку читай!!!
Ответ отправлен: 22.06.2002, 09:24
Отправитель: masquer
Вопрос № 503 |
Здравствуйте!!!
Кто нибудь имеет понятие как можно работать с компилятором
DSL из пакета LINGVO. Я в смысле, можно ли написать свою прогу, которая бы работала с файлами *.lsd который формируются при компиляции словарных статей компилятором DSL. Как словарь LINGVO работает с этими файлами. Я бы хотел написать свой словарь.
Заранее благодарен!!!
Вопрос отправлен: 22.06.2002, 04:27
Отправитель: Сергей (cppdummy@narod.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Portnov
Приветствую Вас, Сергей!
Насколько я помню, нескомпилированный словарь содержит текст с некоторыми ключевыми словами, тегами. Вообще говоря, нужно писать компилятор, но т.к. ключевых слов немного, можно обойтись без знания теории формальных грамматик. Я когда-то что-то подобное писал, (на Паскале) но там были уж совсем не словари, а что-то другое. И, наверное, главной проблемой будет узнать формат скомпилированных словарей. Не удивлюсь, если он лицензирован, и узнать его можно только у ABBYY и только за деньги(немалые). А может, кто-нибудь этим уже занимался. Поищите в Интернете.
C уважением, Portnov.
Ответ отправлен: 22.06.2002, 17:09
Отправитель: Portnov
Отвечает masquer
Здравствуйте, Сергей!
А кнопочку F1 нажать и справку почитать не судьба. Смотри dsl1.hlp
LSD???
Ответ отправлен: 22.06.2002, 09:18
Отправитель: masquer
Вопрос № 504 |
Уважаемые эксперты есть одна проблема ,подцепил не знаю где
(асю может поставил) вредную такую вещь через определенный промежуток времени( порядка 40 мин) при перемещении курсора мыши курсор начинает скакать во все стороны и ничинают ятак понимаю имитироваться нажатия мыши начинают открываться окна запускаться задачи и тд как мне его вычислить и убрать антивирус не видит
Вопрос отправлен: 22.06.2002, 08:28
Отправитель: andz
[Следующий вопрос >>] [Список вопросов]
Отвечает Федос
Доброе время суток, andz!
легче всего - это переставить винды. а так можешь покапаться в реестре, может и найдешь что нибудь.
Ответ отправлен: 24.06.2002, 10:19
Отправитель: Федос
Отвечает Portnov
Приветствую Вас, andz!
У нас в машинном классе такое было на одной машине. Как выяснилось, вири ни при чем, был поврежден шнурок мышки. Так что проверьте мышку. Если все нормально - убедитесь, что у вас последние обновления антивирусных баз и проверьте еще раз антивирусом. Может быть, правда (теоретически), что сам антивирус уже заражен, тогда надо винт сносить к кому-нибудь и проверить у него (аккуратно!). Но, повторюсь, вероятно, вири и трояны ни при чем.
C уважением, Portnov.
Ответ отправлен: 22.06.2002, 17:47
Отправитель: Portnov
Отвечает kvINT
Добрый день, andz!
Стандартный совет:
1. Обнови антивирус
2. Скорее всего, глюк самой винды - переставь ее. Если думаешь, что зараза какая-то, то лучше начисто, т.е. format C: и т.д.
Ответ отправлен: 22.06.2002, 18:35
Отправитель: kvINT
Отвечает masquer
Доброе время суток, andz!
Пока на Вин2к не перешел, у меня прога была TaskKiller кажется звалась, она процессы через ToolHelp смотрит, от этого так просто не спрячешься, пробуй удалять подозрительные процессы, можно попробовать программу Antikeylogger
Ответ отправлен: 22.06.2002, 09:16
Отправитель: masquer
Отвечает baldr
Приветствую Вас, andz!
Возможные причины в порядке убывания вероятности:
1) У Вас друзья с чувством юмора... Скорее всего, Вам подсунули такую программу, которая все это
и делает... посмотрите в автозагрузке и реестре - там должно быть...
2) Провод от мышки неплотно воткнут... Просто случайно задели его или перетерся где-то...
Если под DOS будет то же самое - это 99% - перетерся провод... Лучше с этим сразу разобраться,
иначе можно и порт спалить...
Ответ отправлен: 23.06.2002, 00:47
Отправитель: baldr
Вопрос № 505 |
Посмотрите пожалуйста программу. Можно ли что-то улучшить или добавить? Программа предназначена для вывода дампа CMOS в файл. Писал я сам - и английские комментарии тоже писал я сам, поэтому не пытайтесь уличить в плагиате ;)
Приложение:
Вопрос отправлен: 22.06.2002, 08:25
Отправитель: Джамаль (s_man80@inbox.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Portnov
Добрый день, Джамаль!
mov byte ptr[di],al
dec di
можно заменить на stosb при установленном DF, а если надо inc di, то при снятом DF. Эта последовательность у вас часто встречается. А так вроде все хорошо.
С уважением, Portnov.
Ответ отправлен: 22.06.2002, 17:47
Отправитель: Portnov
Отвечает Broken Sword
Добрый день, Джамаль!
Ну, сразу что бросается в глаз: у тебя почему то CMOSlen = 0FFh, хотя должно быть по идее 7Fh (и это максимум, может быть и меньше). А! Вообще 7-ой бит 70h порта - это к NMI относится, а реально индекс - биты 6-0 (т.е. максимум 7F), а у Зубкова кстати на 336 странице по этому поводу ошибка (пишет: "бит 6: собственно индекс", а должно быть "бит 6-0".
И вообще, сильно мутно (особенно, hex-ascii).
Вот в приложении см. мой вариант (не выполн. всех наворотов с CMOSXX.bin, но тем не менее в 2,5 раза меньше)
p.s. у тебя error: reserved word used as symbol
(это все изза метки err - в TASM-е это слово зарезервировано)
Приложение:
Ответ отправлен: 22.06.2002, 23:45
Отправитель: Broken Sword
Вопрос № 506 |
Доброго времени суток, господа эксперты.
Кажется, мой вопрос неправильно поняли, я спрашивал, как ОПРЕДЕЛИТЬ настройки прокси, а не как их ЗАДАТЬ. К тому же, естественно, меня интересовало, как это произвести программно (это ведь рассылка по Ассемблеру)))
Вопрос отправлен: 22.06.2002, 09:59
Отправитель: Gibbel
[Следующий вопрос >>] [Список вопросов]
Отвечает igorash
Приветствую Вас, Gibbel!
Это по идее должно где-то в реестре храниться, поищи в нем, а ваще помню где-то читал про то как воровать диалаповые пароли там было подробно где искать, и как раскодировать, но у прокси наверно то же самое примерно.
Ответ отправлен: 22.06.2002, 12:21
Отправитель: igorash
Вопрос № 507 |
Привет эксперты!!!
Да нет же,есесно я догадался нажать на f1. DSL компилятор преобразует
словарные статьи о конструирование которых подробно описано в хелпе
"dsl1.hlp". Затем, после компиляции мы получаем уже словари, тоесть файлы
с расширением *.lsd.
Далее, пишется, что мы можем испльзовать откомпилированный словарь в
программе LINGVO.
Но меня это не совсем устраивает. Поэтому вопрос был таков. Можно ли
работать со словорями из своей проги.
Короче мне просто не сдался LINGVO, хочу иметь своё.
Если знаете какой нибудь ресурс связанный с DSL, бросайте линк плиз.
С уважением.
Спасибо
Вопрос отправлен: 22.06.2002, 11:20
Отправитель: Сергей (cppdummy@narod.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Приветствую Вас, Сергей!
Теперь понятно, но там запаковано чем-то, чем - х.з.??? Можно, конечно, проследить, как программа получает доступ к данным, как распаковывает, навряд ли лингво всю базу в памяти держит. думаю это не меньше гига будет, а выборочно распаковывает в память. Но геморно это, я так делаю, только если другого выхода не вижу. Пробуй, может получиться.
Ответ отправлен: 22.06.2002, 17:58
Отправитель: masquer
Вопрос № 508 |
Эксперты.
Как никогда не задумывался , но вот сегодя столкнулся.
Загружаю программу в отладчике AFDPRO, и вижу что регистр СХ
изменился, хотя я саму программу не запускал, только загрузил. Что значит число в регистре СХ, и почему оно изменилось. ?(до загрузки был о, после загрузки 33)
Спасибо
Вопрос отправлен: 22.06.2002, 13:46
Отправитель: Oleg
[Следующий вопрос >>] [Список вопросов]
Отвечает Portnov
Здравствуйте, Oleg!
Вот я сейчас попробовал в AFD, у меня вообще при загрузке CX=03e9h. А TurboDebugger показывает CX=0. Скорее всего, это глюк AFD. Он ведь писался самое позднее для 286-го, там все-таки есть некоторые отличия, может из-за этого.
С уважением, Portnov.
Ответ отправлен: 22.06.2002, 17:47
Отправитель: Portnov
Отвечает masquer
Добрый день, Oleg!
сх, вообще, как счетчик используется, возможно твой отладчик его как-то использовал, вот и все
Ответ отправлен: 22.06.2002, 18:17
Отправитель: masquer
Отвечает Федос
Приветствую Вас, Oleg!
это статус удачной загрузки программы. не обращай внимание.
Ответ отправлен: 24.06.2002, 10:12
Отправитель: Федос
Отвечает Broken Sword
Приветствую Вас, Oleg!
Методой научного тыка удалось установить следующее: CX=размер загружаемой файлы.
Ответ отправлен: 22.06.2002, 17:30
Отправитель: Broken Sword
Вопрос № 509 |
Может быть мой вопрос покажеться немного странным. Но...я пишу программу кнахождения квадратного уравнения на асме. Написал ввод чисел, нашел дискрименант, вывел его на экран. Но дальше необходимо извлечь корень из него. Но как это сделать? Допустим в DX = 24h как извлечь корень?
Все предложения, советы, сырцы приветствуються...
Вопрос отправлен: 22.06.2002, 15:19
Отправитель: Andy
[Следующий вопрос >>] [Список вопросов]
Отвечает vitya
Доброе время суток, Andy!
а ты как хочешь численными методами или через сопроцессор. в любом случае советую второе, а то замучаешься!
Ответ отправлен: 24.06.2002, 11:07
Отправитель: vitya
Отвечает masquer
Доброе время суток, Andy!
Можно сдвигом (shr dx, 1), можно целочисленным делением (div, idiv),можно сопроцесоором fdiv, тебе, наверное, последнее подойдет
Ответ отправлен: 22.06.2002, 18:15
Отправитель: masquer
Отвечает Федос
Приветствую Вас, Andy!
функция сопроцессора fsqrt.
Ответ отправлен: 24.06.2002, 10:10
Отправитель: Федос
Отвечает Broken Sword
Доброе время суток, Andy!
FPU на что
Ответ отправлен: 22.06.2002, 17:30
Отправитель: Broken Sword
Отвечает Portnov
Доброе время суток, Andy!
Можно через сопроцессор, там есть команда FSQRT. А вообще, корень же будет дробным числом (скорее всего), а основной процессор не расчитан на работу с такими числами. Есть, правда, итерационный метод нахождения корня, но там ведь все равно с дробями придется работать, без сопроцессора обойтись трудно. Так что мой совет в общем случае - перевести число в формат сопроцессора, сказать FLD diskr, FSQRT, FST koren. Насчет 24h: 24h=36, sqrt(24h)=sqrt(36)=6 :).
С уважением, Portnov.
Ответ отправлен: 22.06.2002, 17:47
Отправитель: Portnov
Отвечает kvINT
Здравствуйте, Andy!
Естественно, на асме ты корень напрямую извлечь не сможешь. Нужно заменить операцию извлечения корня комбинацией операций деления, вычитания, сложения. Существуют алгоритмы для его вычисления, их надо искать где-нибудь в книгах по математике. Мне в голову пришел лишь дубовый (что естественно после просмотра футбола и потребления 3 бутыорк крепкого пива - эх, жаль сенегальцев) флгоритм:
1. Поделить число на 2.
2. Возвести результат в квадрат.
3. Если квадрат больше, чем исходное число, поделить его на 2 и вычесть из предыдущего.
4. Иначе поделить его на 2 и прибавить его к предыдущему.
Пр.:
sqrt(10)
10/2=5
5*5=25 >10
5-5/2=5-2,5=2.5
2.5*2.5=6.25 <10
2.5+2.5/2=2,5+1,25=3.75
3.75*3.75=14.06 >10
3.75-1.25/2=3,75-0,63=2.88
2.88*2.88=8.29 <10
2.88+0.63/2=2,88+,32=3.2
3.2*3.2=10.2 >10
и т.д.
алгоритм тупой, но работать будет. Естественно, надо задать предел вычислениям, например, если квадрат-исходное_число <= 0.001 то прекратить итерации.
Ответ отправлен: 22.06.2002, 20:32
Отправитель: kvINT
Отвечает Frank
Здравствуйте, Andy!
Корень можно посчитать численными методами:
За итерационную формулу можно взять: x=(1/2)*x+(1/2)*(c/x)
где с - наше число (Эта формула сходится, если нужно доказательство сходимости, то могу объяснить подробнее, но запомни, итерационная формула сходится только если модуль производной правой части меньше 1, и выполняется критерий липшица: abs(f(x1)-f(x2))<=b*abs(x1-x2) [0Т.е. твоя первоочередная задача состоит в отыскании как раз той самой итерационной формулы, а потом уже проблем не будет.
При вычислении: Берешь начальное приближение и считаешь следующее приближение и т.д. до достижения нужной точности, которая считается разницей двух последних итераций
Пример для с=2 ( считаем sqrt(2) ) по предыдущей формуле
x0=1.5 ( это наше начальное приближение)
x1=(1/2)*(x0+c/x0)=(1/2)*(1.5-2/1.5)=1.4167
x2=(1/2)*(x1+c/x1)=(1/2)*(1.4167-2/1.4167)=1.414216
и т. д. ( реальный корень: 1.414214 вот так вот :))
ЗЫ Можешь не морочить голову и юзать сопроцессор :)) как тут правильно говорят тебе товарищи эксперты :)
ЗЗЫ Численные методы это супер !
Ответ отправлен: 23.06.2002, 00:46
Отправитель: Frank
Отвечает Blackeye
Приветствую Вас, Andy!
Воспользуйся сопроцесорными fild, fsqrt, fstp и т.д Иначе трудно тебе будет :)
Ответ отправлен: 24.06.2002, 21:42
Отправитель: Blackeye
Отвечает kostik
Здравствуйте, Andy!
Можно конечно, и численными методами. но лучше воспользоваться возможностями сопроцессора. fsqrt
Ответ отправлен: 26.06.2002, 03:32
Отправитель: kostik
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (49) C / C++ (30) Perl (9) Delphi (17) Pascal (26) Basic / VBA (16) Java / JavaScript (6) PHP (8) MySQL / MSSQL (10) |
Пользователю Windows 95/98/Me (47) Windows NT/2000/XP (35) "Железо" (41) Поиск информации (21) |
Администратору Windows NT/2000/XP (17) Linux / Unix (11) |
Юристу Гражданское право (9) Семейное право (4) Трудовое право (6) КоАП (3) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||