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

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


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

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

Выпуск № 766
от 06.09.2004, 11:10

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


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

Tigran K. Kalaidjian
Статус: Профессиональный
Общий рейтинг: 185.06
URL: Персональная страничка
[Подробней >>]
Алексей
Статус: Доверительный
Общий рейтинг: 150
[Подробней >>]
Александр
Статус: Начальный
Общий рейтинг: 153.84
[Подробней >>]
 
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 132.92
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
SackTap
Статус: Доверительный
Общий рейтинг: 111.79
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 118.08
[Подробней >>]
 
Artemy
Статус: Опытный
Общий рейтинг: 108.51
Телефон: 8 905 549 38 66
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 134.71
URL: Программирование
[Подробней >>]
bocha
Статус: Профессиональный
Общий рейтинг: 123.27
[Подробней >>]
 
Стас
Статус: Опытный
Общий рейтинг: 122.18
[Подробней >>]


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

Вопрос № 5791. Доброго времени суток :))) 2Тигран : Вы без указанного ключа линковали успешно ? 2Александр : Это пр... (ответов: 1)
Вопрос № 5792. Господа, прошу прощения за беспокойство - до меня дошло :))) Если кому интересно : call dword ptr _l... (ответов: 2)
Вопрос № 5793. Можно ли создать окно нестандартной формы, в смысле не в виде прямоугольника а, например, в виде тре... (ответов: 6)
Вопрос № 5794. C funkciya s prototipom int decode2(int x, int y, int z); kompilirovana v assembler kod. The body... (ответов: 1)
Вопрос № 5795. Привет, извините, что не в тему! Помогите разобраться со следующей проблемой: В программе создается ... (ответов: 2)
Вопрос № 5796. Здравствуйте! Подскажите, пожалуйста, где взять информацию по режимам и распределению видеопамяти, к... (ответов: 3)
Вопрос № 5797. Здравствуйте уважаемые эксперты! Пишу в первый раз, так как все вопросы пытаюсь решить своими силами... (ответов: 3)
Вопрос № 5798. Здрасвуйте. Помогите разобраться в функции FindFirstFileEX. Чёто она не работает... (ответов: 1)
Вопрос № 5799. Приветсвую всех! Народ, пожалуйста подскажите как быть с мат. сопрпоцессором. Вот как он работает с... (ответов: 5)
Вопрос № 5800. Здравствуйте,подскажите как можно сделать чтобы патч не проверял CRC или ,как выставить в этом патче... (ответов: 3)

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


 Вопрос № 5791

Доброго времени суток :)))
2Тигран : Вы без указанного ключа линковали успешно ?
2Александр : Это прыжок... Прыгать я умею :))) Меня вызов интересует...
2Алексей : А без сохранения руками в стеке call'ом никак ?
Я извиняюсь за назойливость, но ситуация такова :
Задали мне писать ... эээ ... "компилятор", причем в задании указано, что в тексте может встретиться межсегментный call... Меня не волнует, как ЕЩЕ можно сделать вызов :))) Вот я себе уже голову сломал - это у задание кривое или я такой тормоз...
Будьте так добры, убедите меня в первом :)))
Или, может, завалялся где-нить такой вызов загадочный ?..
Спасибо :)))
S/



Вопрос отправлен: 30.08.2004, 13:56
Отправитель: Sslash (assem@ukr.net)

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

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

Доброе время суток, Sslash!
По поводу части вопроса, которая мне предназначена. Ответ: да.

Ответ отправлен: 03.09.2004, 19:58
Отправитель: Tigran K. Kalaidjian


 Вопрос № 5792

Господа, прошу прощения за беспокойство - до меня дошло :)))
Если кому интересно :
call dword ptr _label_
По адресу _label_ валяются сегмент:смещение
И никаких push, jmp, etc. :)))



Вопрос отправлен: 30.08.2004, 14:12
Отправитель: Sslash (assem@ukr.net)

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

Отвечает Алексей

Доброе время суток, Sslash!
Однозначно, все гениальное просто ;)

Ответ отправлен: 30.08.2004, 16:49
Отправитель: Алексей


Отвечает Александр

Привет, Sslash!
№ 5792 - нет, не извиню. }:-Е```.
Ты замени в моём ответе "jmp far ptr @@Tst" на "call far ptr @@Tst" - работаить.
И всё!
ПОКА. Александр.
p.s.
Твой вариант ("call dword ptr") используеться в прерываниях.

Ответ отправлен: 30.08.2004, 18:09
Отправитель: Александр


 Вопрос № 5793

Можно ли создать окно нестандартной формы, в смысле не в виде прямоугольника а, например, в виде треугольника или эллипса?



Вопрос отправлен: 30.08.2004, 18:50
Отправитель: geek

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

Отвечает Евгений Иванов

Доброе время суток, geek!
Можно.
Но обычно не нужно.
* EMan: -=- И легко перо, да на крышу не закинешь. =-=


Ответ отправлен: 01.09.2004, 14:12
Отправитель: Евгений Иванов


Отвечает SackTap

Доброе время суток, geek!
да, конечно, читайте документацию про регионы.

Ответ отправлен: 30.08.2004, 21:47
Отправитель: SackTap


Отвечает _vt

Доброе время суток, geek!
Кхм. Да. SetWindowRgn. Учти, что под ХР это некорректно работает - теряются стили ХР, хотя возможно, там нужно использовать дополнительные функции.
* Origin : Life begins at 1000Mhz!


Ответ отправлен: 02.09.2004, 23:54
Отправитель: _vt


Отвечает Александр

Доброе время суток, geek!
Посмотри файл: http://www.wasm.ru/src/1/rgn.zip
Александр.

Ответ отправлен: 31.08.2004, 07:13
Отправитель: Александр


Отвечает Artemy

Здравствуйте, geek!
Можно, используй SetWindowRegion.

Ответ отправлен: 31.08.2004, 09:10
Отправитель: Artemy


Отвечает Bob Johnson

Добрый день, geek!
Можно - создаешь регион любой (какой нужно) формы и вызываешь функцию
SetWindowRgn. Регион можно создать, например, с помощью: CreateRoundRectRgn

* EMan1.5: ---===*** The game we play ***===---


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


 Вопрос № 5794

C funkciya s prototipom
int decode2(int x, int y, int z);
kompilirovana v assembler kod. The body of the code is
movl 16(%ebp), %eax
movl 12(%ebp), %edx
subl %eax, %edx
movl %edx, %eax
imull 8(%ebp), %edx
sall $31, %eax
sarl $31, %eax
xorl %edx, %eax
x, y, and z are stored in memory locations with ofsets 8, 12, and
16 relative to the address in register %ebp; and the returned value
is left in register %eax.
Pomogite pojaluisto napisat C code body that will have an equivalent effect to the
assembly language code.
Zaranee Spasibo Jenya.



Вопрос отправлен: 31.08.2004, 11:47
Отправитель: Jenya (welcome_to_m@mail.ru)

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

Отвечает Алексей

Добрый день, Jenya!
int decode2(int x, int y, int z){
return (((z-y)*x) && 1)^(z-y);
}

Ответ отправлен: 31.08.2004, 12:13
Отправитель: Алексей


 Вопрос № 5795

Привет, извините, что не в тему!
Помогите разобраться со следующей проблемой:
В программе создается список top-level окон (заголовок и хэндл). Все это выводится в listbox.
После выбора окна из списка и нажатия кнопки destroy (void inline OnDestroyWindow()) окно (приложение)
должно уничтожиться. Ну так вот - со всеми окнами, кроме окон проводника, это работает, окна проводника же
не закрываются... В чем тут может быть дело помимо кривых рук ;)
Спасибо всем сочувствующим. Ответ можно на ASM или ткните в MSDN.
З.Ы. Win98, VC6.0, код:
WORD CountOfWindows;
typedef struct _wininfo
{
char caption[256];
HWND hwnd;
} WININFO;
.
.
.
BOOL inline GetWindowsList(HWND hDlg)
{
CountOfWindows = 0;
ZeroMemory(WinInfo, sizeof(WININFO)*128);
WORD count = 0;
EnumWindows(EnumWindowsProc, NULL);
windows_list = GetDlgItem(hDlg, WINDOWS_LIST);
SendMessage(windows_list, LB_RESETCONT ENT, 0, 0);
while(WinInfo[count].hwnd)
SendMessage(windows_list, LB_ADDSTRING, 0, (LPARAM)(LPCTSTR)WinInfo[count++].caption);
return TRUE;
}
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
if(IsWindowVisible(hwnd) && GetWindowText(hwnd, WinInfo[CountOfWindows].caption, 256) && lstrcmp(WinInfo[CountOfWindows].caption, "Program Manager") && !GetParent(hwnd))
{
if(CountOfWindows)
for(int i = CountOfWindows; i; i--)
{
if(!lstrcmp(WinInfo[CountOfWindows].caption, WinInfo[i-1].caption))
{
WinInfo[CountOfWindows].caption[0] = '';
return TRUE;
}
}
WinInfo[CountOfWindows++].hwnd = hwnd;
}
return TRUE;
}
void inline OnDestroyWindow()
{
char data[256];
INT i = -1;
SendMessage(windows_list, LB_GETTEXT, SendMessage(windows_list, LB_GETCURSEL, 0, 0), (LPARAM)data);
while(WinInfo[++i].hwnd)
{
if(!lstrcmp(WinInfo[i].caption, data))
{
PostThreadMessage(GetWindowThreadProcessId(WinInfo[i].hwnd, NULL), WM_QUIT, 0, NULL);
return;
}
}
return;
}
P.S. Если повтор - sorry, подтверждения о доставке так и не получил...



Вопрос отправлен: 31.08.2004, 15:57
Отправитель: Nimnull

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

Отвечает Artemy

Доброе время суток, Nimnull!


Приложение:

Ответ отправлен: 31.08.2004, 17:47
Отправитель: Artemy


Отвечает Bob Johnson

Приветствую Вас, Nimnull!
а как ты их закрываешь-то?
можно попробовать посылать WM_CLOSE

* EMan1.5: ---===*** The game we play ***===---


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


 Вопрос № 5796

Здравствуйте! Подскажите, пожалуйста, где взять информацию по режимам и распределению видеопамяти, как хранится информация о цвете; то есть как поставить, например, точку (100,50) красного цвета?



Вопрос отправлен: 31.08.2004, 18:46
Отправитель: iron (dimon4386@yandex.ru)

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

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

Здравствуйте, iron!
У Зубкова http://www.bobjohnson.nm.ru/files/zubkov.zip
описание прерывания int 10h смотрите у Ральфа Брауна.
Вот список основных цветов:
000b black dark gray
001b blue light blue
010b green light green
011b cyan light cyan
100b red light red
101b magenta light magenta
110b brown yellow
111b light gray white

Нужная Вам программа - во вложении.

Приложение:

Ответ отправлен: 01.09.2004, 20:29
Отправитель: Tigran K. Kalaidjian


Отвечает Александр

Добрый день, iron!
Первое: надо указывать в каком режиме ставить точку. (|-)))).
Второе: у меня есть немного доков, пиши на yaamail@rambler.ru.
Чем могу - помогу.
С Уважением,
Александр.


Ответ отправлен: 01.09.2004, 09:58
Отправитель: Александр


Отвечает Алексей

Доброе время суток, iron!
Все просто. Бывает два типа графики (на самом деле больше).
Первый - через сервис БИОС: там максимум, который можно выжать - 640x480 16 цветов, 320x240 256 цветов. Если нужно "круче", то VESA. Там все посложней, но на самом деле тоже просто. Напиши мне clover@fromru.com, я тебе вышлю все, что нужно, даже с исходниками ;)

Ответ отправлен: 01.09.2004, 13:16
Отправитель: Алексей


 Вопрос № 5797

Здравствуйте уважаемые эксперты! Пишу в первый раз, так как все вопросы пытаюсь решить своими силами (читай мозгами).
Изучаю АСМ по книге и там такое задание:Написать программу, генерирующую и отображающую последовательность первых 24 чисел в диапазоне от 1 до 46368:
1,1,2,3,5,8,13,21,34, и т.п.(каждое число после второй единицы - сумма двух предыдущих.
Проблема в отображении этой последовательности.
Всем огромное спасибо за ответы.
(прога для ДОС, Масм.)


Приложение:


Вопрос отправлен: 01.09.2004, 11:50
Отправитель: Johner

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

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

Добрый день, Johner!
Читай RusFAQ.ru Assembler FAQ
http://kalaidjian.pochtamt.ru/rusfaq.rar
2All: сайт работал некорректно - сейчас выправил. Ох уж мне этот бесплатный хостинг - творят, что хотят...

Ответ отправлен: 01.09.2004, 20:08
Отправитель: Tigran K. Kalaidjian


Отвечает bocha

Добрый день, Johner!
напиши процедуру перевода числа в строку, алгоритм примерно такой: делим число на осрнование системы счисления, остаток - цифра, переводим ее в символ, заносим в массив, повторяем пока исходное число больше ноля, инвертируем массив.

Ответ отправлен: 01.09.2004, 13:46
Отправитель: bocha


Отвечает Алексей

Здравствуйте, Johner!
Держи процедурку ;) работает через биосовский сервис (даже дос не нужен) в eax запихиваешь число и вызываешь...

Приложение:

Ответ отправлен: 01.09.2004, 13:10
Отправитель: Алексей


 Вопрос № 5798

Здрасвуйте.
Помогите разобраться в функции FindFirstFileEX.
Чёто она не работает


Приложение:


Вопрос отправлен: 01.09.2004, 18:02
Отправитель: Семен

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

Отвечает Алексей

Доброе время суток, Семен!
как-будто все правильно на первый взгляд... не пробовал в пути после двоеточия слэш ставить (D:a.txt)

Ответ отправлен: 02.09.2004, 13:21
Отправитель: Алексей


 Вопрос № 5799

Приветсвую всех!
Народ, пожалуйста подскажите как быть с мат. сопрпоцессором. Вот как он работает с данными заранее вещ. числами это вроде как-то понятно, а вот что же делать, если надо их вводить вручную с клавиатуры? Ведь получается, что вводиться последовательность символов - то бишь уже строка. если бы эта строка не содержала буквенных символов, то тады спокойно можно было бы перевести её в число, но тут же имеется символ "е". Как же быть в таком случае с ним-то? Я же не могу ввести строку в стек и далее работать с ней. Или же может есть какой-либо другой способ для пересылки таких вот данных в стек?
Please, подскажите что именно я здесь не доганяю и как же решить эту проблему-то.
Заранее благодарю.



Вопрос отправлен: 01.09.2004, 23:41
Отправитель: Tiana (ptaniya@mail.ru)

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

Отвечает Александр

Добрый день, Tiana!
Действительно, ты кое-чего не "догоняеш".
Попытаюсь исправить:
Первое. Строку в любом случае надо сначало обработать - иначе злобный хакер может взорвать [со]процессор! ;)
Второе. Строка в стеке сопроцессора хранится в двоичном виде и мантисса - это 22-52 бита. Без всяки 'e'/'E'/'**' etc.
Дальше - сама.
Желаю моря удачи и дачи у моря.
Александр.

Ответ отправлен: 02.09.2004, 17:45
Отправитель: Александр


Отвечает Bob Johnson

Здравствуйте, Tiana!
надо писать процедуру перевода строки в вещественное число :)
то, что до "е" ты переводишь в обычное число, затем то, что после "е" тоже переводишь в другое число и затем умножаешь первое на 10 в степени второе

* EMan1.5: ---===*** The game we play ***===---


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


Отвечает Евгений Иванов

Добрый день, Tiana!
Милая моя, есть такая классная библиотека для HLA.
Это Ассемблер.
В ней есть все функции для работы со строчками, с числами и т.п.
Вот, скачивай с моего сайта:
http://superforest.narod.ru/add/hlalibsrc.rar
160 Кб, в распакованном виде 1.3 Мб.
В каталоге "conv" смотри эти функции.
Смотри подробнее файл "atof.hla".
/************************************************************/
/* */
/* atof- */
/* */
/* ESI points at a string of characters that represent a */
/* floating point value. This routine converts that string */
/* to the corresponding FP value and leaves the result on */
/* the top of the FPU stack. On return, ESI points at the */
/* first character this routine couldn't convert. */
/* */
/* Like the other ATOx routines, this routine raises an */
/* exception if there is a conversion error or if ESI */
/* contains NULL. */
/* */
/************************************************************/
Там всё на Ассемблере, так что бери и пользуйся, переводить в другой формат ассемблера несложно.
Удачи, Таня.
зы. появись в icq, пожалуйста! мне хочется с тобой пообщаться. ;)
Как у вас погода в Ташкенте?

* EMan: -=- И легко перо, да на крышу не закинешь. =-=


Ответ отправлен: 02.09.2004, 00:17
Отправитель: Евгений Иванов


Отвечает bocha

Здравствуйте, Tiana!
я в таких случаях пользуюсь includelib LIBC.LIB, там есть такая замечательная ф-я atof()

Ответ отправлен: 02.09.2004, 01:22
Отправитель: bocha


Отвечает Алексей

Добрый день, Tiana!
Ну все это конечно хорошо. Но:
1. При вводе строки можно попросить вводить без символов E, тогда все проблемы решены (хотя не все).
2. Если есть Е, то необходимо делать строчный разбор. Это сложный процесс...
3. Строку можно привести к двум целым числам: дробная часть (то, что после запятой) и, собственно, мантисса (то, что после Е). Например: введено число 123,456e2 нужно сначала нормализовать, т.е. 0,123456e5, а далее разбиваем на заветные 2 числа: 123456 и 5. После этого загружаем в st[0] первое число, а в st[1] второе число, возводим 10 в степень st[1] и умножаем полученное число на st[0]. В итоге имеем наше число в регистре мат. сопроцессора st[0]. Можно конечно не делать этих вычеслений, тогда мы должны знать формат, в котором хранится число в st[0] и грузить непосредственно в память. Если процесс непонятен - пиши на мыло, пришлю пример.

Ответ отправлен: 02.09.2004, 10:11
Отправитель: Алексей


 Вопрос № 5800

Здравствуйте,подскажите как можно сделать чтобы патч не проверял CRC или ,как выставить в этом патче CRC нужного мне EXE файла.Если можно подскажите как это сделать или посоветуйте что-то еще.Спасибо



Вопрос отправлен: 02.09.2004, 11:02
Отправитель: Станислав (STAS4may@mail.ru)

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

Отвечает Стас

Добрый день, Станислав !
Подсчитать самому и подставить CRC в патч.
Или перепрыгнуть проверку CRC, это дебагерром.

Ответ отправлен: 02.09.2004, 15:54
Отправитель: Стас


Отвечает _vt

Здравствуйте, Станислав !
Нужно найти переход к процедуре проверки, и поменять 75 на EB - проще некуда! ;-))
* Origin : Life begins at 1000Mhz!


Ответ отправлен: 02.09.2004, 23:54
Отправитель: _vt


Отвечает Алексей

Приветствую Вас, Станислав !
Если говорить напрямую, то в патчах обычно проверяется CRC только в случае, если этот патч может повредить файл .ЕХЕ. Ну, а если, рассматривать вопрос с твоей точки зрения: тебе нужно найти место в патче, где лежит этот CRC, пересчитать CRC твоего файла и записать туда. Это не сложно, если в программе используется стандартный метод подсчета CRC. А если нет, топридетсяискать формулу пересчета все в том же EXE... Это уже непросто. Проще отключить проверку на CRC. Для этого в EXEхе нужно искать место проверки этого CRC - это не просто, но возможно. И будет проще всего. Берешь Дизассемблер в руки (или SoftIce) и понеслась! Только ты скорее всего ничего не добъешься, потому как, если даже отключишь проверку - конечная программа скорее всего будет глючить ;(

Ответ отправлен: 02.09.2004, 13:17
Отправитель: Алексей



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (27)
C / C++ (15)
Perl (6)
Builder / Delphi (13)
Pascal (22)
Basic / VBA (4)
Java / JavaScript (5)
PHP (15)
Криптография (7)
WinAPI (13)
Радиоэлектроника (12)
Пользователю
Windows 95/98/Me (48)
Windows NT/2000/XP (63)
"Железо" (42)
Поиск информации (20)
Администратору
Windows NT/2000/XP (39)
Linux / Unix (14)
Юристу
Гражданское право (10)
Семейное право (7)
Трудовое право (9)
КоАП (7)

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




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


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

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться

В избранное