Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 347
от 20.08.2002, 11:50
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 1036 Отправлено ответов: 3096 Активность: 298.8 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Pablo Статус: Опытный Общий рейтинг: 130.04 URL: Моя страничка [Подробней >>] |
copycon Статус: Доверительный Общий рейтинг: 113.01 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 136.75 URL: моя шедевра [Подробней >>] |
Dark_Lord Статус: Опытный Общий рейтинг: 143.26 [Подробней >>] |
Shal Статус: Опытный Общий рейтинг: 107.5 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 159.07 [Подробней >>] |
ASMодей Статус: Опытный Общий рейтинг: 126.77 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 122.05 [Подробней >>] |
LIFO Статус: Опытный Общий рейтинг: 139.42 Телефон: 8 01710 24758 [Подробней >>] |
Sensey Статус: Профессиональный Общий рейтинг: 131.53 Телефон: +38 (0572) 41-76-04 дом. [Подробней >>] |
Gibbel Статус: Опытный Общий рейтинг: 108.94 URL: Страничка обо мне и моих друзьях [Подробней >>] |
Dron Статус: Профессиональный Общий рейтинг: 123.08 URL: Операционная система с нуля! [Подробней >>] |
Топор Статус: Профессиональный Общий рейтинг: 117.47 URL: Хорошая Русская Металлическая команда Телефон: (8462)500298 [Подробней >>] |
Painbringer Статус: Профессиональный Общий рейтинг: 195.18 URL: Музычка, стишки и прочая дрянь [Подробней >>] |
Александр Статус: Профессиональный Общий рейтинг: 117.85 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 990. Здравствуйте!! Напишиет пожалуйста прерывани и функцию для удаления файла! Заранее благодаре! ... (ответов: 5)
Вопрос № 991. Доброе время суток! У меня трабла! Я пытался посмотреть исходный код некоторых программ под винду в ... (ответов: 2)
Вопрос № 992. RamDisk - это программа, а точнее драйвер, который позволяет создавать виртуальный хард в памяти ком... (ответов: 2)
Вопрос № 995. Здравствуйте! Как найти или вычислить физические адреса обработчиков прерываний КОНТРОЛЛЕРА АППАРАТН... (ответов: 4)
Вопрос № 998. Hello Expertы! Скажите, может такое быть что на заданный вопрос не ответил ни один эксперт (вопросы ... (ответов: 6)
Вопрос № 999. В статьях " Iczelion: Уроки Win32API" было написано, что каждую Win32 пpогpамму Windows за... (ответов: 10)
Вопросов: 6, ответов: 29
Вопрос № 990 |
Здравствуйте!!
Напишиет пожалуйста прерывани и функцию для удаления файла!
Заранее благодаре!
Byter.
Вопрос отправлен: 14.08.2002, 21:42
Отправитель: Byter
[Следующий вопрос >>] [Список вопросов]
Отвечает Pablo
Приветствую тебя, Byter!
int21h при ah=41h, ds:dx - имя файла, cl - маска атрибутов, в случае удаления на сервере.
Ответ отправлен: 14.08.2002, 22:26
Отправитель: Pablo
Отвечает copycon
Доброе время суток, Byter!
Ветхий и Новый Заветы по программированию на ассемблере x86/DOS/Win - Interrupt List by Ralf Brown
НАПИСАТЬ МЕТРОВЫМИ БУКВАМИ НА ASM-FORUM'е !!!!!!!!!!!!!
http://www-2.cs.cmu.edu/~ralf/
http://www.pobox.com/~ralf/files.html
FTP.CS.CMU.EDU [128.2.206.173]
/afs/cs.cmu.edu/user/ralf/pub/interrupt-list
int 21h
ah=41h
DS:DX - ASCII String "d:pathfilename.ext",0
(заканчиваеться на НОЛЬ)
или
INT 21 - Windows95 - LONG FILENAME - DELETE FILE
AX = 7141h
DS:DX -> ASCIZ long name of file to delete
SI = wildcard and attributes flag
0000h wildcards are not allowed, and search
attributes are ignored
0001h wildcards are allowed, and only files
with matching names and attributes are
deleted
CL = search attributes
CH = must-match attributes
Return: CF clear if successful
CF set on error
AX = error code (see #01680)
7100h if function not supported
Note: for compatibility with DOS versions prior to v7.00,
the carry flag should be set on call to ensure
that it is set on exit
Удачи.
Ответ отправлен: 15.08.2002, 20:42
Отправитель: copycon
Отвечает Broken Sword
Здравствуйте, Byter!
1.
Вход:
ah = 41h
DS:DX -> ASCIZ строка (имя файла)
int 21h
Выход:
CF = 0 если все ОК
CF = 1 если error
2. Тоже самое, только AX = 7141h - для файлов с длинными именами (Win95)
3.
Вход:
ah = 13h
DS:DX -> FCB неоткрытого файла
int 21h
Выход:
al = 00 если все ОК
al = FF если не все ОК...
Ответ отправлен: 14.08.2002, 23:02
Отправитель: Broken Sword
Отвечает Dark_Lord
Доброе время суток, Byter!
В досе (int 21h)
mov ah,41h
mov ds,seg имя файла
mov dx,offset имя файла
int 21h
если cf=0 всё ОК
Ответ отправлен: 14.08.2002, 23:52
Отправитель: Dark_Lord
Отвечает Shal
Доброе время суток, Byter!
....................
.data
name_file db 'c:auto.bat'
.................
mov ah,41h
mov dx,offset name_file
int 21h
Ответ отправлен: 17.08.2002, 07:27
Отправитель: Shal
Вопрос № 991 |
Доброе время суток!
У меня трабла! Я пытался посмотреть исходный код некоторых программ под винду в SoftICE, но при открытии он говорил, что отсутствует пакет Qbasic или С++! На сколько я понимаю, для того чтобы разшифровать ехе файл нужен пакет того, чем оно компилировалось! Не мог бы мне кто объяснить что это за пакеты, и главное!!!!, где их можно взять! Заранее большое спасибо!
Вопрос отправлен: 14.08.2002, 23:44
Отправитель: megalama (megalama@land.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Добрый день, megalama!
Что за бред!!!
Код ты можешь посмотреть если у тебя есть отладочная информация об этом, а не сам пакет. Ассемблерный код и этого не требует
Ответ отправлен: 15.08.2002, 16:50
Отправитель: masquer
Отвечает Shal
Приветствую Вас, megalama!
Я могу дать QBasic. около метра.
Ответ отправлен: 17.08.2002, 07:27
Отправитель: Shal
Вопрос № 992 |
RamDisk - это программа, а точнее драйвер, который позволяет создавать виртуальный хард в памяти компа. Очень полезен для работы с "большой" графикой. На Рам диск хорошего размера складываются темпы Корела и Фотошопа, при этом реальная скорость работы возрастает на медленных машинах (меньше гигагерца) раза в полтора. Поэтому нужен рам диск (под nT/2000/XP) с возможностью нормально создавать диск с обьёмом не меньше 100 мегабайт, но приму любые варианты... И ещё вопрос, знает ли кто программу позволяющую использовать образы Nero (nrg) для создания Virtual CD? Или хотя бы конвертить образы разных прог друг в друга.....
Мыло не для бомбинга : alastorz@mtu-net.ru
Вопрос отправлен: 15.08.2002, 07:44
Отправитель: ALastorZ (alastorz@mtu-net.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Pablo
Приветствую Вас, ALastorZ!
На разных файловых архивах, типа files.com.ua или ufa.com.ua, поищи программку Ramdrive для nt/2k, а вообще я тебе пример выслала так что по нему сможешь сам запрограммировать.
Ответ отправлен: 15.08.2002, 10:15
Отправитель: Pablo
Отвечает masquer
Доброе время суток, ALastorZ!
смотри на сайте cenatek
Ответ отправлен: 15.08.2002, 16:52
Отправитель: masquer
Вопрос № 995 |
Здравствуйте!
Как найти или вычислить физические адреса обработчиков прерываний КОНТРОЛЛЕРА АППАРАТНЫХ ПРЕРЫВАНИЙ ?
Нужен будильник вызывающий прерывание по IRQ8
1 раз в секунду.
Простенькая программа дя проверки ВИСНЕТ ::(( !!
Большое спасибо экспертам приславшим ответ на вопрос 964 !
Приложение:
Вопрос отправлен: 15.08.2002, 13:00
Отправитель: Виктор
[Следующий вопрос >>] [Список вопросов]
Отвечает copycon
Добрый день, Виктор!
Честно говоря не понял вопроса.
Что такое "физические адреса обработчиков прерываний КОНТРОЛЛЕРА АППАРАТНЫХ ПРЕРЫВАНИЙ" ?
Programmable Interrupt Controller (PIC) имеет адресса
PIC 1 - 0020-003F
PIC 2 - 00A0-00AF
PIC получает Hardware IRQ и генерирует прерывания, по умолчанию:
IRQ0 - int 08h -- Timer ( 18.2 раз в секунду)
IRQ1 - int 09h
..............
IRQ8 - int 70h -- RTClock (1024 раз в секунду)
так зачем тебе его перепрограммировать если ты можеш повесить свой обработчик на int 08h или 70h?
Удачи.
Ответ отправлен: 15.08.2002, 21:39
Отправитель: copycon
Отвечает ASMодей
Добрый день, Виктор!
Не совсем понял, что ты хотел сделать этой программой, но
ошибки встречаются на первых же шагах: при переопределении
вектора INT 70h. Дело в том, что в таблице прерываний
адреса обработчиков хранятся в "перевернутом" виде (как
и все другие числа в памяти), то есть сначала (по адресу
01C0h) идет смещение обработчика, а затем (по адресу
01C2h) - сегмент обработчика.
PS. Вообще работе с Real-Time Clock (и с будильником)
выделено прерывание INT 1Ah. Почитай документацию,
зозможно для твоей программы подойдет один из этих
сервисов.
Ответ отправлен: 16.08.2002, 10:34
Отправитель: ASMодей
Отвечает Ayl
Здравствуйте, Виктор!
Я, конечно, дико извиняюсь, но нафига такое городить?
BIOS предоставляет интерфейс для работы с RealTimeClock. Это прерывание 1ah (функции 6 и 7 для, соответственно, установки и сброса user alarm). При использовании ф-ции 6 надо перехватывать прерывание 4ah для обработки момента срабатывания.
Ответ отправлен: 15.08.2002, 14:33
Отправитель: Ayl
Отвечает Broken Sword
Доброе время суток, Виктор!
Прерывание Номер вектора
IRQ0 08h
IRQ1 09h
IRQ2 0Ah
IRQ3 0Bh
IRQ4 0Ch
IRQ5 0Dh
IRQ6 0Eh
IRQ7 0Fh
IRQ8 70h
IRQ9 71h
IRQ10 72h
IRQ11 73h
IRQ12 74h
IRQ13 75h
IRQ14 76h
IRQ15 77h
Адреса смотри в таблице векторов. Прогу смотреть лень чесн.говоря... если никто не ответит - пиши....
Ответ отправлен: 15.08.2002, 16:12
Отправитель: Broken Sword
Вопрос № 998 |
Hello Expertы!
Скажите, может такое быть что на заданный вопрос не ответил ни один эксперт (вопросы по моему мнению были не сложные) или просто вопрос не дошел, хотя отчет пришел и там написано "Вам прислали 0 ответов". Поэтому я осмелюсь повторить вопросы.
Вот с сентября решил вплотную заняться виндовсом поэтому нужна литература и желательно бы попроще и по нужнее.
Т.е. Я хотел бы найти такую литературу где описывается устройство Виндовса, его кольца, вызовы фунций,управление,и вообще как он работает.
Может кто ссылочку, или книгу какую купить посоветует.
И малюхотный вопросик на тему Доса: Как написать процедуру -Рандомайзер на асме желательно попроще и чтоб числа из небольшого диапазона выбирал, пробовал у Джордейна таймер программировать дык он там мне то 4 то 2 все время выдавал,и в рассылке видел пример с умножением чисел но там при старте он с одних и тех же чисел вегда начинает.
Всем предложениям буду очень рад!
З.Ы. Спасибо за предыдущие ответы!!!
Вопрос отправлен: 16.08.2002, 06:38
Отправитель: Antuan Undegro
[Следующий вопрос >>] [Список вопросов]
Отвечает Dark_Lord
Добрый день, Antuan Undegro!
Посмотри на http://wasm.ru/src/
Ответ отправлен: 16.08.2002, 20:40
Отправитель: Dark_Lord
Отвечает LIFO
Приветствую Вас, Antuan Undegro!
ГМ...
www.microsoft.com или напиши письмо Билли:)
Ответ отправлен: 17.08.2002, 22:19
Отправитель: LIFO
Отвечает masquer
Здравствуйте, Antuan Undegro!
Вопросы может и не сложный, но иногда в такой форме задаются. Или куча мусора, не относящегося ни к чему, или на один и тот же вопрос отвечаешь уже 10 раз подряд.
Из книг - ищи Рихтера и Питрека.
Ответ отправлен: 16.08.2002, 09:17
Отправитель: masquer
Отвечает Sensey
Доброе время суток, Antuan Undegro!
Ну так возьми том пример, который ты видел, а при старте проги запихивай в начальные параметры число с таймера...
Можно с адреса 40:6С - двойное слово, колво 55 мс тиков со времени последнего ресета.
Ответ отправлен: 16.08.2002, 11:32
Отправитель: Sensey
Отвечает Gibbel
Доброе время суток, Antuan Undegro!
1. msdn.microsoft.com
2. А ты задавай начальным значением милисекунды из таймера.
Ответ отправлен: 16.08.2002, 13:45
Отправитель: Gibbel
Отвечает Pablo
Приветствую тебя, Antuan Undegro!
Вот посмотри по ссылке ниже пример генератора случаных чисел:
http://wasm.ru/src/9/rand.zip
А инфу по винда обычно можно посмтореть в хелпе по среде программирования или в MSDN.
Ответ отправлен: 16.08.2002, 14:03
Отправитель: Pablo
Вопрос № 999 |
В статьях " Iczelion: Уроки Win32API" было написано, что каждую Win32 пpогpамму Windows запускает в отдельном виpтуальном пpостpанстве.
Т.е. пpогpамма будет иметь 4-х гигабайтовое адpесное пpостpанство.
Но тут возникло несколько глупеньких вопросов:))
1) Только ли Win32 пpогpамму Windows запускает в отдельном виpтуальном пpостpанстве? А досовские,.. разве не происходит эмуляция RealMode?
2) Как быть с регистрами процессора? они тоже эмулируются? Ведь, если записать в одном процессе
mov eax,0
то в другом, содержимое регистров процессора не изменятся ... я прав, или сильно ошибаюсь?
Направьте на путь истинный:))
С Уважением, Panadol
Вопрос отправлен: 16.08.2002, 11:41
Отправитель: Panadol
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Приветствую Вас, Panadol!
Отвечу на вопрос 2. Процессор у нас один (чаще всего). Поэтому изменение значения регистра глобально. Но! Windows, как многозадачная система, берет на себя проблему переключения задач.
В каждый момент времени выполняется только одна задача. В следующий момент текущая задача приостанавливается, ее контекст сохраняется, выбирается задача, которая будет выполнятся в следующий момент, восстанавливается ее контекст и управление передается новой задаче. И все начинается заново.
В каком порядке будут обрабатываться задачи, сколько каждой будет отводится времени и т.д. зависит от планировщика задач ОС.
Так что на твой вопрос реально ответов два:
а) изменение регистров в одной задаче приводит к такому же изменению регистров и во всех остальных (на уровне процессора), потому что он у нас один, а эмулировать регистры - это слишком накладно
б) с помощью технологии переключения задач ОС изменение регистров в одной задаче не приводят к изменению регистров в других задачах
Ответ отправлен: 16.08.2002, 12:31
Отправитель: Ayl
Отвечает ASMодей
Здравствуйте, Panadol!
Во-первых, Windows (95 и 98) выделяет процессу не 4 Гб,
а только 2. Остальные 2 Гб используются ядром системы и
динамическими библиотеками.
Во-вторых досовские программы работают под Windows в так
называемом виртуальном 8086 режиме процессора.
А все регистры процессора при переключении задач
сохраняются в сегменте состояния задачи (TSS). Причем все
это реализовано на аппаратном уровне и выполняется довольно
быстро. Подробнее об этом можно прочитать в документации на
процессоры Intel 80386 и выше.
Ответ отправлен: 17.08.2002, 19:55
Отправитель: ASMодей
Отвечает Dark_Lord
Приветствую Вас, Panadol!
В чём-то прав, в чём-то "сильно ошибаюсь";) Досовские проги идут в виртуальном режиме, а у винды есть специальная фигня, куда регистры сохранить мона!
Ответ отправлен: 16.08.2002, 20:28
Отправитель: Dark_Lord
Отвечает LIFO
Доброе время суток, Panadol!
Real Mode - 64к
Protected MOde(windows)- до 4 г
Чувствуешь разницу?
Ответ отправлен: 17.08.2002, 22:17
Отправитель: LIFO
Отвечает Dron
Доброе время суток, Panadol!
У каждой задачи есть ее контекст...
в контексте сохраняется состояние всех регистров (не включая FPU) а так же содержимое регистра cr3, который хранит в себе адрес каталога страниц...
так вот, при переключении задачи все регистры одной задачи сохраняются в ее контексте, а все регистры другой задачи считываются из, соответственно, ее контекста... при этом происходит смена таблицы страниц, и вся память, которую использовала предыдущая задача становится недоступна для текущей.
поэтому проблем с регистрами не возникает...
а эмуляция дос осуществляется в виртуальном режиме 86 процессора... система при этом всеравно остается в защищенном режиме и как и раньше переключает задачи.
Ответ отправлен: 16.08.2002, 12:02
Отправитель: Dron
Отвечает Топор
Добрый день, Panadol!
Строго говоря, процессы не исполняются одновременно одним процессором, между ними идёт переключение. А при переключении все регистры, стек и прочие приблуды прежнего процесса сохраняются в его сегменте состояния задачи, и восстанавливаются при возврате к этому процессу. И с виртуальным 86 то же самое.
Ответ отправлен: 16.08.2002, 13:37
Отправитель: Топор
Отвечает masquer
Здравствуйте, Panadol!
Этот вопрос относится к тем, на которые я с удовольствием отвечаю.
1. Досовские запускаются под отдельным менеджером, но тоже в отдельном пространстве.
2. Есть такое понятие - контекст процесса, в нем хранится информация о состоянии всех регистров и флагов процесса, соответственно для каждого процесса свой контекст, при переключении задачи просто происходит переключение контекста.
Поэтому содержимое регистров будет менятся только в пределах одного процесса, хотя менять содержимое контекста другого процесса возможно.
Ответ отправлен: 16.08.2002, 13:39
Отправитель: masquer
Отвечает Pablo
Добрый день, Panadol!
1. Насколько я понимаю, то Винды и ДОСовские проги запускают в отдельном пространстве, т.н. винтуальной машине ДОС! Хотя в некоторых книгах написано, что досовские проги разделяют пространство от 0 до 1М. Впрочем если у них сегменты разные то тогда все нормально.
2. Я думаю что если и эмулируются то только сегментные регистры, потому как при переключении задач все регистры сохраняются, хотя впрочем я и про сегментные не уверен, может и они не эмулируются, а тольок сохраняются для каждой задачи свои.
Ответ отправлен: 16.08.2002, 13:53
Отправитель: Pablo
Отвечает Painbringer
Приветствую Вас, Panadol!
Да собственно не мастдая это заслуга - а процессора - типа ж защищенный режим. А досовские проги тоже разные бывают. часть в режиме виртуального 86, а некоторые тоже в защищенном режиме работают.
Ответ отправлен: 17.08.2002, 00:36
Отправитель: Painbringer
Отвечает Александр
Добрый день, Panadol!
Хочется ругаться нехорошими словами. Такое впечатление, что Ассемблер все изучают в порядке дворового трёпа, играя по ходу дела в карточную игру "пьяница". А я слышал и читал, что Windows работает в защищённом режиме. А в защищённом режиме у каждой запускаемой программы есть такое понятие как контекст. Так вот при переключении задач контекст, куда входят и регистры, сохраняется. А ещё у 80x86 совместимых процессоров есть такой режим V86, виртуально-реальный, так сказать. Это такой апгрейд к защищённому режиму. Всё надоело сказки рассказывать. Пойду лучше во двор, в Magic поиграю(почти что "пьяница", только гораздо интереснее)...
P.S. Не лечи и нелечим будешь :-)
Ответ отправлен: 17.08.2002, 08:49
Отправитель: Александр
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (38) C / C++ (27) Perl (14) Delphi (17) Pascal (26) Basic / VBA (11) Java / JavaScript (13) PHP (12) MySQL / MSSQL (12) |
Пользователю Windows 95/98/Me (44) Windows NT/2000/XP (31) "Железо" (38) Поиск информации (18) |
Администратору Windows NT/2000/XP (16) Linux / Unix (14) |
Юристу Гражданское право (8) Семейное право (6) Трудовое право (7) КоАП (5) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||