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

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


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

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

Выпуск № 603
от 29.07.2003, 22:10

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


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

Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.23
URL: Программирование
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 111.62
[Подробней >>]
Евгений Иванов
Статус: Опытный
Общий рейтинг: 139.15
URL: Super Assembler Software
[Подробней >>]
 
Илья
Статус: Опытный
Общий рейтинг: 103.54
[Подробней >>]
Zedr0n
Статус: Доверительный
Общий рейтинг: 108.15
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 120.91
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 118.24
[Подробней >>]
Tigran K. Kalaidjian
Статус: Профессиональный
Общий рейтинг: 123.78
URL: Методы оптимизации работы ПК
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 107.7
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]
 
getoff
Статус: Начальный
Общий рейтинг: 109.3
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 112.04
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]


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

Вопрос № 3780. Здравствуйте, уважаемые эксперты ! Знаю, что в программы для Delphi можно вставлять ассемблерные вст... (ответов: 4)
Вопрос № 3781. Привет! Пишу оболочку под ДОС типа NC, возникло следующее затруднение: Необходимо выполнять досовски... (ответов: 4)
Вопрос № 3782. Здравствуйте, люди добрые! После рассылки от 25.07.03 появилось несколько вопросов: 1) если не затру... (ответов: 4)
Вопрос № 3783. Книгу Олега я прочитал! За день 3 раза! Но многое не понял! Я хотел бы узнать ваш адрес, чтобы вы ст... (ответов: 4)
Вопрос № 3784. Sorry, что не послал все вопросы одним письмом. Есть ли в досе функция для получения символа с экран... (ответов: 4)
Вопрос № 3786. Да, я приглашал на Кипр; будете на Кипре - звоните 99555346 - мой моб. Пива попьём.... (ответов: 5)

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


 Вопрос № 3780

Здравствуйте, уважаемые эксперты !
Знаю, что в программы для Delphi можно вставлять ассемблерные вставки, например, чтобы обращаться к портам. Но ведь откомпилированные программы работают на 3-м кольце защиты. Как получается выполнять различные специфические операции(опять же, (писатьчитать) в порт) на этом уровне привелегий?
заранее спасибо



Вопрос отправлен: 24.07.2003, 22:34
Отправитель: Aram Markaryan

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

Отвечает Bob Johnson

Добрый день, Aram Markaryan!
Писать и читать можно не из всех портов, а только из некоторых, да и то только под Windows 9x (под НТ - еще больше ограничений). В частности - ты можешь легко программировать таймер для звука, но не можешь перепрограммировать таймер, который отвечает за частоту прерываний.

* EMan1.5: ---===*** The hell we've created ourselves ***===---


Ответ отправлен: 26.07.2003, 14:22
Отправитель: Bob Johnson


Отвечает Dark_Lord

Добрый день, Aram Markaryan!
В принципе никак, но если как-нибудь (это уже отдельная тема) переидти в 0-вое кольцо, то всё работает. Но ассемблер необязательно использовать именно для программирования портов, его гораздо удобнее использовать для получения оптимальной отдачи от программы!

Ответ отправлен: 25.07.2003, 19:02
Отправитель: Dark_Lord


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

Добрый день, Aram Markaryan!
В Win9x получается работать с портами (в win311 тоже).
В winNT (2000, XP) - не знаю, не пользовался.
Читай подробнее мой ответ на вопрос 3741.


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


Отвечает Илья

Приветствую Вас, Aram Markaryan!
Смотря под что писать:
9x и ранее имеют очень хорошую дыру в этом плане (по идее так не должно быть)
NT и выше не дают это делать напрямую, но можно использовать различные драйвера и библиотеки "обёртки", которые либо переключаются в ring0, либо в нём работают.

Ответ отправлен: 25.07.2003, 00:42
Отправитель: Илья


 Вопрос № 3781

Привет!
Пишу оболочку под ДОС типа NC, возникло следующее затруднение:
Необходимо выполнять досовские команды, типа dir, cd, rd и т.д., не помню где, но где-то читал, что для их выполнения можно как-то хитро вызывать command.com с каким-то ключом, чтобы он потом вернул управление обратно в программу, если кто знает, то пните в нужную сторону, и еще, как при таком вызове отследить, что была введена неправильная комманда, т.е. что и как вернет command.com в этом случае?
Спасибо за внимание! :)



Вопрос отправлен: 25.07.2003, 00:04
Отправитель: dickwint

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

Отвечает Dark_Lord

Добрый день, dickwint!
"command.com параметры /c" вернёт управление в программу.

Ответ отправлен: 25.07.2003, 19:04
Отправитель: Dark_Lord


Отвечает Zedr0n

Доброе время суток, dickwint!
Если я правильно припоминаю, command.com /c команда вполне работает. Что возврашает? Вот это не в курсе, но думаю, что в документации по функции 4B 21 прерывания должно быть написано. Так что удачи!


Ответ отправлен: 26.07.2003, 15:27
Отправитель: Zedr0n


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

Доброе время суток, dickwint!
/C команда
Но есть покруче:
int 2Eh
Передаёшь в ES:SI адрес строчки для выполнения, заканчивается 13.
Note: The top-level command.com executes the command.
All registers including SS and SP are destroyed as in INT 21/AH=4Bh.
Since COMMAND.COM processes the string as if typed from the keyboard,
the transient portion needs to be present, and the calling program
must ensure that sufficient memory to load the transient portion can
be allocated by DOS if necessary.


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


Отвечает _vt

Здравствуйте, dickwint!
command.com надо вызвать с ключом /c, а то что он вернет на экран - по стандартам файловых оболочек необходимо сохранять, и по желанию пользователя отображать... :-(

---===*** E-Man 1.4 - waiting for 1.5...***===---


Ответ отправлен: 25.07.2003, 11:32
Отправитель: _vt


 Вопрос № 3782

Здравствуйте, люди добрые!
После рассылки от 25.07.03 появилось несколько вопросов:
1) если не затруднит, вкратце, можете рассказать - что такое "кольца защиты" (нулевое, третье) - нам в универе об этом даже не заикались, а интересно :)
2)что такое "доки Iczeliona"? кто это с таким именем и где эти докт валяются?
3)по вопросу 3736: если архив у кого появится - киньте и мне тоже - никогда такого не видел, хоть посмотрю
4)(возможно, оффтопик): как правильно произносятся по-русски (с ударениями) следующие буржуйские слова: Thoroubre, Tejas и Prescott?
ЗЫ: спасибо всем, кто отвечает на мои вопросы - помогает :)



Вопрос отправлен: 25.07.2003, 07:46
Отправитель: Ренат (renatka_f@mail.ru)

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

Отвечает Bob Johnson

Добрый день, Ренат!
1. Процессор, начиная с 80386 позволяет аппаратно разделить выполняемое программное обеспечение на системное (ядро ОС, драйвера и т.д.) и прикладное (все программы, которые ты используешь). При этом у прикладных программ значительно меньше прав - они не могут выполнять некоторые команды, обращаться к некоторым участкам памяти, загружать некоторые данные в регистры и т.д. Это все реализовано за счет нескольких колец защиты: 0 (самое высокое, все команды доступны и т.д.), 1, 2, 3 (самое низкое, минимальный уровень привелегий). Все твои программы работают на 3-м кольце. Переход с 3-го кольца на 0-е в общем случае должен быть невозможен (для надежной ОС), но Windows 98 очень легко это позволяет.
3. Вот тут автор того вопроса позже дал ссылку: http://medevalsoft.by.ru/demo.zip

* EMan1.5: ---===*** The hell we've created ourselves ***===---


Ответ отправлен: 26.07.2003, 14:22
Отправитель: Bob Johnson


Отвечает Ayl

Доброе время суток, Ренат!
В защищенном режиме процессора есть 4 уровня привилегий - от 0 до 3-х. Уровень привелегий прописывается в 2-х битах регистра флагов и в дескрипторах сегментов.
Чем меньше уровень, тем "круче" доступ.
Обычно используются уровни 0 и 3. 0 - это уровень ядра ОС, драйверов и т.п. Уровень 3 - это уровень пользовательских приложений.
Обычно при объяснениях защиты рисуют 4 концентрические окружности - отсюда и понятия о кольцах.

Ответ отправлен: 25.07.2003, 10:57
Отправитель: Ayl


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

Добрый день, Ренат!
1} Уровни защиты - есть четыре.
0 - полный контроль над нижними уровнями;
1, 2 - типа тоже самое;
3 - а это, братан, самый низжий, тут тусуются прикладные проги.
2} Iczelion@galaxycorp.com
3} Скачивай весь сайт! Там, по моему, около 300 (не менее) программ.
4} Так это по моему названия ядер процессоров?
А это лучше спросить у американцев...



Ответ отправлен: 25.07.2003, 11:42
Отправитель: Евгений Иванов


Отвечает Tigran K. Kalaidjian

Добрый день, Ренат!
По пунктам:
1. Кольца защиты - уровни привелегий в Win. Например Ring3 - пользовательский уровень. А для пользователя, как для любого смертного есть куча ограничений. Обычно эти ограничения не мешают начинающим программистам или несистемным программистам.
Ring0 - уровень ядра. Тут уже минимум ограничений и максимум привелегий. Это уровень Бога. Здесь можно работать с портами и делать многое другое, что недоступно на Ring3. На Ring0 обычно вешаются вирусы и драйвера.
2. Это примеры для начинающих программировать под Win, если я не ошибаюсь. Можно найти в комплекте с MASM32.
3. Если до 29-го Вам никто не пришлет - пишите на kalaidjian@pochtamt.ru

Ответ отправлен: 25.07.2003, 14:35
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3783

Книгу Олега я прочитал! За день 3 раза! Но многое не понял! Я хотел бы узнать ваш адрес, чтобы вы стали моим гуру в асме!



Вопрос отправлен: 25.07.2003, 12:28
Отправитель: Кирилл

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

Отвечает Bob Johnson

Добрый день, Кирилл!
Наш адрес - не дом и не улица, наш адрес - http://www.rusfaq.ru (впрочем, ты его уже и сам нашел :)

* EMan1.5: ---===*** The hell we've created ourselves ***===---


Ответ отправлен: 26.07.2003, 14:22
Отправитель: Bob Johnson


Отвечает Gibbel

Приветствую Вас, Кирилл!
Задавай возникающие вопросы в рассылку - тебе помогут. Но перед тем, как задать вопрос, просмотри архив рассылки - скорее всего кто-то уже задавал подобный вопрос до тебя...
И еще, помни, что теория без практики - это ничто.

Ответ отправлен: 25.07.2003, 12:41
Отправитель: Gibbel


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

Приветствую Вас, Кирилл!
Если ты пишешь мне, то сходи на мой сайт, там есть информация, какой у меня
почтовый ящик и ICQ есть!


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


Отвечает Tigran K. Kalaidjian

Приветствую Вас, Кирилл!
Как Вы так умудрились прочитать? Там же больше 30 глав !
Ну и не важно... Также не понятно к кому Вы в данный момент обращаетесь, ведь письмо отослано всем экспертам...
Ну и это не важно... Мой E-MAIL kalaidjian@pochtamt.ru , адреса других экспертов в начале каждого выпуска рассылки.
Если у Вас возникает вопрос, то лучше пишите его на RusFAQ.ru, а не лично на мыло, ибо так Вы получите наиболее полный ответ.

Ответ отправлен: 25.07.2003, 14:16
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3784

Sorry, что не послал все вопросы одним письмом.
Есть ли в досе функция для получения символа с экрана с нужного мне знакоместа, или это только чтением из видеопамяти?



Вопрос отправлен: 25.07.2003, 14:41
Отправитель: Dick Wint

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

Отвечает Zedr0n

Приветствую Вас, Dick Wint!
Все просто. Сперва передвигаем курсор функцией 02 10 прерывания Set Cursor Position, а потом используем функцию 08 Того же прерывания - Read character and attribute at cursor position. Вот и все.
Но один совет я все же дам. Скачай RBIL(Ralph Brown's Interrupt List) и больше такие вопросы возникать не будут. Для виндов - смотри MSDN. RTFM, в общем.
Удачи!


Ответ отправлен: 26.07.2003, 15:39
Отправитель: Zedr0n


Отвечает Tigran K. Kalaidjian

Доброе время суток, Dick Wint!
Нету, ИМХО. А зачем она, если можно напрямую ?
mov ax, 0b800h
mov es, ax
mov si, 70
mov ax, word ptr es:[si]
Тогда в al будет лежать ASCII-код символа из 1-й строки, 70-го столбца.

Ответ отправлен: 25.07.2003, 22:02
Отправитель: Tigran K. Kalaidjian


Отвечает Ayl

Добрый день, Dick Wint!
Функция 08 прерывания 10h возвращает в AL символ в позиции курсора, а в BH - его атрибут. Только нужно в BH еще передать номер видеостраницы.
Для графического режима с помощью функции 0dh (BH = видеостраница, CX = координата X, DX = координата Y) можно получить цвет точки. Цвет возвращается в регистре AL.

Ответ отправлен: 25.07.2003, 17:03
Отправитель: Ayl


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

Добрый день, Dick Wint!
Эта функция в BIOS-е есть.
8 функция 16 прерывания.
Берёт символ и свойство оного с текущего расположения.
in:
AH=8
BH=страница
out:
AL=символ
AH=атрибут
Расположение устанавливай 2-ой функцией.


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


 Вопрос № 3786

Да, я приглашал на Кипр;
будете на Кипре - звоните 99555346 - мой моб.
Пива попьём.



Вопрос отправлен: 25.07.2003, 22:01
Отправитель: Эдвард Самохвалов (zeleniy_kot@yahoo.com)

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

Отвечает Tigran K. Kalaidjian

Приветствую Вас, Эдвард Самохвалов!
Ок! Отправлю в рассылку =)На днях позвоню. Хых.

Ответ отправлен: 25.07.2003, 22:27
Отправитель: Tigran K. Kalaidjian


Отвечает Bob Johnson

Приветствую Вас, Эдвард Самохвалов!
Ок, только осталось на Кипр попасть :)
Извини может быть за нетактичный вопрос, но как тебя все-таки правильно зовут - "Эдвард Самохвалов" или "Эдвард Самосвалов"? :)

* EMan1.5: ---===*** The hell we've created ourselves ***===---


Ответ отправлен: 26.07.2003, 14:51
Отправитель: Bob Johnson


Отвечает Gibbel

Здравствуйте, Эдвард Самохвалов!
Ок, как соберусь на Кипр, сразу же позвоню ;-)

Ответ отправлен: 28.07.2003, 09:31
Отправитель: Gibbel


Отвечает getoff

Здравствуйте, Эдвард Самохвалов!
ОТЛИЧНАЯ ИДЕЯ

Ответ отправлен: 26.07.2003, 05:05
Отправитель: getoff


Отвечает baldr

Добрый день, Эдвард Самохвалов!
Уж лучше вы к нам... (c) :)))

Ответ отправлен: 28.07.2003, 10:03
Отправитель: baldr



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (34)
C / C++ (26)
Perl (4)
Builder / Delphi (19)
Pascal (23)
Basic / VBA (12)
Java / JavaScript (12)
PHP (9)
Криптография (8)
WinAPI (13)
Пользователю
Windows 95/98/Me (47)
Windows NT/2000/XP (46)
"Железо" (39)
Поиск информации (25)
Администратору
Windows NT/2000/XP (26)
Linux / Unix (10)
Юристу
Гражданское право (12)
Семейное право (7)
Трудовое право (10)
КоАП (6)

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




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


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


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

В избранное