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

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


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

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

Выпуск № 704
от 09.03.2004, 01:00

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


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

Foamplast
Статус: Опытный
Общий рейтинг: 158.7
URL: мой личный сайт
[Подробней >>]
Snowm@n
Статус: Доверительный
Общий рейтинг: 125
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.74
[Подробней >>]
 
HertZ
Статус: Опытный
Общий рейтинг: 134.17
[Подробней >>]
Andrew Vext
Статус: Профессиональный
Общий рейтинг: 103.16
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 117.79
[Подробней >>]
 
Gibbel
Статус: Профессиональный
Общий рейтинг: 105.83
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]
VOVAN
Статус: Доверительный
Общий рейтинг: 104.17
[Подробней >>]


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

Вопрос № 5032. здрасьти... у меня вот тут пара вопросов возникла: 1) я тут пытался загрузить в IDA програмулину, он... (ответов: 3)
Вопрос № 5033. Привет эксперты. Помогите решить проблему. Мне нужно замерять за сколько тактов выполнится некотора... (ответов: 4)
Вопрос № 5037. Подскажите, где можно взять библиотеку для проигрывания MP3 под DOS с описанием функций и желательно... (ответов: 1)
Вопрос № 5038. При работе с сокетами WIN32 можно изменять IP отправителя ?... (ответов: 2)
Вопрос № 5039. Опять приветик. Ещё раз повопросу 5027. Мне казалось, что относительно понятно спросил, но ... Повто... (ответов: 4)
Вопрос № 5040. Уважаемые Эксперты, вопрос новичка. Ранее занимался только аналоговой техникой, сейчас понадобились ... (ответов: 1)
Вопрос № 5041. Здравствуйте эксперты!!! Я хочу задать вам вопросик, правда не совсем по теме. Возникла такая пробле... (ответов: 2)
Вопрос № 5042. Вопрос № 5040 Спасибо Уважаемый Gibbel, я перечитал предисловие у Калашникова, но у меня не вызываю... (ответов: 1)
Вопрос № 5043. Здравствуйте уважаемые эксперты!!! Немогли бы вы подсказать как пограмно перемножить две матрицы 3x3... (ответов: 4)
Вопрос № 5044. Каким образом можно узнать состояние модема, есть входящий звонок или нет, если можно пример или ссы... (ответов: 2)
Вопрос № 5045. подскажите, как работает защита программ от отладки, и как ее можно обойти... (ответов: 2)

Вопросов: 11, ответов: 26


 Вопрос № 5032

здрасьти...
у меня вот тут пара вопросов возникла:
1) я тут пытался загрузить в IDA програмулину, он ее вроде как дизасемлил, но там нет кода, а тока определения ланных (кода там ну страницы 2-3 в конце), почему так???
это какая-то програмная защита?
если да, то как с ней бороться?
2) где живет функция hmemcopy (или hmemcpy)
3) я тут встретился с таким понятием как "дельта-смещение", расскажите мне что это такое...
спасибо.



Вопрос отправлен: 03.03.2004, 19:04
Отправитель: очень хочу научиться

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

Отвечает Foamplast

Доброе время суток, очень хочу научиться!
1. Скорее всего, это саморасшифровывающаяся программа. Сейчас все, кому не лень, пакуют программы.
То есть эти 2-3 страницы читают из раздела данных и расшифровывают эти данные, передавая затем туда управление.
Дальше происходят вызовы LoadLibrary и GetProcAddress, чтобы построить таблицу импорта.
2. WINNTSystem32krnl386.exe
3. Дельта-смещение
http://fly.cc.fer.hr/~lethe/asmjournal/html/apj_7/Extending%20DOS%20Executables.shtml
(перевод с англ.)
Вставляя код, приходится сталкиваться со следующей проблемой: так как код может располагаться по любому смещению в памяти, он не может зависеть от абсолютных адресов данных, получаемых при компиляции из меток данных. Для решения этой проблемы используется техника, называемая вирусописателями "дельта-смещением". Дельта-смещение - это разница между реальным и полученным при компиляции адресами данных. Когда наш код обращается к данным, он добавляет дельта-смещение к адресам времени компиляции, чтобы получить верный адрес времени выполнения. Следующий участок кода вычисляет дельта-смещение.
call GET_START
GET_START:
pop bp
sub bp, offset GET_START
Call запихивает в стек значение регистра ip, являющееся реальным адресом времени выполнения метки "GET_START". Вычитая адрес времени компиляции из реального мы получаем дельта-смещение.

Ответ отправлен: 04.03.2004, 03:23
Отправитель: Foamplast


Отвечает Snowm@n

Приветствую Вас, очень хочу научиться!
Возможно прога запакована EXE-пакером, если так то ее надо распаковать.

Ответ отправлен: 04.03.2004, 08:11
Отправитель: Snowm@n


Отвечает vitya

Здравствуйте, очень хочу научиться!
1. может кода всего столько? Может она дллки какие грузит и все дело в них делаетя. Думайте.
2. думаю это обычная обертка вокруг memcpy.

Ответ отправлен: 04.03.2004, 08:43
Отправитель: vitya


 Вопрос № 5033

Привет эксперты.
Помогите решить проблему. Мне нужно замерять за сколько
тактов выполнится некоторая порцедура. Я пишу эту прогу под Windows на delphi и использую ассемблерные вставки. Так
в чем собствунно проблема. При измерении скорости выполнения одной и тойже процедуры моим способом результаты получаются разными.


Приложение:


Вопрос отправлен: 03.03.2004, 23:10
Отправитель: gozz

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

Отвечает HertZ

пџяЂпёпІпµя‚яЃя‚пІяѓяЋ п’п°яЃ, gozz
Windows - пјпЅпѕпЁпѕп·п°пґп°я‡пЅп°яЏ пћпЎ, пїпѕяЌя‚пѕпјяѓ пѕпЅп° пїпµяЂпµпєп»яЋя‡п°пµя‚яЃяЏ пјпµп¶пґяѓ пїпѕя‚пѕпєп°пјпё, пё я‡пµпј пёя… п±пѕп»яЊя€пµ, я‚пµпј пјпµпЅяЊя€пµ пІяЂпµпјпµпЅпё яѓпґпµп»яЏпµя‚яЃяЏ пєп°п¶пґпѕпјяѓ пїпѕя‚пѕпєяѓ, пІ п·п°пІпёяЃпёпјпѕяЃя‚пё пѕя‚ пїяЂпµпѕяЂпёя‚пµя‚п°, пїпѕяЌя‚пѕпјяѓ пё п·п°я‚яЂяѓпґпЅпёя‚пµп»яЊпЅпѕ пїяЂпё пїпѕпјпѕя‰пё яЃя‡пµя‚я‡пёпєп° я‚п°пєя‚пѕпІ пѕпїяЂпµпґпµп»пёя‚яЊ пІяЂпµпјяЏ пІя‹пїпѕп»пЅпµпЅпёяЏ пїяЂпѕя†пµпґяѓяЂя‹.

Ответ отправлен: 03.03.2004, 23:32
Отправитель: HertZ


Отвечает Foamplast

Добрый день, gozz!
Скорее всего, они и есть разные.
Если время выполнения функции больше кванта времени, отводимого в текущих условиях потоку, то они всегда будут разными.


Ответ отправлен: 04.03.2004, 03:30
Отправитель: Foamplast


Отвечает Andrew Vext

Добрый день, gozz!
Естественно каждый раз будут получаться разные результаты. Вы не учли, что во время выполнения процедуры может поступить сигнал прерывания (от таймера, от мыши, от клавиатуры) после чего обрабатывается прерывание. Кроме того по прерыванию от таймера может произойти переключение на другой процесс. И счетчик будет увеличиваться, пока управление снова не вернется вашей программе.

Ответ отправлен: 04.03.2004, 12:09
Отправитель: Andrew Vext


Отвечает Snowm@n

Добрый день, gozz!
Возможно это следствие многозадачности - не только же ваш код выполняется процессором!

Ответ отправлен: 05.03.2004, 20:06
Отправитель: Snowm@n


 Вопрос № 5037

Подскажите, где можно взять библиотеку для проигрывания MP3 под DOS с описанием функций и желательно примером



Вопрос отправлен: 04.03.2004, 10:57
Отправитель: HertZ

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

Отвечает Foamplast

Здравствуйте, HertZ!
Скачай нужный исходник с
http://www.mp3-tech.org/programmer/decoding.html
и портируй куда надо.

Ответ отправлен: 05.03.2004, 01:15
Отправитель: Foamplast


 Вопрос № 5038

При работе с сокетами WIN32 можно изменять IP отправителя ?



Вопрос отправлен: 04.03.2004, 11:07
Отправитель: HertZ

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

Отвечает Foamplast

Здравствуйте, HertZ!
А зачем?
Хосты, через которых будет передаваться сообщение, всё равно свои адреса пропишут.

Ответ отправлен: 05.03.2004, 01:16
Отправитель: Foamplast


Отвечает vitya

Здравствуйте, HertZ!
нет

Ответ отправлен: 04.03.2004, 11:16
Отправитель: vitya


 Вопрос № 5039

Опять приветик.
Ещё раз повопросу 5027. Мне казалось, что относительно понятно спросил, но ... Повторяю вопросик
Вопрос по ассемблеру для MC51 (восмиразрядный!). Так вот у меня есть число из двух байт. Нужно из этого числа каждую десятичную цифру положить в отдельный байт. Например, имеем десятичное число 1026(оно два байта занимает) нужно получить
1-й байт=6, 2-й=2, 3-й=0, 4-й=1. С одним байтом все понятно
В аккамулятор и регистры могу только один байт запихнуть.
И вообще могу только с одним байтом работать.
1026 в десятичной это 402H соответственно чтобы получить первую цифру (6) посылаю младший байт в A
MOV A, #02H
MOV B, #10 (или MOV B, #0AH)
DIV AB
и в В имеем это число( 6), которое можно запихнуть куда надо.
А как старший байт учесть. Т.е. не могу сразу целиком с 402H работать. Грубо говоря как разделить число из 4 байт на 10 в процессоре I386 получить при этом частое и остаток.



Вопрос отправлен: 04.03.2004, 12:20
Отправитель: Tolyan (fotoalbum@list.ru)

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

Отвечает Snowm@n

Приветствую Вас, Tolyan!
ПОКА (!результат==0)
{
очередной байт=результат%10;
результат/=10;
}

Ответ отправлен: 05.03.2004, 20:22
Отправитель: Snowm@n


Отвечает HertZ

Здравствуйте, Tolyan!
Предположим, что у нас имеется 2 байтное число, значит максимум десятичных чисел может быть - 5 штук (65535) , тогда из исходного числа надо вычитать сначала 10000, потом 1000 и.т.д. ,следить за получением отрицательного числа и подсчитывать к-во вычетаний до получения отрицательного числа, при переходе к определению каждого следующего десятичного разряда в регистрах исходного числа восстанавливается последняя положительная разность
Думаю вычетать из 2х байтного числа не составит труда

Ответ отправлен: 04.03.2004, 19:36
Отправитель: HertZ


Отвечает _vt

Здравствуйте, Tolyan!
А разве нету в МС51 команд сдвига? В 8080 (тоже восьмиразрядный!) есть! Их и используй!
--- E-Man 1.5+ : Sorry for terrible english. My native language is C++


Ответ отправлен: 05.03.2004, 00:21
Отправитель: _vt


Отвечает Foamplast

Приветствую Вас, Tolyan!
1. Посмотри внимательней описание коданды деления.
Во многих процессорах комадна деления использует в качестве делимого регистровую пару, т.е. в n-разрядном процессоре с регистрами r1, r2, r3 и т.д. команда деления будет делить 2n-разрядное число из пары r1:r2 на n-разрядное число из r3. i386 не исключение, отсюда ответ на следуюущий вопрос:
2. Записать старшуюу часть числа в Edx, младшую - в Eax, делитель (10) - в Ebx и выполнить команду 'DIV EBX'. Тогда в Eax будет частное, а в Edx - остаток.
3. Если в твоём процессоре команда деления НЕ ИСПОЛЬЗУЕТ регистровуюу пару, то придётся делить столбиком. То есть берёшь старшую часть делимого, делишь на делитель. Частное записываешь, остаток прибавляешь к следуюущей части делимого, опять делишь на делитель, частное приписываешь к старому частному и т.д. Это описание неточное, чтобы лучше понять алгоритм, дели числа столбиком, как в школе, и поймешь.

Приложение:

Ответ отправлен: 06.03.2004, 14:27
Отправитель: Foamplast


 Вопрос № 5040

Уважаемые Эксперты, вопрос новичка. Ранее занимался только аналоговой техникой, сейчас понадобились микроконтроллеры и естественно ассемблер. Начал с уроков О.А.Калашникова и как, собака, всё понимаю, а попробовать не могу. У меня Win XP pro (оригинал) без всякой руссификации (портит шрифты). Скачал программы у автора, а что дальше, он не написал. Т.е. в каком порядке их и, главное для чего и КАК применять. MASM6.11 имеет вообще 4 папки: BIN, HELP, INCLUDE, SAMPLES и 4 текстовых файла. Никаких запускающих файлов нет. Из Softice v.4.0 запускается только небольшое окно „WLDR“. Вопрос: чего делать дальше, как пробовать программы? Когда-то я баловался программами более высокого уровня, там была прим. такая система: 1)пишется текстовый файл в любом редакторе, 2)затем он проверяется на синтакситечские ошибки, 3) кажется, компиллировался с отловом ошибок программных, 4) и в конце прог. можно было прокатывать даже по шагам, наблюдая состояние каждого регистра. Помогите пожалуйста, спасибо. brosaus



Вопрос отправлен: 04.03.2004, 16:47
Отправитель: Brosaus

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

Отвечает Gibbel

Здравствуйте, Brosaus!
Все точно также - набираете в текстовом редакторе текст программы, ассемблируете, запускаете/отлаживаете.
А вообще, внимательнее читайте уроки Калашникова - там в самом начале все подробно расписывалось.

Ответ отправлен: 04.03.2004, 17:18
Отправитель: Gibbel


 Вопрос № 5041

Здравствуйте эксперты!!!
Я хочу задать вам вопросик, правда не совсем по теме.
Возникла такая проблема:
Есть комп Pentium 3GHz, мать 4PCA3,Intel 875,GF FX 5700
HDD 120,DDR 512, блок питания 350W
Он не хочет работать.
Когда вклячаю питание то кулеры сделают 1,2 оборота и вырубаются, далее все глухо. В блоке питания есть два разема питания которые подключаются на мать, один обычный ATX1, второй ATX2 12V 4 pin. Если оставляю питание ATX1 все кулеры начинают работать. На мамке есть индекатор который выводит код ошибки. Всегда выдает код FF (в мануале пишется что что-то неправильно подключено или ошибка в BIOS) но комп только что из магазина.
Я не знаю что делать, оборудование то дорогое (даже очень).
Помогите please, а то, что я только не делал ничего не выходит.
P.S.:
Извините что вопрос не в тему.



Вопрос отправлен: 04.03.2004, 17:57
Отправитель: GreS (prm_serg@list.ru)

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

Отвечает Snowm@n

Доброе время суток, GreS!
А гарантия вам на что?

Ответ отправлен: 05.03.2004, 20:24
Отправитель: Snowm@n


Отвечает Foamplast

Добрый день, GreS!
Обратись в магазин.


Ответ отправлен: 06.03.2004, 14:28
Отправитель: Foamplast


 Вопрос № 5042

Вопрос № 5040
Спасибо Уважаемый Gibbel, я перечитал предисловие у Калашникова, но у меня не вызываются MASM.EXE и ML.EXE, они только пролетают мгновенно по экрану. Функционирует ли MASM 6… под XP? Я хотел попробовать переустановить, при этом задаётся вопрос о системе: „DOS/Win NT ; MS-DOS/MS Windows; MS Win NT“. Исходя из Вашего опыта, нажимать неглядя „ВВОД“ и устанавливать по умолчанию или искать старый РС с Win-95? Спасибо



Вопрос отправлен: 04.03.2004, 18:52
Отправитель: Brosaus

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

Отвечает Gibbel

Доброе время суток, Brosaus!
1. Запускайте файлы из какой-либо оболочки, например FAR.
2. MASM 6 прекрасно функционирует по WinXP (только что им собирал программу)
3. Выбирайте установку DOS/Windows, В остальном нажимайте везде Enter - он встанет в C:\masm611. Сам компилятор окажется в каталоге C:\masm611\bin
4. А почему сразу Win95, если вы учитесь по Калашникову, то вам нужен MS-DOS ;-). А вообще, подойдет любая система, поддерживающая исполнение DOS-программ...

Ответ отправлен: 04.03.2004, 19:28
Отправитель: Gibbel


 Вопрос № 5043

Здравствуйте уважаемые эксперты!!!
Немогли бы вы подсказать как пограмно перемножить две матрицы 3x3 или nxn, если можно с примером!!!
Зарание спасибо!!!



Вопрос отправлен: 04.03.2004, 20:05
Отправитель: Гошт (twixt@rambler.ru)

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

Отвечает HertZ

Добрый день, Гошт!
Проще и быстрее использовать MMX, все выполняется прозрачно и максимальо быстро

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


Отвечает VOVAN

Здравствуйте, Гошт!
реализация на паскале. на асме делать лень, делай сам.


Приложение:

Ответ отправлен: 05.03.2004, 15:35
Отправитель: VOVAN


Отвечает vitya

Здравствуйте, Гошт!
любая книжка по линейной алгербре расскажет тебе об этом.
Если у тебя возникнет вопрос во время реализации - задай конкретно его.

Ответ отправлен: 05.03.2004, 08:43
Отправитель: vitya


Отвечает Foamplast

Добрый день, Гошт!
Берёшь и перемножаешь.
А в чём вопрос?


Ответ отправлен: 06.03.2004, 14:36
Отправитель: Foamplast


 Вопрос № 5044

Каким образом можно узнать состояние модема, есть входящий звонок или нет, если можно пример или ссылку.



Вопрос отправлен: 05.03.2004, 00:14
Отправитель: HertZ

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

Отвечает Snowm@n

Добрый день, HertZ!
Юзай RasAPI.

Ответ отправлен: 05.03.2004, 20:35
Отправитель: Snowm@n


Отвечает Foamplast

Приветствую Вас, HertZ!
RasGetConnectStatus

Ответ отправлен: 06.03.2004, 14:41
Отправитель: Foamplast


 Вопрос № 5045

подскажите, как работает защита программ от отладки, и как ее можно обойти



Вопрос отправлен: 05.03.2004, 00:50
Отправитель: HertZ

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

Отвечает Gibbel

Здравствуйте, HertZ!
Защита программ от отладки основана на известных багах существующих отладчиков. Однозначного ответа, как ее обойти, дать невозможно - надо знать, какие из антиотладочных трюков проходят на вашем отладчике и, в ходе отладки, обходить их.


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


Отвечает Snowm@n

Доброе время суток, HertZ!
http://www.cracklab.narod.ru


Ответ отправлен: 05.03.2004, 20:36
Отправитель: Snowm@n



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

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (29)
C / C++ (20)
Perl (3)
Builder / Delphi (17)
Pascal (21)
Basic / VBA (9)
Java / JavaScript (5)
PHP (12)
Криптография (7)
WinAPI (16)
Радиоэлектроника (10)
Пользователю
Windows 95/98/Me (38)
Windows NT/2000/XP (58)
"Железо" (33)
Поиск информации (18)
Администратору
Windows NT/2000/XP (28)
Linux / Unix (11)
Юристу
Гражданское право (15)
Семейное право (12)
Трудовое право (12)
КоАП (10)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.


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

В избранное