Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 761
от 27.08.2004, 09:10
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 5776 Отправлено ответов: 15490 Активность: 268.1 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
_vt Статус: Профессиональный Общий рейтинг: 118.07 [Подробней >>] |
Алексей Статус: Доверительный Общий рейтинг: 129.09 [Подробней >>] |
Горячев Игорь Статус: Доверительный Общий рейтинг: 118.65 [Подробней >>] |
Tigran K. Kalaidjian Статус: Профессиональный Общий рейтинг: 187.45 URL: Персональная страничка [Подробней >>] |
Евгений Иванов Статус: Профессиональный Общий рейтинг: 133.02 URL: Super Assembler Software Телефон: НСС +7 831 3107039 [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 109.27 [Подробней >>] |
Стас Статус: Опытный Общий рейтинг: 122.3 [Подробней >>] |
PavPS Статус: Доверительный Общий рейтинг: 116.52 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 116.47 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 5736. Здравствуйте, эксперты! У меня к Вам парочка вопросов: 1. Как программно определить, чем являются за... (ответов: 1)
Вопрос № 5737. здравствуйте уважаемые эксперты где можно скачать fasm и литературу по нему заранее спасибо... (ответов: 3)
Вопрос № 5738. Здраствуйте. У меня в WinXP ассемблерные проги(графические - вывод в сегмент видеобуфера)досовские н... (ответов: 2)
Вопрос № 5740. Здравствуйте! У меня беда! Постоянно забываю дни рождения (в смысле вовремя поздравить), а люди разн... (ответов: 2)
Вопрос № 5742. Привет всем. Как сгенерировать звук частотой 500-1700 Гц и длительностью 40-100 мс. Заранее спасибо!... (ответов: 1)
Вопрос № 5747. Здравствуйте! Объясните, пожалуйста, что такое контекст устройства, invalid rectangle, а также что з... (ответов: 2)
Вопрос № 5748. Добрый день ! RusFAQ.ru Assembler FAQ переехал на http://kalaidjian.pochtamt.ru/rusfaq.rar Вирусный... (ответов: 1)
Вопрос № 5749. Здравствуйте Во всех умных книжках по Windows (напр Рихтера)описывается адресное пространство процес... (ответов: 4)
Вопрос № 5753. Привет! Какого херана у меня не компилит этот код tasm v3.2 вот мой батник с помощью которого я комп... (ответов: 5)
Вопрос № 5754. Здраствуйте. 1)Каким образом процесоры 80868088 адресуют память в 1мб?Откуда беруться ещё 4 бита(20-... (ответов: 4)
Вопросов: 10, ответов: 25
Вопрос № 5736 |
Здравствуйте, эксперты!
У меня к Вам парочка вопросов:
1. Как программно определить, чем являются запущенные приложения в системе WinXP: win32-приложениями или досовскими?
2. Как программно из своего приложения изменить раскладку клавиатуры для другого приложения?
Заранее благодарен, EraSer.
Вопрос отправлен: 17.08.2004, 20:26
Отправитель: EraSer (eraser99@tut.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Приветствую Вас, EraSer!
1) Если имя процесса -ntvdm.exe - значит он досовский! ;-)
* Origin : Life begins at 1000Mhz!
Ответ отправлен: 21.08.2004, 23:51
Отправитель: _vt
Вопрос № 5737 |
здравствуйте уважаемые эксперты
где можно скачать fasm и литературу по нему
заранее спасибо
Вопрос отправлен: 17.08.2004, 21:31
Отправитель: ANDRE
[Следующий вопрос >>] [Список вопросов]
Отвечает Алексей
Доброе время суток, ANDRE!
www.wasm.ru
Ответ отправлен: 18.08.2004, 17:53
Отправитель: Алексей
Отвечает Горячев Игорь
Приветствую Вас, ANDRE!
http://wasm.ru
Ответ отправлен: 17.08.2004, 22:39
Отправитель: Горячев Игорь
Отвечает Tigran K. Kalaidjian
Добрый день, ANDRE!
http://www.wasm.ru/toollist.php?list=7
http://flatassembler.net/
Ответ отправлен: 18.08.2004, 10:18
Отправитель: Tigran K. Kalaidjian
Вопрос № 5738 |
Здраствуйте.
У меня в WinXP ассемблерные проги(графические - вывод в сегмент видеобуфера)досовские не работают. Проги без ошибок(даже копировал через буфер у Калашникова) . Может что-то с эмуляцией ms-dos??Думается в виндовсе что-то сделать надо, но что?
З.Ы. Раньше всё работало, а щас ХП переустановил и всё.
Вопрос отправлен: 18.08.2004, 08:53
Отправитель: Семен
[Следующий вопрос >>] [Список вопросов]
Отвечает Tigran K. Kalaidjian
Добрый день, Семен!
mov ax, 0003h
int 10h
Ответ отправлен: 22.08.2004, 15:49
Отправитель: Tigran K. Kalaidjian
Отвечает _vt
Доброе время суток, Семен!
Нет, надо вначале программы вызвать int 10h.
* Origin : Life begins at 1000Mhz!
Ответ отправлен: 21.08.2004, 23:54
Отправитель: _vt
Вопрос № 5740 |
Здравствуйте! У меня беда! Постоянно забываю дни рождения (в смысле вовремя поздравить), а люди разные, бывают и обижаются! Может есть какая-нибудь программа для напоминаний такого рода? Заранее благодарен.
Вопрос отправлен: 18.08.2004, 13:13
Отправитель: Сергей
[Следующий вопрос >>] [Список вопросов]
Отвечает Горячев Игорь
Здравствуйте, Сергей!
Есть! Пиши мыло - вышлю!
Ответ отправлен: 19.08.2004, 23:34
Отправитель: Горячев Игорь
Отвечает Евгений Иванов
Здравствуйте, Сергей!
http://graphica.newmail.ru/
* EMan: -=- И легко перо, да на крышу не закинешь. =-=
Ответ отправлен: 21.08.2004, 03:51
Отправитель: Евгений Иванов
Вопрос № 5742 |
Привет всем.
Как сгенерировать звук частотой 500-1700 Гц и длительностью 40-100 мс.
Заранее спасибо!
Вопрос отправлен: 18.08.2004, 18:37
Отправитель: Меломан
[Следующий вопрос >>] [Список вопросов]
Отвечает Tigran K. Kalaidjian
Доброе время суток, Меломан!
Уточните, пожалуйста, под какую машину и платформу Вы пишете и куда Вы хотите выводить звук(если на звук. карту, то на какую).
Ответ отправлен: 18.08.2004, 19:03
Отправитель: Tigran K. Kalaidjian
Вопрос № 5747 |
Здравствуйте!
Объясните, пожалуйста, что такое контекст устройства, invalid rectangle, а также что значит логический фонт и что делает функция SelectObject?
Вопрос отправлен: 21.08.2004, 17:53
Отправитель: Alex
[Следующий вопрос >>] [Список вопросов]
Отвечает Tigran K. Kalaidjian
Приветствую Вас, Alex!
Dark_Lord уже ответил, поэтому шлю подробные описания:
A device context is a structure that defines a set of graphic objects and their associated attributes, and the graphic modes that affect output. The graphic objects include a pen for line drawing, a brush for painting and filling, a bitmap for copying or scrolling parts of the screen, a palette for defining the set of available colors, a region for clipping and other operations, and a path for painting and drawing operations.
-------------------------------
The SelectObject function selects an object into the specified device context. The new object replaces the previous object of the same type.
HGDIOBJ SelectObject(
HDC hdc, // handle of device context
HGDIOBJ hgdiobj // handle of object
);
Parameters
hdc
Identifies the device context.
hgdiobj
Identifies the object to be selected. The specified object must have b een created by using one of the following functions:
Object Functions
Bitmap CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDIBitmap, CreateDIBSection
(Bitmaps can be selected for memory device contexts only, and for only one device context at a time.)
Brush CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush
Font CreateFont, CreateFontIndirect
Pen CreatePen, CreatePenIndirect
Region CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreateRectRgn, CreateRectRgnIndirect
Return Values
If the selected object is not a region and the function succeeds, the return value is the handle of the object being replaced. If the selected object is a region and the function succeeds, the return value is one of the following values:
Value Meaning
SIMPLEREGION Region consists of a single rectangle.
COMPLEXREGION Region consists of more than one rectangle.
NULLREGION Region is empty.
If an error occurs and the selected object is not a region, the return value is NULL. Otherwise, it is GDI_ERROR.
Remarks
This function returns the previously selected object of the specified type. An application should always replace a new object with the original, default object after it has finished drawing with the new object.
An application cannot select a bitmap into more than one device context at a time.
Ответ отправлен: 22.08.2004, 16:15
Отправитель: Tigran K. Kalaidjian
Отвечает Dark_Lord
Добрый день, Alex!
Контекст устройства(device context) - это то, на чём Windows может рисовать, начиная от окна и кончая принтером (листок бумаги). Каждый такой объект имеет контекст устройства.
Неправильный квадрат(invalid rectangle) - либо ошибка, либо параметр, определяет, что кдарата нет.
Логический фонт(logical font) - Windows не пользуется просто фонтами, в Windows используются логичесские структуры, которые содержат полную информацию о шрифте.
SelectObject(hDC,hObject); задаёт используемый по умолчанию шрифт/рисунок/brush/pen/и т.п. для определённого DC.
Ответ отправлен: 21.08.2004, 18:18
Отправитель: Dark_Lord
Вопрос № 5748 |
Добрый день !
RusFAQ.ru Assembler FAQ переехал на
http://kalaidjian.pochtamt.ru/rusfaq.rar
Вирусный архив переброшен на kalaidjian.w6.ru, но не думаю, что он там продержится больше месяца, так что, если кому надо, лучше качайте прямо сейчас. Ссылки на эти архивы смотрите в RusFAQ.ru Assembler FAQ
Кто пользовался старым сайтом http://kalaidjian.narod.ru может найти его архив в разделе «проекты», самого сайта на народе уже нет – снесли.
Вопросы, отзывы, предложения, комментарии приветствуются.
С уважением
Тигран Калайджян
2:5020/2987.25
Вопрос отправлен: 21.08.2004, 19:18
Отправитель: TiCOiN (kalaidjian@pochtamt.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Выживем!
* EMan: -=- И легко перо, да на крышу не закинешь. =-=
Ответ отправлен: 22.08.2004, 15:32
Отправитель: Евгений Иванов
Вопрос № 5749 |
Здравствуйте
Во всех умных книжках по Windows (напр Рихтера)описывается
адресное пространство процесса (его регионы и т п)
в том числе указываются смещения границ регионов Напр смещение начала региона куда загружаются DLL и проч
Так эти смещения относительно CS?
В Рихтере просто говорится: 0x????????-0x???????? - область того-то и тп Я не могу понять относительно какого сегмента всё это?
А если рассматр PE заголовок, то Image Base это ведь тоже только смещение , а сегмент в CS?
где можно посмотреть как выглядят адр пространства
сегментов DS, FS и др?
Я часто в программах вижу команды типа
mov ??, DS:[????????]
и становится непонятно: что читается из DS?
На что можно ссылаться через него?
+ что тогда содержится в адр пространствах DS, FS и др
сегм регистров после запуска программы
ведь же например в FS:[0] иам что-то с SEH связано
а в FS:[30] c PEB
а сегменты DS, CS и др могут накл адываться друг на друга?
т е байт в физ памяти может иметь разные вирт адреса
(напр CS:[????????] и DS:[????????])
Заранее спасибо за ответы
P.S: где можно почитать про сырые сокеты(создание, работа с ними? в сети нигде ничего не могу найти Если не в
электронном виде то какие книги можно купить потому что на прилавках тоже не видел
Вопрос отправлен: 21.08.2004, 23:29
Отправитель: in184
[Следующий вопрос >>] [Список вопросов]
Отвечает Dark_Lord
Приветствую Вас, in184!
В тех-же умных книжках обычно написано, что сегменты ss, ds, cs и es в режиме памяти flat со страничной адресацией, которая используется в Windows, указывают на один и тот же сегмент, размером 4 Гб и базой в 00000000h. А уже от защиты самих страниц зависит исполняемость, читаемость и возиожность записи в страницу! Сегмент fs в свою очередь указывает на SEH. Про это есть куча информации в инете, ищи...
PS: например на http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/winsock_reference.asp , хотя я не понимаю что такое "сырые сокеты"...
Ответ отправлен: 22.08.2004, 10:10
Отправитель: Dark_Lord
Отвечает Стас
Доброе время суток, in184!
>Я часто в программах вижу команды типа
>mov ??, DS:[????????] и становится непонятно: что читается >из DS?
DS, обычно, всеже указывает на данные.
Когда ты пишешь программу делишь её на сегмент кода и сегмент данных. Вот в DS и помешается указатель на область памяти куда помещаются твои данные. При этом в эту область можно читать и писать туда. Но нельзя исполнять в ней код.
CS же указывает на область памяти в которой можно только исполнять код. Но нельзя в него писать.
>а сегменты DS, CS и др могу накладываться друг на друга?
DS и CS могут содержать ЛЮБЫЕ указатели(селекторы), одинаковые или даже полную белиберду. Другое дело что первое же обращение к такому указателю вызовет GPF(ошибка защиты). (В случае CS это произойдет мгновенно... ведь программа исполняется в CS:EIP)
>т е байт в физ памяти может иметь разные вирт адреса
>(напр CS:[????????] и DS:[????????])
Нет CS:10 = DS:10. CS может быт ь равен DS и указывать они будут на одну и туже область(и один и тот же байт), однако у каждой области свое предназначение. И попытавшись записать на CS=DS:[????????] ты получишь GPF.
Ответ отправлен: 22.08.2004, 12:26
Отправитель: Стас
Отвечает PavPS
Добрый день, in184!
Вообще сначала почитай про защищенный режим статейки - половина - теории - сразу ясной станет. Про FS[XXX] хорошо написано у Свена Шрайбера.
Статьи тута - http://www.wasm.ru/publist.php?list=24
Ответ отправлен: 22.08.2004, 12:43
Отправитель: PavPS
Отвечает Алексей
Приветствую Вас, in184!
>>В Рихтере просто говорится: 0x????????-0x???????? - область того-то и тп Я не могу понять относительно какого сегмента всё это?
Это относительно НИКАКОГО сегмента. Это адрес в памяти (физический). Означает следующее: тебе необходимо создать сегмент с базой в этом адресе (например ES), а далее писать ES:[0]. Сегменты могут накладываться. У сегмента есть лимит, т.е. его размер. Почитать это можно в Интеловском мануале по IA-32 технологии (раздел защищенного режима процессора).
Еще вот ссылка: http://www.wasm.ru
там поищи архив статей BrokenSword (это вместо интеловского мануала ;) )
Ответ отправлен: 23.08.2004, 10:15
Отправитель: Алексей
Вопрос № 5753 |
Привет!
Какого херана у меня не компилит этот код tasm v3.2
вот мой батник с помощью которого я компилил
TASM.EXE prog.asm
tlink.exe prog.obj /t/x
del prog.obj
del prog.map
pause
Арфаграфической ошибки быть не может.
А вот и сам код который не комплится
CSEG segment
org 100h
start:
mov cx,3
label_1:
mov ah,9
mov dx,offset mess
int 21h
loop label_1
int 20h
mess db 'HELLO, DUDE$'
CSEG ends
end start
да вот ещё... в пример Prog04.asm - Программ к главе №04
тоже нихера не компилит...
блин если взялись учить то доводить нужно всё до ума,
а не с ошибками. А то вот потом ломай голову...
Ну да ладно давай те только отвечайте мне быстрей ок?
если вы сочли меня наглым то пошли вы нах ок ? :)
Вопрос отправлен: 23.08.2004, 02:49
Отправитель: Игорь (997@hotmail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Горячев Игорь
Приветствую Вас, Игорь!
Ошибкам в твоем ДНК!!!
Ответ отправлен: 24.08.2004, 22:40
Отправитель: Горячев Игорь
Отвечает _vt
Добрый день, Игорь!
Дам подсказку - TASM 3.2, который ты скачал с wasm.ru, это немного не то, что надо! ;-)
Этот код предназначен для MS-DOS, и требует компилятора для MS-DOS, в частности TASM, MASM и пр. То, что лежит там, никакого отношения к досу не имеет!
* Origin : Life begins at 1000Mhz!
Ответ отправлен: 23.08.2004, 04:20
Отправитель: _vt
Отвечает Tigran K. Kalaidjian
Приветствую Вас, Игорь!
Вставь перед [start:] строчку [assume cs:cseg] и иди нахуй изучай элементарные пособия. Если не умеешь учиться - не учись, тебя никто не заставляет.
Ответ отправлен: 23.08.2004, 09:29
Отправитель: Tigran K. Kalaidjian
Отвечает Алексей
Приветствую Вас, Игорь!
см. Приложение
Приложение:
Ответ отправлен: 23.08.2004, 10:22
Отправитель: Алексей
Отвечает Стас
Приветствую Вас, Игорь!
Действительно, вероятно "забыли" поставить перед ORG 100h:
assume cs:cseg,ds:cseg
Такое бывает. Для человека давно пишушущего на ASM это кажется само собой разумеющимся, вот и забывают.
Тем не менее тебе лучьше научится уважать людей с которыми общаешся, иначе никто с тобой разговаривать не будет и ты никогда ничему не научишься.
>Арфаграфической ошибки быть не может.
^^^^^^ :))
И дай ссылочку на "пример Prog04.asm".
Ответ отправлен: 23.08.2004, 14:11
Отправитель: Стас
Вопрос № 5754 |
Здраствуйте.
1)Каким образом процесоры 80868088 адресуют память в 1мб?Откуда беруться ещё 4 бита(20-битное смещение)?
Вопрос отправлен: 23.08.2004, 09:03
Отправитель: Семен
[Следующий вопрос >>] [Список вопросов]
Отвечает Алексей
Здравствуйте, Семен!
Адрес складывается из 2х составляющих: сегмент и смещение. Если у тебя имеется адрес, например 12345h, тогда у тебя сегмент: 1234h, а смещение 5h. Можно разложить и так: сегмент - 1230h и смещение 45h. Смысл такой: адрес=сегмент*16+смещение. А умножение на 16 и есть сдвиг сегмента влево на 4 бита! Отсюда смещение - 16 бит, и сегмент добавляет еще 4 бита. ;) Успехов.
Ответ отправлен: 23.08.2004, 10:29
Отправитель: Алексей
Отвечает Dark_Lord
Доброе время суток, Семен!
В реальном режиме адресация всегда происходит в 20бит пространстве, так как чтоб получить лмнейный адрес из сегмента и смещения нужно умножить адрес сегмента на 16 и прибавить смещение, тоесть адрес в реальном режиме 0FFFFh:0010h будет соответствовать линейному адресу (0FFFFh)*10h+10h = 100000 (1048576), а это уже первый байт ВТОРОГО мегабайта памяти. Поэтому получается, что в реальном режиме можно без расширителей адресовать 0FFFFh*10h+0FFFFh = 1114095 байт (на 65519 байт больше мегабайта, обычно эту память занимает DOS)...
Ответ отправлен: 23.08.2004, 11:14
Отправитель: Dark_Lord
Отвечает _vt
Приветствую Вас, Семен!
Что значит "откуда"? :-0 Так заложено разработчиками процессора - у него 20-разрядная адресация!
* Origin : Life begins at 1000Mhz!
Ответ отправлен: 23.08.2004, 12:37
Отправитель: _vt
Отвечает Ayl
Добрый день, Семен!
Так ведь адрес задается с помощью пары сегмент:смещение. Сегмент задается в одном из сегментных регистров, смещение - в зависимости от вида адресации. Физический адрес получается по формуле 16*сегмент + смещение. В результате и получается 20 бит. Отсюда, кстати, и получается фишка, что один и тот же адрес можно получить с помощью различных комбинаций (сегмент, смещение):
00417 = 0000:0417, 0001:0407, ..., 0040:0017, 0041:0007.
Ответ отправлен: 23.08.2004, 16:39
Отправитель: Ayl
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (25) C / C++ (16) Perl (6) Builder / Delphi (14) Pascal (25) Basic / VBA (5) Java / JavaScript (7) PHP (11) Криптография (7) WinAPI (11) Радиоэлектроника (11) |
Пользователю Windows 95/98/Me (46) Windows NT/2000/XP (60) "Железо" (41) Поиск информации (19) |
Администратору Windows NT/2000/XP (42) Linux / Unix (16) |
Юристу Гражданское право (10) Семейное право (7) Трудовое право (9) КоАП (5) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Адрес подписки |
Отписаться |
В избранное | ||