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

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.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

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

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




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


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

В избранное