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

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


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

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

Выпуск № 650
от 14.10.2003, 03:10

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


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

Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.88
URL: Программирование
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 140.17
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.06
[Подробней >>]
 
_vt
Статус: Профессиональный
Общий рейтинг: 122.07
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 112.83
[Подробней >>]
Shef
Статус: Начальный
Общий рейтинг: 103.73
[Подробней >>]
 
Maverick
Статус: Профессиональный
Общий рейтинг: 123.75
URL: Эхоконференция по вирмейкингу
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 106.73
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 110.93
[Подробней >>]
 
dr_dolphin
Статус: Начальный
Общий рейтинг: 120.58
[Подробней >>]


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

Вопрос № 4285. Здравствуйте, Bob Johnson!! Это снова я, как-то у вас спрашивал, как делать инсталлятор. Я его та... (ответов: 1)
Вопрос № 4286. Приветствую! Есть такая задача, вводятся две строки буфер1 и буфер2. В буфер1 находится только одно ... (ответов: 2)
Вопрос № 4287. Доброго времени суток уважаемые эксперты Мдя по существу на вопрос не кто не ответил.... Задаю его ... (ответов: 1)
Вопрос № 4290. Вывод данных в видеобуфер консольной программы из своей программы под Windows. Если можна примерчики... (ответов: 2)
Вопрос № 4291. физкульт привет господа ассемблерщики)) у меня вот такой вопрос возник: при попытке сассемблировать ... (ответов: 5)
Вопрос № 4292. Здравствуйте, уважаемые господа эксперты. Не подскажет ли кто (на примере) как переключать обработчи... (ответов: 2)
Вопрос № 4293. Скажите ,пожалуйста , где мне найти файл 004.html для продолжения изучения ассемблера?... (ответов: 2)
Вопрос № 4294. Как-то проскакивала инфоормация, что от Intel можно получить CD с manual. Излазил весь их сайт, ниче... (ответов: 3)
Вопрос № 4295. Уважаемый эксперт _vt. Не то чтоб я не доверял господину Брауну но неужели описание типа " MS M... (ответов: 2)
Вопрос № 4296. УВажаемый, Евгений Иванов. Спасибо за ваш ответ. Но у меня появился ещё вопрос. В конце Вашего ответ... (ответов: 1)
Вопрос № 4297. Драсте! У меня вопрос по поводу Win, где можно найти значение (код) сообщений (т.е. например что WM_... (ответов: 5)

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


 Вопрос № 4285

Здравствуйте, Bob Johnson!!
Это снова я, как-то у вас спрашивал, как делать инсталлятор.
Я его так и не сделал, забросил это дело - лень было, да и в PE-формат не очень въезжаю. Вот.
Так вот, недавно от балды что-то пробовал сделать:
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
invoke FindResource,hInstance,RD_MGS,RT_RCDATA
invoke LoadResource,hInstance,eax
mov TVar,eax
invoke CreateFile,offset MsgB,GENERIC_READ or GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_ARCHIVE,NULL
mov fHandle,eax
invoke WriteFile,fHandle,TVar,sizeof TVar,ADDR SizeReadWrite,NULL
invoke CloseHandle,fHandle
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Это я просто хотел вытащить файл из ресурсов и сохранить на диск. В общем, это не работает, поэтому хотел вас попросить, чтобы вы выслали кусок кода, который достаёт файл из ресурсов и сохраняет его на диск. За это я вам буду очень благодарен. "Зачем мне твоя благодарность?" может, ответите вы. Ну, так Благо дарить вам буду, на ментальном уровне. Посмотрите, как у вас будут дела идти в ближайший месяц, если хорошо значит ваш ответ меня устроил :).
Большое спасибо (почему-то почти каждый раз как пишу "спасибо" забываю написать букву "а" (с первого раза)).
С уважением,
Drahus.



Вопрос отправлен: 08.10.2003, 19:28
Отправитель: Drahus (Drahus@yandex.ru)

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

Отвечает Bob Johnson

Приветствую Вас, Drahus!
Тебе не хватает вызова функций GlobalLock и GlobalUnlock, т.к. LoadResource возвращает не указать на память, а хэндл.

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


Ответ отправлен: 11.10.2003, 01:21
Отправитель: Bob Johnson


 Вопрос № 4286

Приветствую!
Есть такая задача, вводятся две строки буфер1 и буфер2.
В буфер1 находится только одно слово, нужно сравнить это слово с каждым словом из буфер2 и вывести на экран те слова, которые отличаются не больше чем на 2 символа и размер одинаковый.
В Асме новичек. Помогите разобраться в следующих вопросах:
1)Как считать в ТемпБуфер слово из буфер2 до пробела?
2)Есть ли функция сравнений длин строк?
3)Как организовать посимвольное сравнение слова в буфер1 со словом из ТемпБуфера?
Очень прошу помочь... завтра сдавать...
Спасибо заранее за любую помощь!



Вопрос отправлен: 08.10.2003, 20:22
Отправитель: Игорь (technos@takas.lt)

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

Отвечает Bob Johnson

Здравствуйте, Игорь!
1. Посимвольно, до тех пор пока не встретишь пробел (или конец строки):
m1:
mov al, [esi]
cmp al, ' '
jz Found_Space
test al, al
jz String_End
mov [edi], al
inc esi
inc edi
jmp m1
2. Есть функция вычисления длины строки: lstrlen. Сравнишь сам с помощью cmp.
3. Так же:
mov al, [esi]
cmp al, [edi]
jnz Not_Equal
inc esi
inc edi
...

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


Ответ отправлен: 11.10.2003, 01:22
Отправитель: Bob Johnson


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

Здравствуйте, Игорь!
1.
mov edi, ofs tmp
mov esi, ofs buf2
m1:
mov al, [esi]
or al, al
jz end
cmp al, 32
jz m2
inc esi
stosb
jmp m1
m2:
end:
2.
call getstrlen, ofs tmp
xchg ebx, eax
call getstrlen, ofs buf2
cmp eax, ebx
jz equal
notequal:
;...
equal:
3.
mov esi, ofs buf1
mov edi, ofs tmp
m5:
mov al, [esi]
or al, al
jz m7
cmp al, [edi]
jnz noequal_0
inc edi
inc esi
jmp m5
m7:
cmp al, [edi]
jnz noequal_0
equal_0
;...
noequal_0:

* EMan1.5: ---===*** Love is real! ***===---


Ответ отправлен: 09.10.2003, 10:54
Отправитель: Евгений Иванов


 Вопрос № 4287

Доброго времени суток уважаемые эксперты
Мдя по существу на вопрос не кто не ответил....
Задаю его ещё раз......только на этот раз с пояснением
я вот например програмировал на дельфи там было проще - существовали стандартные компоненты.....тут же сложнее......потому и задал вопрос.....
Я понимаю что нужны API функции... но не ужели так трудно сказать какие?
И ещё а как тогда осуществляются комуникации в DOSе?
Я просто хочу узнать а как осуществляються комуникации на мащинном уровне....например если у на с не виндовс и дос.....а скажем своя операционка.....и вобще реально ли это?
С уважением Same



Вопрос отправлен: 08.10.2003, 20:41
Отправитель: Same

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

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

Приветствую Вас, Same!
Через те же прерывания.

* EMan1.5: ---===*** Love is real! ***===---


Ответ отправлен: 09.10.2003, 10:54
Отправитель: Евгений Иванов


 Вопрос № 4290

Вывод данных в видеобуфер консольной программы из своей программы под Windows. Если можна примерчики.



Вопрос отправлен: 09.10.2003, 04:38
Отправитель: new2 (Lameer@rambler.ru)

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

Отвечает Bob Johnson

Здравствуйте, new2!
AllocConsole. Остальные функции найдешь по See Also.
Обычно выводят WriteFile (WriteConsole). Можно копировать сразу блоками.

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


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


Отвечает vitya

Добрый день, new2!
в видеобуффер писать не удастся. зато можно просто писать туда текст в помощью функций WriteConsole... семейство.

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


 Вопрос № 4291

физкульт привет господа ассемблерщики))
у меня вот такой вопрос возник:
при попытке сассемблировать ком файл тасм пишет:
"Fatal: Cannot generate COM file : data below initial CS:IP defined", подскажите пожалуйста что это значит, и чтоб я впредб не лез с дурацкими вопросами подскажите где можно найти справочник по ответам тасма, масма, и справочник по прерываниям



Вопрос отправлен: 09.10.2003, 10:19
Отправитель: начинающий кодер

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

Отвечает _vt

Добрый день, начинающий кодер!
Скорее всего в начале программы нет строки
org 100h

*** E-Man - we are waiting for you ***


Ответ отправлен: 09.10.2003, 22:02
Отправитель: _vt


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

Доброе время суток, начинающий кодер!
Такое сообщение выдается, когда при создании COM-файла точка входа в программу,
указанная директивой END, находится не по смещению 100h.


Ответ отправлен: 11.10.2003, 13:12
Отправитель: ASMодей


Отвечает Shef

Приветствую Вас, начинающий кодер!
Скорее всего, в начале исходника объявлены переменные...
Все данные лучше засовывать в конец файла, после команд завершения программы.
А так без кода сказать сходу сложно.

Ответ отправлен: 10.10.2003, 10:42
Отправитель: Shef


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

Приветствую Вас, начинающий кодер!
Это пишет связной, а не Ассемблер!
данные располагаются по адресу менее 256.

* EMan1.5: ---===*** Love is real! ***===---


Ответ отправлен: 09.10.2003, 11:21
Отправитель: Евгений Иванов


Отвечает Bob Johnson

Добрый день, начинающий кодер!
Com файл должен начинаться со 100h. В этом месте у него и должна быть entry point. Перед ней не может быть определено ни данных, ни какого-либо другого кода.

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


Ответ отправлен: 11.10.2003, 01:24
Отправитель: Bob Johnson


 Вопрос № 4292

Здравствуйте, уважаемые господа эксперты. Не подскажет ли кто (на примере) как переключать обработчики событий мыши
функцией 014h 33h-го прерывания?



Вопрос отправлен: 09.10.2003, 19:48
Отправитель: Мирослав Махрук

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

Отвечает _vt

Приветствую Вас, Мирослав Махрук!
Только что полистал Ральфа Брауна - всё очень подробно описано... В чём проблемы-то?? Обращайся конкретнее, не кидать же кБайты описания и не придумывать же за тебя код...

*** E-Man - we are waiting for you ***


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


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

Приветствую Вас, Мирослав Махрук!
Вот из игры Калах в моей программе:
sub ax,ax ;Установка мышки,если нет её,то свой "обработчик"
int 51
or ax,ax
jnz yes_mouse
push es ;Сохраним прежний обработчик мышки
mov ax,3533h
int 33
mov wptr [OLD_INT33],bx
mov wptr [OLD_INT33+2],es
pop es
mov ax,2533h
mov dx,ofs int51entry
int 33
or bptr [bp+FL_1-dat],m mouse
jmp no_mouse
yes_mouse:
mov ax,0Ch ;Подпрограмма событий всех
mov cx,1Fh
mov dx,ofs mou_sub
int 51
mov ax,7 ;Область доступности хождения
sub cx,cx
mov dx,Xmax-3
int 51
mov ax,8
sub cx,cx
mov dx,Ymax-3
int 51
proc mou_sub far ;==================================================
or bptr [cs:fUpr],m MoveMou
cmp dx,PauseY
ja mou_1
cmp cx,PauseX
jc mou_1
mov wptr [cs:fPause],0
retf
mou_1:
mov ax,wptr [cs:dPause]
mov wptr [cs:fPause],ax
retf
endp
no_mouse:
Наталье привет!

* EMan1.5: ---===*** Love is real! ***===---


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


 Вопрос № 4293

Скажите ,пожалуйста , где мне найти файл 004.html для продолжения изучения ассемблера?



Вопрос отправлен: 09.10.2003, 22:28
Отправитель: Виталик

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

Отвечает _vt

Здравствуйте, Виталик!
Скачай архив всех выпусков рассылки по DOS c сайта Олега Калашникова - www.kalashnikoff.ru...

*** E-Man - we are waiting for you ***


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


Отвечает Maverick

Здравствуйте, Виталик!
Создай его, блин >:(((
Во Front Page....
Такой короткий вопрос и такой поразительно тупой.
На субскрайбе, там есть архив всей рассылки.
В интеренете, можно ведь найти.
У Боба на страничке есть.
Если лень искать, то хотя бы мыло оставил, я б тебе выслал и 4 и 34....
Извини, конечно, за "наезд", но как ты будешь изучать ассемблер, если в таких вещах глючишь.
И еще в догонку, что ты подразумеваешь под 004.html???
Я то догадался, а вот другие? У меня на винчестере 53 файла с таким названием, специально для тебя искал :) Все слать?


Ответ отправлен: 10.10.2003, 11:44
Отправитель: Maverick


 Вопрос № 4294

Как-то проскакивала инфоормация, что от Intel можно получить CD с manual. Излазил весь их сайт, ничего не нашёл, скажите поконкретней, хотя бы в каком разделе находится.



Вопрос отправлен: 10.10.2003, 00:11
Отправитель: darknez

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

Отвечает Gibbel

Здравствуйте, darknez!
Ну, во-первых, не CD, а книги. Они рассылаются Intelом бесплатно. ищи на developer.intel.com
А CD можно заказать в AMD ;-) Только для этого по телефону к ним звонить надо для подтверждения заказа... :-(

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


Отвечает Maverick

Здравствуйте, darknez!
CD незнаю, не слушал. А вот книги можно. Я не помню точный адрес, но буквально пару рассылок назад он был. Погляди в базе.


Ответ отправлен: 10.10.2003, 11:44
Отправитель: Maverick


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

Здравствуйте, darknez!
Я уже получил эти четыре замечательные книги и сейчас наслаждаюсь их чтением!
Просто бесподобно написано!
Смотри мой дневник на моём сайте за 21.7.2003
Там есть ссылка!
Хотя не буду вредничать - вот она:
http://developer.intel.com/design/pentium4/manuals/

* EMan1.5: ---===*** Love is real! ***===---


Ответ отправлен: 10.10.2003, 01:04
Отправитель: Евгений Иванов


 Вопрос № 4295

Уважаемый эксперт _vt. Не то чтоб я не доверял господину Брауну но неужели описание типа
"
MS MOUSE v3.0+ - EXCHANGE INTERRUPT SUBROUTINES
AX = 0014h
CX = call mask (see #03171)
ES:DX -> FAR routine
Return:CX = call mask of previous interrupt routine
ES:DX = FAR address of previous interrupt routine
"
вы называете понятным?
это описание функции из "Списка Прерываний Ральфа Брауна" взятое на сайте http://www.ctyme.com зайдите и у бедитесь сами.
а код за меня писать не нужно, но спасибо за заботу.



Вопрос отправлен: 10.10.2003, 00:26
Отправитель: Мирослав Махрук

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

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

Доброе время суток, Мирослав Махрук!
Помимо Interrupt List неплохо иметь и альтернативные источники информации,
например тот же XVIEW, где и написано то, что я привел в приложении.


Приложение:

Ответ отправлен: 11.10.2003, 13:14
Отправитель: ASMодей


Отвечает _vt

Здравствуйте, Мирослав Махрук!
Может ответ мой показался слишком резким, тогда извините...
> зайдите и убедитесь сами
Перед тем как ответить я прочитал это описание, у меня оно есть...
Я из следующего получил следующую информацию:
При вызове функции 14h мышиного прерывания следует указать в ES:DX адрес обработчика (причем он должен быть дальнего вызова) для события(событий), указанных в маске, которая лежит в CX... Формат маски описывается в таблице 3171, посмотрев которую, я вижу какой надо установить бит для нужного мне события от мыши (mousemove, leftclick, rightclick и др.). На выходе из прерывания можно "забрать" адрес и маску предыдущего обработчика событий... Что же вам собственно не ясно?

*** E-Man - we are waiting for you ***


Ответ отправлен: 10.10.2003, 01:17
Отправитель: _vt


 Вопрос № 4296

УВажаемый, Евгений Иванов. Спасибо за ваш ответ. Но у меня появился ещё вопрос. В конце Вашего ответа есть приписка "Привет Наталье". Я знаком с девушкой по имени Наталья и соответственно вопрос - Вы знаете меня? Или это какая-то другая Наталья и это просто совпадение?



Вопрос отправлен: 10.10.2003, 00:35
Отправитель: Мирослав Махрук

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

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

Доброе ночное время суток, Мирослав.
Вас я не знаю, но интересно, кто Вы и чем занимаетесь?
Зачем Вам мышь?
Можно Ваш e-Mail?
Вообще проще через порты мышь "брать" :-)
А это функция - она всё таки 20-я - позволяет установить свой обработчик для обработки событий мыши.
В CX - флаги событий.
И при совпадении этих событий будет вызываться ваша подпрограмма - она дальняя...
Наталья тоже недавно начала читать нашу рассылку, и она мне очень дорога как человек и как девушка, поэтому я решил поднять ей настроение (через 4 дня :-)... Прям машина времени! :)

* EMan1.5: ---===*** Love is real! ***===---


Ответ отправлен: 10.10.2003, 01:19
Отправитель: Евгений Иванов


 Вопрос № 4297

Драсте!
У меня вопрос по поводу Win, где можно найти значение (код) сообщений (т.е. например что WM_SETTEXT имеет значение 111h), есть какой либо help по этому поводу. Вообщем где взять инфы.
Заранее спасибо.
PS: По поводу Вопроса № 4275, прошу пращения у _vt и ASMодей, дело в том что у Зубкова написано что FS появился у 80286 (может опечатка), а самому мне както не приходилось им пользоваться.



Вопрос отправлен: 10.10.2003, 03:03
Отправитель: паша

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

Отвечает Dark_Lord

Приветствую Вас, паша!
http://learnasm.narod.ru/download/windef.rar

Ответ отправлен: 10.10.2003, 17:25
Отправитель: Dark_Lord


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

Доброе время суток, паша!
Все значения постоянных хранятся во включаемых файлах *.h
В Ассемблере обычно *.inc
Все эти файлы хранятся в каталоге INCLUDE.
Насчёт FS - а чего там! Обычный сегментный регистр - бери и используй!
Я вот создавал программы для ДОС-а - так его использовал для доступа к ещё одному нужному мне сегменту данных. Дольше конечно это выполняется, но я ещё тогда мало понимал - зелёный был: надо смотреть по алгоритму, где что лучше применять...
Удачи!

* EMan1.5: ---===*** Love is real! ***===---


Ответ отправлен: 10.10.2003, 09:55
Отправитель: Евгений Иванов


Отвечает dr_dolphin

Приветствую Вас, паша!
В MS Visual Studio заголовочный файл winuser.h
Пока !


Ответ отправлен: 10.10.2003, 10:22
Отправитель: dr_dolphin


Отвечает _vt

Добрый день, паша!
Как это где? В сишных хэдерах... Берешь Visual C++ или Borland C++Builder и смотришь в *.h-файлах нужные значения... Если тебе нужно для перевода на язык ассемблера - готовые *.inc-файлы есть в пакете MASM32 и в Borland CBuilder( некоторые и с ошибками:( )...

*** E-Man - we are waiting for you ***


Ответ отправлен: 10.10.2003, 04:03
Отправитель: _vt


Отвечает Bob Johnson

Приветствую Вас, паша!
Это есть в h файлах от MS Visual C++ или Borland C++ Builder.

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


Ответ отправлен: 11.10.2003, 01:24
Отправитель: Bob Johnson



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (31)
C / C++ (30)
Perl (8)
Builder / Delphi (24)
Pascal (24)
Basic / VBA (9)
Java / JavaScript (8)
PHP (12)
Криптография (9)
WinAPI (15)
Пользователю
Windows 95/98/Me (54)
Windows NT/2000/XP (60)
"Железо" (39)
Поиск информации (29)
Администратору
Windows NT/2000/XP (35)
Linux / Unix (16)
Юристу
Гражданское право (12)
Семейное право (9)
Трудовое право (9)
КоАП (9)

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




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


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


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

В избранное