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

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.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
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.


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

http://subscribe.ru/
http://subscribe.ru/feedback/
Адрес подписки
Отписаться

В избранное