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

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


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

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

Выпуск № 732
от 28.05.2004, 21:20

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


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

Foamplast
Статус: Профессиональный
Общий рейтинг: 149.33
URL: мой личный сайт
[Подробней >>]
Pawel
Статус: Профессиональный
Общий рейтинг: 155.75
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 133.63
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
 
_vt
Статус: Профессиональный
Общий рейтинг: 118.76
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.62
[Подробней >>]
Стас
Статус: Доверительный
Общий рейтинг: 127.58
[Подробней >>]
 
ASMодей
Статус: Профессиональный
Общий рейтинг: 111.6
[Подробней >>]


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

Вопрос № 5318. Скажите пожалуйста,где можно найти руководство по работе с NASM,а то везде рассматривается в основно... (ответов: 4)
Вопрос № 5319. Можно ли писать mov cx,n-1 и вообще, когда можно писать не вычисленные выражения, а когда нельзя.... (ответов: 5)
Вопрос № 5320. Добрый день, эксперты. На вопрос 5289 о работе с портами в XP эксперт Foamplast предложил исходник н... (ответов: 1)
Вопрос № 5322. Здравствуйте, уважаемые эксперты! Извините за "Оффтопик". Иногда под ником девушки, таких ... (ответов: 4)
Вопрос № 5323. Здравствуйте, премногоуважаемопочитаемые эксперты! 1)>>>Вы не могли бы рассказать как можно двигать ... (ответов: 4)
Вопрос № 5324. Уважаемые эксперты! Помогите разобраться в отладчике OllyDbg(или Win32Dasm -разницы нету). Дело в то... (ответов: 1)
Вопрос № 5326. Здравствуйте, если кто знает, объясните как работает mutex(взаимное исключение) в win32. С уважение... (ответов: 1)
Вопрос № 5327. Подскажите,пожалуйста, ответ, моему рассуждению: Когда я присваиваю переменной значение как определя... (ответов: 7)

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


 Вопрос № 5318

Скажите пожалуйста,где можно найти руководство по работе с NASM,а то везде рассматривается в основном MASM или WASM.



Вопрос отправлен: 23.05.2004, 17:46
Отправитель: trubinoff (trubinoff@list.ru)

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

Отвечает Foamplast

Добрый день, trubinoff!
Клёвый вопрос. nasm.sourceforge.net - на английском и http://wasm.ru/docs/6/nasm_docs.zip - на русском.


Ответ отправлен: 26.05.2004, 19:19
Отправитель: Foamplast


Отвечает Pawel

Добрый день, trubinoff!
www.wasm.ru

Ответ отправлен: 24.05.2004, 19:06
Отправитель: Pawel


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

Доброе время суток, trubinoff!
www.gg.ru/
* EMan: -=- Любовь существует! =-=


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


Отвечает _vt

Добрый день, trubinoff!
Лежит в том же архиве, что и сам NASM.
* Origin : Life begins at 1000Mhz!


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


 Вопрос № 5319

Можно ли писать
mov cx,n-1
и вообще, когда можно писать не вычисленные выражения, а когда нельзя.



Вопрос отправлен: 23.05.2004, 19:42
Отправитель: Natali

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

Отвечает Pawel

Приветствую Вас, Natali!
Да можно
n=10
mov cx,n-1 (mov cx,9)


Ответ отправлен: 24.05.2004, 19:08
Отправитель: Pawel


Отвечает Foamplast

Добрый день, Natali!
При использовании NASM или FASM можно писать "mov cx,n-1" в любом случае. Так как из записи видно, что n - это либо константа, либо имя переменной. В первом случае в сх попадёт значение константы, уменьшенное на 1, а во втором - адрес переменной, уменьшенный на 1.
Совсем другое дело MASM или TASM. Если n - это константа, то всё так же, а вот если это имя переменной, то они могут ругаться, так как в MASM команда "mov сх, у", в отличие от FASM и NASM заносит в регистр сх значение у.


Ответ отправлен: 26.05.2004, 19:19
Отправитель: Foamplast


Отвечает Ayl

Доброе время суток, Natali!
Сразу отвечаю на вторую часть вопроса. Если значение выражение можно вычислить на этапе компиляции - то можно его использовать в команде, если нельзя вычислить - то нельзя и использовать.
Например, такой код правильный:
N EQU 10
...
mov cx, N-1 ; компилятор может вычислить значение N-1, это константа.

а вот так неправильно:
N db 10
...
mov cx, N-1 ; это выражение нельзя привести к константе, надо писать так:
mov cx, [N]
dec cx



Ответ отправлен: 24.05.2004, 18:34
Отправитель: Ayl


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

Приветствую Вас, Natali!
Можно, только результат зависит от того, что из себя представляет N.
Результат будет вычислен и подставлен в процессе компиляции.

Ответ отправлен: 24.05.2004, 00:47
Отправитель: Стас


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

Здравствуй, Натали.
Можно так писать, если n - постоянная (const, константа).
Допустим:
n = 23
m equ 35
mov eax, m-n
m = m + 1
n = n *3
mov [ebx], m*n
Но если n - переменная, то не получится.
Но если n - адрес, то тогда :
mov cx, [n -1]
в cx окажется слово по адресу на байт меньше.
* EMan: -=- Любовь существует! =-=


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


 Вопрос № 5320

Добрый день, эксперты. На вопрос 5289 о работе с портами в XP эксперт Foamplast предложил исходник на СИ, в котором я не совсем разобрался. Если кто-нибудь из экспертов имеет информацию с описаним методов чтения/записи в COM-порт на СИ в XP, просьба скинуть на мой мэйл или дать ссылки. Заранее спасибо.
ЗЫ. Просьба сильно не ругать за то, что не упомянул ассемблер.



Вопрос отправлен: 24.05.2004, 00:11
Отправитель: Николай (kostinn@mai.rul)

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

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

Добрый день, Николай!
Если он предложил на C, то он по сути, нарушил правила рассылки.
Не понимаю, раз тут Ассемблер, то нафик тогда тут отвечать по С?!
Зачем ЗАСОРЯТЬ?
Ответь в рассылке для С и всё.
Тут же будь добр перевести на Ассемблер, если так уж пошло.
* EMan: -=- Любовь существует! =-=


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


 Вопрос № 5322

Здравствуйте, уважаемые эксперты!
Извините за "Оффтопик".
Иногда под ником девушки, таких как Natasha, Julka и т.п. нередко скрываются ленивые мальчики, которые привыкли всю жизнь что-то просить, так как самим думать или что-либо делать "влом". Хотя конечно, если попросит действительно "реальная девушка", то я сам не "устою". Так что эксперты поосторожней с "девушками" обращайтесь. Пусть они хоть фотку по мылу присылают что-ли (только свою), как она сидит за компьютером, обложенным различными книгами по программированию и пытается набивать программу.
С уважением, реальный юноша!



Вопрос отправлен: 24.05.2004, 14:40
Отправитель: Реальный мальчик

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

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

Здравствуйте, Реальный мальчик!
а мне не важен пол существа, с которым я общаюсь. :)
главное голова, остальное не важно, пусть хоть инопланетянином притворится :)))
* EMan: -=- Любовь существует! =-=


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


Отвечает Pawel

Доброе время суток, Реальный мальчик!
Хорошая идея. А за одно и номер телефона :)

Ответ отправлен: 24.05.2004, 18:50
Отправитель: Pawel


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

Приветствую Вас, Реальный мальчик!
Думаешь мы сами не знаем? Однако гормоны.... :)

Ответ отправлен: 24.05.2004, 22:13
Отправитель: Стас


Отвечает _vt

Здравствуйте, Реальный мальчик!
Что-то ты на девочку смахиваешь... ;-)
* Origin : Life begins at 1000Mhz!


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


 Вопрос № 5323

Здравствуйте, премногоуважаемопочитаемые эксперты!
1)>>>Вы не могли бы рассказать как можно двигать окно (Windows) за любую его часть? (Пример - плавающее окошко FlashGet) Сегодня два часа на такую простую вестч потерял: пытался сделать и не получилось :) То оно за экран вылетает, то скачет как ненормальное :) Как лечить?
2)>>>И ещё один тупой вопрос: как в ассемблере делить (находить частное)? Желательно, с примерами. А то в хэлпе написаны какие-то замудрённые слова, которые пудрят мне мозги (если они есть) и заставляют их прекращать работать :)
3)>>>Bonus! Если корректно задан вопрос, то: В каком месте Windows многозадачна? (WinAPI, прерывания...) Или это делает процессор?
Заранее спасибо.
Прошу прощения за назойливость и возможные неудобства.
С уважением, UKY.



Вопрос отправлен: 24.05.2004, 17:04
Отправитель: UKY

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

Отвечает Ayl

Приветствую Вас, UKY!
2. Например, так:
mov ax, 100
mov bl, 6
div bl ; делим ax на bl, в регистре al получаем частное (16), в регистре ah - остаток (4).
Здесь счысл такой. В команде div задается делитель. Делимое определяется в зависимости от величины делителя: если размер делителя байт, то в качестве делимого используется регистр ax, если слово - то пара dx:ax (это для 16-разрядных команд). С 32-разрядными командами так:

делитель - делимое
(размер)
------------------
байт - ax
слово - eax
дв.слово - edx:eax

3. Что значит "в каком месте"? Во всех. Многозадачность определяется тем, что, во-первых, одновременно выполняются несколько приложений (допустим, ворд + почтовый клиент), а, во-вторых, одновременно можно обращаться к одним и тем же функциям API. В виндах это сделано. В чем-то с помощью аппаратных средств (разграничение памяти между процессами, уровни доступа, переключение задач), в чем-то с помощью специальных техник написания кода.


Ответ отправлен: 24.05.2004, 18:45
Отправитель: Ayl


Отвечает Pawel

Приветствую Вас, UKY!
2)
mov ax, 2
mov [N], 4
div [n] делим ax на [N]
3)Везде. Многозадачность предоставляется процессором в защищённом режиме.

Ответ отправлен: 24.05.2004, 19:21
Отправитель: Pawel


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

Приветствую Вас, UKY!
Смотри мой исходник SClock на моём сайте.
Там есть такое. ;)
Делить - DIV, IDIV.
В основе - процессор. Но система тоже не должна отставать ;)
* EMan: -=- Любовь существует! =-=


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


Отвечает _vt

Добрый день, UKY!
1) Вот обработчик WM_LBUTTONDOWN:

case WM_LBUTTONDOWN:
PostMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION,0);
break;

На ассемблер сам переведешь! :)
3) Процессор имеет аппаратные возможности для переключения задач, а все ОС стремятся их реализовать, но получается не всегда хорошо. :-)))
* Origin : Life begins at 1000Mhz!


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


 Вопрос № 5324

Уважаемые эксперты!
Помогите разобраться в отладчике OllyDbg(или Win32Dasm -разницы нету). Дело в том что когда я отлаживаю простую программу(Выводит окно ), то я почему-то не могу отладить процедуру окна win_proc. С помощью стрелок перемещаю полоску на эту процедуру, но при нажатии F8/F7 она снова возвращается на том месте где была. Как тут быть не понимаю. Вот в AFD все просто, можно отлаживать любую часть.
З.Ы. Да и еще как в win32Dasm смотреть значения переменных, а то чето не могу найти где это.



Вопрос отправлен: 24.05.2004, 20:53
Отправитель: Vano

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

Отвечает _vt

Здравствуйте, Vano!
Тебе надо поставить breakpoint в нужном месте.
P.S. Я вроде думал, что W32Dasm - это не отладчик...
* Origin : Life begins at 1000Mhz!


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


 Вопрос № 5326

Здравствуйте, если кто знает, объясните как работает mutex(взаимное исключение) в win32.
С уважением, Александр.



Вопрос отправлен: 24.05.2004, 21:10
Отправитель: Alexander

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

Отвечает _vt

Приветствую Вас, Alexander!
A mutex object is a synchronization object whose state is set to signaled when it is not owned by any thread, and nonsignaled when it is owned. Only one thread at a time can own a mutex object, whose name comes from the fact that it is useful in coordinating mutually exclusive access to a shared resource. For example, to prevent two threads from writing to shared memory at the same time, each thread waits for ownership of a mutex object before executing the code that accesses the memory. After writing to the shared memory, the thread releases the mutex object.
A thread uses the CreateMutex function to create a mutex object. The creating thread can request immediate ownership of the mutex object and can also specify a name for the mutex object. Threads in other processes can open a handle to an existing mutex object by specifying its name in a call to the OpenMutex function. For additional information about names for mutex, event, semaphore, and timer objects, see Interprocess Synchronization.
Any thread with a handle to a mutex object can use one of the wait functions to request ownership of the mutex object. If the mutex object is owned by another thread, the wait function blocks the requesting thread until the owning thread releases the mutex object using the ReleaseMutex function. The return value of the wait function indicates whether the function returned for some reason other than the state of the mutex being set to signaled.
Threads that are waiting for ownership of a mutex are placed in a first in, first out (FIFO) queue. Therefore, the first thread to wait on the mutex will be the first to receive ownership of the mutex, regardless of thread priority. However, kernel-mode APCs and events that suspend a thread will cause the system to remove the thread from the queue. When the thread resumes its wait for the mutex, it is placed at the end of the queue.
After a thread obtains ownership of a mutex, it can specify the same mutex in repeated calls to the wait-functions without blocking its execution. This prevents a thread from deadlocking itself while waiting for a mutex that it already owns. To release its ownership under such circumstances, the thread must call ReleaseMutex once for each time that the mutex satisfied the conditions of a wait function.
If a thread terminates without releasing its ownership of a mutex object, the mutex object is considered to be abandoned. A waiting thread can acquire ownership of an abandoned mutex object, but the wait function's return value indicates that the mutex object is abandoned. It is best to assume that an abandoned mutex object indicates that an error has occurred and that any shared resource being protected by the mutex object is in an undefined state. If the thread proceeds as though the mutex object had not been abandoned, its "abandoned" flag is cleared when the thread releases its ownership. This restores normal behavior if a handle to the mutex object is subsequently specified in a wait function.
В каком месте тебе непонятно? ;-)
* Origin : Life begins at 1000Mhz!


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


 Вопрос № 5327

Подскажите,пожалуйста, ответ, моему рассуждению:
Когда я присваиваю переменной значение как определяется что я присваиваю именно ей, короче кто хранит значения адресов или номер переменной в стеке, хотя номер не подходит, т.к. переменные могут быть разного значения.
С уважением, Александр



Вопрос отправлен: 24.05.2004, 21:11
Отправитель: Alexander

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

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

Добрый день, Alexander!
ассемблер.
* EMan: -=- Любовь существует! =-=


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


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

Добрый день, Alexander!
ассемблер.
* EMan: -=- Любовь существует! =-=


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


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

Добрый день, Alexander!
ассемблер.
* EMan: -=- Любовь существует! =-=


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


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

Доброе время суток, Alexander!
О чем речь то вообще? Какой такой стек?
Если ты имеешь в виду конструкцию типа:
mov al,nomer
....
nomer label byte
db 5
то nomer в процессе компиляции заменяется на адрес, который поставляется вместо nomer в код программы.
Если имеется ввиду вызов WinAPI в виде
push 5
call messagebox
или
call LoadIcon PASCAL,AX,AX IDI_APPLICATION
то порядок, размер и количество переменных определено Microsoft и если их там не окажется(в стеке), это твои проблемы. Что при этом произойдет, никому не известно, скорее все синий экран.
Если ты имел ввиду что-то другое - изъясняйся понятнее, а то приходится догадываться.

Ответ отправлен: 24.05.2004, 22:12
Отправитель: Стас


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

Доброе время суток, Alexander!
Адрес переменных определяется на этапе компиляции и жестко прописывается
в виде адреса или смещения в стеке. Так как на этапе выполнения программы
эти адреса не меняются, то и хранить ничего не нужно.


Ответ отправлен: 26.05.2004, 08:01
Отправитель: ASMодей


Отвечает Ayl

Здравствуйте, Alexander!
Чего такое спросил? Сам-то понял?
Когда ты на ЯВУ (либо на асме) пишешь что-то такое:
a = 1;
то компилятор ищет в своей таблице имен переменных адрес для переменной с именем a и подставляет в команду этот адрес. В исполняемом коде процессор про твою переменную ничего не знает, он запишет значение 1 в ту ячейку памяти, которая указана в команде. Причем тип переменной проверяется тоже компилятором. Поэтому для разных типов переменной a будут сформированы разные команды записи.
Для сложных структур (массивов, записей и т.п.) смысл тот же, просто для компилятора добавляется работы для определения адреса ячейки.

Ответ отправлен: 25.05.2004, 13:34
Отправитель: Ayl


Отвечает _vt

Приветствую Вас, Alexander!
Все это делает компилятор. Сама программа работает только с адресами и значениями.
* Origin : Life begins at 1000Mhz!


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



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

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

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




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


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


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


В избранное