Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
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.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту 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.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||