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

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


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

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

Выпуск № 737
от 05.06.2004, 23:30

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


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

Pawel
Статус: Профессиональный
Общий рейтинг: 152.71
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 134.5
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
Dragoon
Статус: Доверительный
Общий рейтинг: 108.76
[Подробней >>]
 
Стас
Статус: Доверительный
Общий рейтинг: 129.16
[Подробней >>]
flasher
Статус: Начальный
Общий рейтинг: 104.48
[Подробней >>]
Artemy
Статус: Опытный
Общий рейтинг: 110.89
Телефон: 8 905 549 38 66
[Подробней >>]
 
Gibbel
Статус: Профессиональный
Общий рейтинг: 105.35
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 111.6
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.62
[Подробней >>]
 
Snowm@n
Статус: Опытный
Общий рейтинг: 111.86
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 118.79
[Подробней >>]


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

Вопрос № 5372. Помогите плиз а то меня уже запарило по инету шариться, нигде не могу найти програмирование IDE-конт... (ответов: 1)
Вопрос № 5373. Здравствуйте, многоуважаемые эксперты! А можно ли в MASM использовать массивы? Как сделать так, чтоб... (ответов: 2)
Вопрос № 5374. День добрый! Простите меня, грешного, за дебильный вопрос. У меня есть модальное диалоговое окно, а ... (ответов: 1)
Вопрос № 5375. Очень срочно нужно написать прогу на асемблере: чтение информации с CD-R,CD-RW. Не знаю даже с чего ... (ответов: 3)
Вопрос № 5377. Здарова. Есть код: .data? a db 4 dup(?) Как динамически выделять память для A?... (ответов: 3)
Вопрос № 5379. Ниже приведён пример загрузки 4-х байтового числа в регистр еах, при условии, что байты числа распол... (ответов: 4)
Вопрос № 5380. Здраствуйте! Кто может подсказать в чем дело? У меня стоит Ahead Nero version 6.3.1.10 + все необход... (ответов: 2)
Вопрос № 5381. Здарова. Опять я. Где найти алгоритм шифрования(UUEncode ) на ассемблере?... (ответов: 3)
Вопрос № 5382. Привет всем, как создать массив строк в ассемблере?... (ответов: 3)
Вопрос № 5383. Помогите плз со следующ: 1 во всех руководствах, описаниях процессоров 80x86 сказано что программа... (ответов: 3)

Вопросов: 10, ответов: 25


 Вопрос № 5372

Помогите плиз а то меня уже запарило по инету шариться, нигде не могу найти
програмирование IDE-контролера на уровне портов а не через всеми любимый инт13
... может кто что-нибуть знаю какие-нибуть ссылки,книги,и вобще что есть на эту тематику
Dark_Monarh@mail.ru



Вопрос отправлен: 31.05.2004, 14:50
Отправитель: Dark_Monarh (Dark_Monarh@mail.ru)

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

Отвечает Pawel

Доброе время суток, Dark_Monarh!
Я писал библиотеку для работы с винтом(AT) для интервала портов от 1F0h до 168h.
Можешь почитать Кулакова (в примерах к книге есть работа с винтом).



Ответ отправлен: 31.05.2004, 16:07
Отправитель: Pawel


 Вопрос № 5373

Здравствуйте, многоуважаемые эксперты!
А можно ли в MASM использовать массивы?
Как сделать так, чтобы окно "прилипало" к краям других окон?
Как зарегистрировать горячую клавишу, чтобы она работала везде, а не только когда окно активно? (Я использовал RegisterHotKey, но у меня не получилось :( )
Спасибо за то, что вы есть, за ваши предыдущие ответы и за следующие тоже :)



Вопрос отправлен: 31.05.2004, 16:56
Отправитель: UKY

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

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

Добрый день, UKY!
Конечно.
Используй DUP.
array1 db 100 dup(200)
Потом индексную адресацию.
lea esi, array1
sub ebx,ebx
m1:
mov al,[esi+ebx]
...
inc ebx
dec ecx
jnz m1
* EMan: -=- Любовь существует! =-=


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


Отвечает Dragoon

Приветствую Вас, UKY!
Объявляете, например, x db 512 dup(0)
дальше в проге пишите, если известен номер нужного елемента
mov x[5],1 (mov на что угодно меняй)
Если же номер неизвестен при компиляции, то вычисляй его.
Начсет гор. клавиш - наиболее эффективный и быстрый способ -
создание объекта DirectIntup на клаву. Как это сделать есть на wasm.ru

Ответ отправлен: 01.06.2004, 21:11
Отправитель: Dragoon


 Вопрос № 5374

День добрый! Простите меня, грешного, за дебильный вопрос.
У меня есть модальное диалоговое окно, а на нем edit-control.
Как мне узнать, что был нажат enter, при фокусе на этом edit`e?
Пробовол отловить по WM_CHAR, но не получается так как нужно TranslateMessage, а ее нету, так как окошко создается из ресурса и обрабатывает сообщения по-особому(через свою процедуру).
Вопрос: как быть?
Спасибо всем!



Вопрос отправлен: 31.05.2004, 20:45
Отправитель: a111 (a111_666@mail.ru)

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

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

Приветствую Вас, a111!
Создай рядом кнопку по умолчанию.
* EMan: -=- Любовь существует! =-=


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


 Вопрос № 5375

Очень срочно нужно написать прогу на асемблере:
чтение информации с CD-R,CD-RW. Не знаю даже с чего начать! :-(



Вопрос отправлен: 01.06.2004, 10:55
Отправитель: Troiza

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

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

Доброе время суток, Troiza!
Начинай так:
.386
.model flat
.data
....
.code
_start:
Какую инфу хоть читать будешь? Служебную или просто директории и файлы?

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


Отвечает flasher

Доброе время суток, Troiza!
А чем отличается чтение от винта и чтение от сидирома?
главное определи диск сидирома, и читай на здоровье :)

Ответ отправлен: 01.06.2004, 13:07
Отправитель: flasher


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

Доброе время суток, Troiza!
изучай ASPI

* EMan: -=- Любовь существует! =-=


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


 Вопрос № 5377

Здарова.
Есть код:
.data?
a db 4 dup(?)
Как динамически выделять память для A?



Вопрос отправлен: 01.06.2004, 15:16
Отправитель: voxel

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

Отвечает Artemy

Здравствуйте, voxel!
Если для виндов, то используй API функции
GlobalAlloc или LocalAlloc


Ответ отправлен: 01.06.2004, 17:24
Отправитель: Artemy


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

Приветствую Вас, voxel!
Для такого маленького?
Вот если соберешь все динамические переменные, буффера, рабочие области. Выделишь память как сказал Artemy, в ней и разметишь.


Ответ отправлен: 01.06.2004, 21:25
Отправитель: Стас


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

Доброе время суток, voxel!
Call GlobalAlloc, GPTR, 4
or eax,eax
jz err
xchg esi,eax
;... working with memory
Call GlobalReAlloc, esi, 200, GMEM_MOVEABLE
or eax,eax
jz err
xchg esi,eax
;... working with memory
Удачи.
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 02.06.2004, 12:30
Отправитель: Евгений Иванов


 Вопрос № 5379

Ниже приведён пример загрузки 4-х байтового числа в регистр еах, при условии, что байты числа расположены в обратном порядке.
Существует ли более оптимальный сопособ делать это?


Приложение:


Вопрос отправлен: 01.06.2004, 20:09
Отправитель: digitron (digitron@mail.ru)

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

Отвечает Gibbel

Доброе время суток, digitron!
Есть такая инструкция BSWAP. Присутствует во всех процессорах, начиная с Intel486. Принцип ее действия такой:
TEMP <= DEST
DEST[7..0] <= TEMP(31..24]
DEST[15..8] <= TEMP(23..16]
DEST[23..16] <= TEMP(15..8]
DEST[31..24] <= TEMP(7..0]
Функция не воздействует ни на какие флаги.

Ответ отправлен: 02.06.2004, 10:28
Отправитель: Gibbel


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

Доброе время суток, digitron!
Существует, начиная с 386 процессоров:
mov eax,[edx]
bswap eax


Ответ отправлен: 02.06.2004, 09:26
Отправитель: ASMодей


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

Приветствую Вас, digitron!
bswap

* EMan: -=- Любовь существует! =-=


Ответ отправлен: 02.06.2004, 12:32
Отправитель: Евгений Иванов


Отвечает Ayl

Здравствуйте, digitron!
Ну как вариант:
mov eax, dword ptr [edx]
xchg ah, al
rol eax, 16
xchg ah, al


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


 Вопрос № 5380

Здраствуйте! Кто может подсказать в чем дело? У меня стоит Ahead Nero version 6.3.1.10 + все необходимые дополнения, плагины и программы. Но когда я хочу записать диск более чем 700 MB мой сидюшник выбрасывает диск и появляется сообщение недостаточно места на диске вставте другой. Привод у меня LG CD-RW и болванки 870 MB поддерживает!!!!!!! подскажите что делать пожалуйста!!!!!!!!



Вопрос отправлен: 01.06.2004, 20:56
Отправитель: Сергей

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

Отвечает Snowm@n

Приветствую Вас, Сергей!
Ну раз вы написали именно сюда, то могу посоветовать переписать ручками драйвер CD-RW или хотя бы NERO :)))
А если серьезно, то надо что-то мутить с финализацией в опциях - точно не знаю.

Ответ отправлен: 01.06.2004, 21:14
Отправитель: Snowm@n


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

Добрый день, Сергей!
Написать резидентный драйвер, который будет записывать твои диски.
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 02.06.2004, 12:32
Отправитель: Евгений Иванов


 Вопрос № 5381

Здарова.
Опять я.
Где найти алгоритм шифрования(UUEncode ) на ассемблере?



Вопрос отправлен: 01.06.2004, 21:04
Отправитель: voxel

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

Отвечает Snowm@n

Приветствую Вас, voxel!
Rambler/Google/Yandex/...

Ответ отправлен: 01.06.2004, 21:15
Отправитель: Snowm@n


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

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


Ответ отправлен: 02.06.2004, 12:31
Отправитель: Евгений Иванов


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

Здравствуйте, voxel!
Хотел тебе послать TinyUUE.rar (11996), там программки на ассемблере для кодирования и декодирования UUE.
А послал нечаянно Эдуарду, за что прошу прощения, и обещаю по максимуму протестить его программу.
Voxel отпишись на trashcan2@yandex.ru пришлю тебе этот архив, если желаешь.


Ответ отправлен: 02.06.2004, 15:30
Отправитель: Стас


 Вопрос № 5382

Привет всем, как создать массив строк в ассемблере?



Вопрос отправлен: 01.06.2004, 21:17
Отправитель: Петя

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

Отвечает Snowm@n

Добрый день, Петя!
Как обыкновеный массив, выделяя (макс.дл.строки*кол.строк) байт.

Ответ отправлен: 01.06.2004, 23:10
Отправитель: Snowm@n


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

Создаёшь строки и заносишь их адреса в массив, который тоже можно создавать динамически.
* EMan: -=- Любовь существует! =-=


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


Отвечает Artemy

Добрый день, Петя!
massiv db 10 dup( 5 dup(20h),00h)
Вот массив из десяти строк, заполненных пробелами, ASCIIZ длиной 5 символов.

Ответ отправлен: 04.06.2004, 13:20
Отправитель: Artemy


 Вопрос № 5383

Помогите плз со следующ:
1 во всех руководствах, описаниях процессоров 80x86
сказано что программа должна обращаться к памяти с
помощью логического адреса вида:
селектор:смещение
селектор указывает на дескриптор указывающий на сегмент
и селектор находится в сегментном регистре,
смещение в др регистре ну и т п
Так ведь же когда делаешь программу на асме совершенно
спокойно пишешь адрес в виде xxxxxxxxh и всё без проблем
Например
...
mov esi, 400000h
mov eax, [esi]
...
до меня просто не доходит: какая связь между
xxxxxxxxh и селектор:смещение?

(когда набирал этот текст вдруг посетило "озарение"
может быть xxxxxxxxh -это смещение? тогда где селектор?)
2 как сделать чтобы в секцию кода в EXE можно было писать
(+читать) Я знаю что это можно сделать и есть
утилиты которые это делают с EXEшником Я имею в виду там же
во флагах секции такие бывают флаги:

00000004h - используется для кода с 16 битными смещениями
00000020h - секция кода
00000040h - секция инициализированных данных
00000080h - секция неинициализированных данных
00000200h - комментарии или любой другой тип информации
00000400h - оверлейная секция
00000800h - не будет являться частью образа программы
00001000h - общие данные
00500000h - выравнивание по умолчанию, если не указано иное
02000000h - может быть выгружен из памяти
04000000h - не кэшируется
08000000h - не подвергается страничному преобразованию
10000000h - разделяемый
20000000h - выполнимый
40000000h - можно читать
80000000h - можно писать
Если я сделяю секцию секцией иниц данных, то
в ней можно выполнять код?
И ещё насчёт этого вопроса:
в описании проц 80x86 сделано описание дескриптора сегмента
так там есть поля тип дескриптора, тип сегмента и т п
И там же сказано что если сегмент - сегмент кода с
выполняющиейся программой то в него
НЕЛЬЗЯ записывать так как тогда сделать секцию?
3
Если в какой нибудь сегментный регистр занести неправильный
селектор (напр селектор кот указывает на нулевой дескриптор
из GDT) то исключение произойдёт сразу же или когда я через
этот селектор обращусь к памяти?

4 У каждой задачи своё значение регистра CR3 (PDBR)?
Благодаря этому и образуется изолированное адр простр для каждой задачи?

5 регистр CR3 указывает на каталог страниц
А в этом каталоге страниц (точнее в таблице страниц
указатель на которую есть в каталоге страниц) есть записи только для
некоторых страниц? кот имеют соответствие(связаны) с участками
физической памяти?
То есть я имею в виду если я в программе обращусь по адресу (логич адресу)
которому не соответствует физич память то по идее должно произойти исключение
так вот процессор узнаёт о том что данный вирт адрес не имеет отображения в физической памяти
не найдя запись для соотв страницы в таблице страниц?

P.S.: Я так понимаю редактировать таблицу страниц из Ring-3 нельзя?
P.P.S.: А из Ring-3 можно как нибудь взять сод регистра CR3 из TSS др задачи
(хотя TSS другой задачи на наше адр пространство не отображён
и заменить CR3 у себя вряд ли получится...)
и таким образом полчить доступ к её данным к её коду к её адр пространству?




Вопрос отправлен: 01.06.2004, 23:28
Отправитель: croll

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

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

Приветствую Вас, croll!
1. Это и есть смещение, а селектор явно не указывается, он находится в
сегментном регистре. Если регистр не указан, то используется тот,
который определен директивой ASSUME, а если нужно указать явно, то пиши
так: mov eax,es:[esi] или mov eax,fs:[esi].
3. В сегментные регистры можно заносить любые числа. Исключение возникнет
при их использовании в качестве селектора, то есть при обращении к памяти
через этот регистр.
4. Точно так. Это значение хранится в TSS, который у каждой задачи свой.
5. У каждой записи в таблице страниц несколько младших бит отведено для
хранения служебной информации, и насколько я помню бит номер 0 указывает
на присутствие или отсутствие страницы в физической памяти.
P.P.S Есть более легкий способ получить доступ к адресному пространству другой
задачи, чем через TSS: поищи описание функций ReadProcessMemory и
WriteProcessMemory.


Ответ отправлен: 02.06.2004, 09:27
Отправитель: ASMодей


Отвечает _vt

Здравствуйте, croll!
1) Селектор используется дефолтный.
2) В явном виде можно задавать свойства секций в ассемблере FASM - там они описываются примерно так:
section .code readable writeable executable
(могу ошибаться в формате описания - смотри в документации к FASM)
* Origin : Life begins at 1000Mhz!


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


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


  • 1.

    Переключатель (selector) сегмента находится в сегментных регистрах ;)
    Из описательной таблицы по соотв. переключателю сегмента берётся начальный адрес сегмента и к нему прибавляется смещение.
    Это вычисление линейного адреса из логического.
    Потом, если не используется страничность, этот адрес выбрасывается на шину процессора, то есть это физический адрес.
    Если же используется страничность, то проводится дополнительные действия, как-то преобразование логического адреса по формуле из таблицы каталога, потом из таблицы страниц и после уже используется смещение.
  • 3.

    Да, когда обратишься к этому сегменту.
  • 4.

    Изол. алр. пространство образуется за счёт страничности и сегментной модели памяти.

* EMan: -=- Любовь существует! =-=


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



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

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

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




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


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


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


В избранное