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

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


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

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

Выпуск № 431
от 01.12.2002, 04:00

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


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

masquer
Статус: Профессиональный
Общий рейтинг: 151.24
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 136.64
URL: Задачи по ассемблеру
Телефон: 89039415024 (BiLine GSM)
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 122.59
URL: Страничка рассылки по Паскалю
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
 
Сергей
Статус: Начальный
Общий рейтинг: 107.74
[Подробней >>]
Portnov
Статус: Профессиональный
Общий рейтинг: 116.39
URL: Мой сайтик...
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.7
URL: Страничка обо мне и моих друзьях
[Подробней >>]
 
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 123.91
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 129.11
URL: моя рассылка по Protected Mode
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 117.35
[Подробней >>]
 
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 154.55
[Подробней >>]
keleb-glin
Статус: Доверительный
Общий рейтинг: 115.21
[Подробней >>]
Eugene
Статус: Опытный
Общий рейтинг: 110.85
URL: мощный файловый архив
[Подробней >>]
 
Andrew Vext
Статус: Доверительный
Общий рейтинг: 107.79
[Подробней >>]


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

Вопрос № 1946. Что ж вы человека DDK и DriverStudio пугаете. Ему всего навсего надо GiveIO, чтобы под NT к портам о... (ответов: 1)
Вопрос № 1947. Привет ! Подскажите, где можно скачать ВСЕ выпуски Калашникова. ... (ответов: 3)
Вопрос № 1948. >Во-первых, неплохо было бы хотя бы номер вопроса, чтобы понять, о чем речь идет. Да, и тогда уже об... (ответов: 1)
Вопрос № 1950. Доброе время суток, господа. Вот если я выполню такой код: mov eax, 1 cpuid то что будет означать ед... (ответов: 5)
Вопрос № 1952. Здравствуйте! Вопрос по работе с Soft-Ice (конкретно - Suite 2.0.1); Поставил я его под Win XP SP1 E... (ответов: 2)
Вопрос № 1953. >Еще раз, если человек задает вопрос в рассылке по ассемблеру, то, согласись, предлагать ему решение... (ответов: 1)
Вопрос № 1955. Здравствуйте господа. Накрапал нижеприведённую программку. Она должна просто напросто подождать нажа... (ответов: 3)
Вопрос № 1956. Здравствуйте дорогие Эксперты!!! Где можно найти что-нить типа "словарика", в котором есть... (ответов: 5)
Вопрос № 1957. Здраствуйте соратники! Подскажите пожалуйста адрес (адрес адреса) таблицы знакогенератора в ДОС и ее... (ответов: 2)
Вопрос № 1958. Доброе время суток. Возник небольшой вопросик. Как свое приложение полностью запихнуть в память так ... (ответов: 4)
Вопрос № 1959. Уважаемые эксперты,(если вам нетрудно) где ошибка в программе Windows виснет. SoftIce показывает exc... (ответов: 3)

Вопросов: 11, ответов: 30


 Вопрос № 1946

Что ж вы человека DDK и DriverStudio пугаете. Ему всего навсего надо GiveIO, чтобы под NT к портам обращаться.



Вопрос отправлен: 26.11.2002, 06:37
Отправитель: Vladimir

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

Отвечает masquer

Доброе время суток, Vladimir!
Во-первых, неплохо было бы хотя бы номер вопроса, чтобы понять, о чем речь идет. Да, и тогда уже объясни мне, безграмотному, что есть такое "GiveIO", а то так и умру в неведении.
Да, в добавок, операции с портами являются привилегированными в НТ и на уровне ринг3 будут вызывать соответствующее исключение, поэтому я всегда и говорю, что в общем случае без драйвера не обойтись. Но иногда можно и CreateFile использовать.

Ответ отправлен: 26.11.2002, 11:22
Отправитель: masquer


 Вопрос № 1947

Привет !
Подскажите, где можно скачать ВСЕ выпуски Калашникова.



Вопрос отправлен: 26.11.2002, 10:46
Отправитель: Prophet (jjsp@mail.ru)

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

Отвечает Maverick

Доброе время суток, Prophet!
Дык я же тебе их высылал, ты их не получил что ли?


Ответ отправлен: 27.11.2002, 10:33
Отправитель: Maverick


Отвечает Sensey

Доброе время суток, Prophet!
Каждую неделю этот вопрос звчит..
http://subscribe.ru/archive/comp.prog.assembler/


Ответ отправлен: 26.11.2002, 11:31
Отправитель: Sensey


Отвечает Сергей

Добрый день, Prophet!
Честно говорю - не знаю!


Ответ отправлен: 26.11.2002, 12:14
Отправитель: Сергей


 Вопрос № 1948

>Во-первых, неплохо было бы хотя бы номер вопроса, чтобы понять, о чем речь идет. Да, и тогда уже объясни мне, безграмотному, что есть такое "GiveIO", а то так и умру в неведении.
>Да, в добавок, операции с портами являются привилегированными в НТ и на уровне ринг3 будут вызывать соответствующее исключение, поэтому я всегда и говорю, что в общем случае без драйвера не обойтись. Но иногда можно и CreateFile использовать.
Вопрос № 1887
>А что тако DDK? Driver Development Kit.
>где его качнуть? я ьбыл в мсдене и там на стираницах DDK. А как скачать бесплатно? И что аткое Driver Studio?
>я бы его взял, там бы написал out комманды для моего принтера
GiveIO и подобные ему штуки (типа SMPort для Delphi) это и есть готовые драйвера для того, чтобы люди под NT не мучались с доступом к портам.
Например надо человеку бибикалку через динамик вывести, так что ему, покупать DriverStudio,DDK и VisualC, потом изучать принципы создания драйверов и т.д.
Ну вот для этого и созданы уже готовые. Я их на Google искал.



Вопрос отправлен: 26.11.2002, 12:31
Отправитель: Vladimir

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

Отвечает masquer

Приветствую Вас, Vladimir!
Рассылка, если не ошибаюсь, посвящена ассемблеру и на вопрос
я ответил исходя из этого.
Цитата:
Например надо человеку бибикалку через динамик вывести, так что ему, покупать DriverStudio,DDK и VisualC, потом изучать принципы создания драйверов и т.д.

Еще раз, если человек задает вопрос в рассылке по ассемблеру, то, согласись, предлагать ему решение на дельфи (равно как и на чем либо другом) несколько неумно, не так ли?
Был бы вопрос этот в рассылке по делфи, твои вопросы ко мне имели бы смысл, а так...

Ответ отправлен: 26.11.2002, 13:08
Отправитель: masquer


 Вопрос № 1950

Доброе время суток, господа.
Вот если я выполню такой код:
mov eax, 1
cpuid
то что будет означать единица в 31-м разряде edx.
Процессор Intel Pentium 4 Northwood.
(по тем данным, которые у меня есть - он еще reserved, но почему-то по нему некоторые программы находят у меня 3DNow и ... не работают.)



Вопрос отправлен: 26.11.2002, 15:17
Отправитель: Bob Johnson (bobjohn@newmail.ru)

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

Отвечает Сергей

Приветствую Вас, Bob Johnson!
Если у тебя есть Assembler, то пожалуйста пришли на ящик: срочно нужен! Заранее благодарен.
Мой ящик lawanoff@mail.ru

Ответ отправлен: 27.11.2002, 05:02
Отправитель: Сергей


Отвечает Portnov

Здравствуйте, Bob Johnson!
По мануалам от Интела:
Pending Break Enable. The processor supports the use of the FERR#/PBE# pin when the processor is in the stop-clock state (STPCLK# is asserted) to signal the processor that an interrupt is pending and that the processor should return to normal operation to handle the interrupt. Bit 10 (PBE enable) in the IA32_MISC_ENABLE MSR enables this capability.
(надеюсь, по-аглицки понимаете?)
Во всяком случае, 3DNow здесь точно ни при чем.
Кстати, по интеловским же мануалам, для последних моделей из серии IA-32 (т.е. как раз Pentium4) зарезервированы в этом EDX после CPUID(EAX=1) только биты 10, 20 и 30.
С уважением, Portnov.

Ответ отправлен: 26.11.2002, 21:21
Отправитель: Portnov


Отвечает Gibbel

Добрый день, Bob Johnson!
Согласно мануалу от Intel
Bit 31 - PBE—Pending Break Enable. The processor supports the use of the FERR#/PBE# pin when the processor is in the stop-clock state (STPCLK# is asserted) to signal the processor that an interrupt is pending and that the processor should return to normal operation to handle the interrupt. Bit 10 (PBE enable) in the IA32_MISC_ENABLE MSR enables this capability.

Ответ отправлен: 26.11.2002, 16:19
Отправитель: Gibbel


Отвечает masquer

Здравствуйте, Bob Johnson!
На AMD при запихивании в eax 80000001h перед cpuid установленный в edx
30 бит - 3DNow!™ Instruction Extensions
31 - 3DNow! Instructions
При eax=1 эти биты в edx нулевые.


Ответ отправлен: 26.11.2002, 17:16
Отправитель: masquer


Отвечает Dark_Lord

Приветствую Вас, Bob Johnson!
По идее эти биты нулевые, но если в еах 80000001h, а не просто 1, то этот бит расширение 3Dnow!

Ответ отправлен: 26.11.2002, 18:51
Отправитель: Dark_Lord


 Вопрос № 1952

Здравствуйте!
Вопрос по работе с Soft-Ice (конкретно - Suite 2.0.1);
Поставил я его под Win XP SP1 Eng;
Запускаю исследуемую прогу PROG.EXE, Ctrl-D, попадаю в SI.
Пробовал и MAP32 и MOD - нет этого процесса, не видит (как не видит и любой другой проги), причем видно все проги, к-е запускались через автозагрузку (реестр в т.ч.) - @Guard, DrWeb, ост-е. Пробовал грузить через Loader32 ( и 16) - нифига. Знаю по рез-там дизассемблирования и отладки в OllyDbg, что в исследуемой мной проге вызывается ф-я CreateFileA. Делаю в SI бряк bpx createfilea - он ставится, команда BL показывает его в листинге бряков, но когда запускаю прогу - ноль эмоций. Пробовал загрузку SI до Винды и во время :), но результат один :( Очень хочу понять, что я делаю не так.



Вопрос отправлен: 26.11.2002, 17:05
Отправитель: IanPo (ianpo@mail.ru)

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

Отвечает Gibbel

Добрый день, IanPo!
Под WinXP стабильно работают только версии 2.6 и 2.7

Ответ отправлен: 26.11.2002, 17:23
Отправитель: Gibbel


Отвечает Broken Sword

Добрый день, IanPo!
Ну, во-первых, команда MOD в XP является контекстно-зависимой, т.е. ты увидишь только те модули, которые видит текущий процесс. А во вторых - это не совсем то что тебе нужно, вернее этот список модулей - это совсем не то.
MAP32 - тоже не из той оперы. Тебе нужна команда ADDR. После ее ввода ты 100% увидишь все запущенные процессы, где-то в конце будет твой. Затем переключаешься в его контекст (ADDR proc_handle) и ставишь бряк. Должно сработать безотказно (хотя это странно, createfilea - это глобальная функция, может у тебя прога 16-битная?, тогда все понятно...)

Ответ отправлен: 26.11.2002, 18:55
Отправитель: Broken Sword


 Вопрос № 1953

>Еще раз, если человек задает вопрос в рассылке по ассемблеру, то, согласись, предлагать ему решение на дельфи (равно как и на чем либо другом) несколько неумно, не так ли?
>Был бы вопрос этот в рассылке по делфи, твои вопросы ко мне имели бы смысл, а так...
Смысл есть, потому что драйвер он и есть драйвер. Нет разницы, как к нему обратиться, из СИ через
h = CreateFile("\\.\giveio", GENERIC_READ, 0, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
через Delphi или через ассемблер. И я не приклепался а просто дал подсказку как человеку не мучаться с созданием драйверов.



Вопрос отправлен: 26.11.2002, 18:28
Отправитель: Vladimir

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

Отвечает masquer

Доброе время суток, Vladimir!
И я не приклепался а просто дал подсказку как человеку не мучаться с созданием драйверов.

Каждый спор подразумевает какую-то причину. Я не собираюсь с тобой спорить и причины не вижу. Ты считаешь что я не прав? Прекрасно - отправь не персональный вопрос, а в рассылку и напиши - "по вопросу такому-то я считаю что эксперт такой-то ошибся/лоханулся/облажался/etc., а я считаю, что нужно так-то и так-то".
Совет и подсказки дают тогда, когда их просят, я у тебя советов не прошу, и я уже взрослый мальчик, чтобы без тебя разобраться - что к чему.
На этом все...

Ответ отправлен: 26.11.2002, 18:45
Отправитель: masquer


 Вопрос № 1955

Здравствуйте господа.
Накрапал нижеприведённую программку. Она должна просто напросто подождать нажатия клавиши и после этого вывести сообщение. (программка написана (прошу прощения) в "чисто" исследовательских целях)
Запускаю это в досе, нажимаю клавишу, сообщение выводится, появляется файловый менеджер, но клавиатура уже не работает(ага, но ведь мышь то работает), запускаю мышью и всё, полный зависон.
Подскажите, в чём ошибка (ошибки).
.286
stackseg segment stack
db 100h dup("?")
stackseg ends
dataseg segment para public 'data'
oldVectSeg dw 0000h
oldVectOffset dw 0000h
Message db "Message$"
dataseg ends
codeseg segment para public 'code'
NumInt equ 9
AddrInt equ NumInt*4
assume cs: codeseg, ds: dataseg, ss: stackseg
start: mov ax, seg dataseg
mov ds, ax
xor ax, ax
mov es, ax
;сохранение вектора
mov ax, word ptr es:[AddrInt]
mov oldVectOffset, ax
mov ax, word ptr es:[AddrInt+2]
mov oldVectSeg, ax
;замена вектора
cli
mov ax, offset IntProc
mov es:[AddrInt], ax
mov ax, seg IntProc
mov es:[AddrInt+2], ax
sti
xor bx, bx
lab1: cmp bx, 0
je lab1

;восстановление вектора
cli
mov ax, OldVectOffset
mov es:[AddrInt], ax
mov ax, OldVectSeg
mov es:[AddrInt+2], ax
sti
mov dx, offset Message
mov ah, 9
int 21h

mov ax, 4C00h
int 21h
IntProc proc
mov bx, 1
mov al, 20h
out 20h, al
iret
IntProc endp
codeseg ends
end start



Вопрос отправлен: 26.11.2002, 20:44
Отправитель: Алексей

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

Отвечает Ayl

Добрый день, Алексей!
У меня подозрение, что дело в том, что ты не сообщаешь контроллеру клавиатуры о том, что принял данные. Попробуй в начало обработчика вставить команды:
in al, 60h ; скан-код нажатой клавиши
in al, 61h
or al, 80h
out 61h, al ; подтвердим получение
and al, 7fh
out 61h, al ; восстановим значение порта 61h
Ну и, кроме того, кто за тебя будет сохранять контекст прерванной программы? Прерывание 9 - это аппаратное прерывание! Оно может произойти в любой момент, а 2 регистра ты портишь (ax и bx).
Добавь в начало push ax bx (или pusha), а перед iret - pop bx ax (или popa).
Тогда проверку надо делать через переменную в памяти:
mov cs:[Pressed], 1 - это вместо mov bx, 1
И в теле программы:
cmp cs:[Pressed], 1
Эта переменная должна быть описана в кодовом сегменте, чтобы в обработчике прерывания не заниматься настройкой ds.


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


Отвечает Sensey

Добрый день, Алексей!
Сразу навскидку - регистры в прерывании ты обязан сохранять!


Ответ отправлен: 27.11.2002, 12:07
Отправитель: Sensey


Отвечает Bob Johnson

Доброе время суток, Алексей!
Ну а что ты хотел - ты перехватываешь прерывание клавиатуры и в его обработчике смело так меняешь bx...
Это мало кому понравится.
Тут нужно или bx не трогать, или сохранять его старое значение, а перед возвратом восстанавливать. Еще не помешает вызывать старый обработчик прерывания.


Ответ отправлен: 28.11.2002, 21:23
Отправитель: Bob Johnson


 Вопрос № 1956

Здравствуйте дорогие Эксперты!!!
Где можно найти что-нить типа "словарика", в котором есть описание команд Ассемблера и их кодов.
Пример:
NOP - ничего не делает, а только занимает место. Код: 10010000.
PUSH - сохроняет 2/4 байта в стеке. Код: 01010reg (один из кодов: из регистра) reg = 000(AX); 001(CX); 010(DX); 011(BX)...
У меня есть в книге "Язык Ассемблера для IBM PS и программирования", но она жутко старая (1992) - там команды с 2-х битными регистрами.
Заранее благодарен.



Вопрос отправлен: 26.11.2002, 21:11
Отправитель: Sinus

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

Отвечает Portnov

Добрый день, Sinus!
1) Мануалы от Интела, 2-й том "Instruction Set Reference", здесь весьма подробно про все команды от 8086 до Pentium4; см. на developer.intel.com в виде PDF файла, ~6Mb.
2) Попроще, OPCODES.HLP, входит в состав пакета Masm32, или можете в сети отдельно найти. Этот всего 85Кб, но не включает описание инструкций MMX, SSE и т.п.
С уважением, Portnov.

Ответ отправлен: 27.11.2002, 12:06
Отправитель: Portnov


Отвечает Gibbel

Доброе время суток, Sinus!
На developer.intel.com можешь найти документацию по всем командам.

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


Отвечает Maverick

Доброе время суток, Sinus!
Давай мыло.


Ответ отправлен: 27.11.2002, 10:33
Отправитель: Maverick


Отвечает keleb-glin

Приветствую Вас, Sinus!
Попробуй добыть хотя бы старый technical help по асму или norton guide по нему же. У меня есть они ( старые под ДОС ) но весят вместе ок. 4 мег. или 1 мег. tech-help. Если хочешь, попробую переслать ( только technical в 1мег.)

Ответ отправлен: 27.11.2002, 18:57
Отправитель: keleb-glin


Отвечает Bob Johnson

Здравствуйте, Sinus!
В любой книге, связанной с процессором и его командами. Посмотри на книжном рынке или в компьютерных магазинах.
Еще можно на сайте Intel скачать документацию (на английском).


Ответ отправлен: 28.11.2002, 21:24
Отправитель: Bob Johnson


 Вопрос № 1957

Здраствуйте соратники!
Подскажите пожалуйста адрес (адрес адреса) таблицы
знакогенератора в ДОС и ее формат.
tepex at hotbox.ru



Вопрос отправлен: 26.11.2002, 22:53
Отправитель: Tepex

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

Отвечает Sensey

Здравствуйте, Tepex!
int 43h указывает на таблицу, из Font Definition Table - на каждый символ массив из 8, 14, 16 байт
Размер можешь узнать в пееременной 0040h:0085h
В приложении выдержка из TechHelpa.
Скачай его - не пожалеешь! Можно взять на www.shegeda.chat.ru


Приложение:

Ответ отправлен: 27.11.2002, 12:19
Отправитель: Sensey


Отвечает keleb-glin

Добрый день, Tepex!
Вообще лучше (удобнее) на первое время работать не с адресами, а юзать функцию 11110h прерывания 10h.
Параметры:
ax - 1110h
bh - высота символов, таблица которых переопределяется ( ширина всегда 8 )
bl - плок шрифтов для загрузки ( по дефолту - юзай 0 - не ошибёшься)
сx - количество переопределяемых символов.
dx - ascii-код первого переопределяемого символа
es:bp - данные о символах. На символь отводится по bh байт, они указываются в виде ( зд. - 16 байт/символ)
db 00010000b
db 00010000b
db 00010000b
db 00001000b
db 00000100b
db 00010010b
db 00000000b
db 00101000b
db 00000000b
db 00010000b
db 00000100b
db 00100000b
db 00001000b
db 00000000b
db 00000000b
db 00000000b
0 - отсутствие пиксела
1 - присутствие
Если переопределяется несколько символов, они определяются подряд
Этого хватит на первое время. Об остальном - посмотри в справочнике ( одной рассылкой нельзя научиться ). Есть классная документация - techhelp. Она под дос - но полезная. Хочешь - вышлю.

Ответ отправлен: 30.11.2002, 22:13
Отправитель: keleb-glin


 Вопрос № 1958

Доброе время суток.
Возник небольшой вопросик. Как свое приложение полностью запихнуть в память так что бы оно не трогало винчестер при работе?



Вопрос отправлен: 26.11.2002, 22:57
Отправитель: Switcher

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

Отвечает masquer

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

Ответ отправлен: 27.11.2002, 10:37
Отправитель: masquer


Отвечает Eugene

Добрый день, Switcher!
Так чтобы оно полностью не трогало винчестер у тебя сделать не получится. Во первых оно записано на винчестер, и чтобы загрузить приложение в память надо читать с диска, ниоткуда оно в памяти не появится. Во вторых приложение сразу грузится в память и висит там, и к диску не обращается,
к диску обращается операционная система. Но можно сделать и так, чтобы и ОС не обращалась. При загрузке программы её можно оставить там резидентно, но это только программки под дос, под винду не знаю как сделать.

Ответ отправлен: 27.11.2002, 09:35
Отправитель: Eugene


Отвечает keleb-glin

Здравствуйте, Switcher!
Если в функции твоего приложения не входит обращение к диску, оно и не будет его трогать. Попробуй запустить прогу с дискетки , а потом её (дискетку) вынуть. Ничего не произойдёт. Прога в памяти не зависит от своей копии на диске (на этом основан принцип полиморфизма) - когда программа при запуске-завершении расшифровывает-зашифровывает сама себя.


Ответ отправлен: 27.11.2002, 18:51
Отправитель: keleb-glin


Отвечает Bob Johnson

Добрый день, Switcher!
Как я понимаю, под винды? Тогда, в принципе, никак...
Потому что за память в виндах отвечает Virtual Memory Manager (тоже VMM), который сам определяет, какие страницы выгрузить на диск, а какие загрузить с диска в зависимости от запросов памяти приложениями.
Хотя нет, есть способ - поставить себе больше памяти. Windows это любит.


Ответ отправлен: 28.11.2002, 21:25
Отправитель: Bob Johnson


 Вопрос № 1959

Уважаемые эксперты,(если вам нетрудно) где ошибка в программе Windows виснет.
SoftIce показывает exceptions
Надо написать будильник чтобы он срабатывал в опр время и именно ч/з Int 8h. Укажите пожалуйста мои ошибки кроме проверки занят. Int 21h.


Приложение:


Вопрос отправлен: 26.11.2002, 23:48
Отправитель: Merilyn Manson (marlyn@infotel.kg)

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

Отвечает Ayl

Доброе время суток, Merilyn Manson!
Посмотри на этот кусок сохранения старого обработчика:
mov ax, 3508h
int 21h
mov word ptr OldInt,bx
mov es,bx ; Это что за присваивание? (Ayl)
mov word ptr OldInt+2,bx
В результате у тебя старый обработчик сохраняется в виде Ofs:Ofs, что и приводит к зависанию.
Замени строку с комментарием на mov bx, es или прямо напиши mov word ptr OldInt+2, es
Не говорю, что после этого заработает, но вероятность повышается! :-)

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


Отвечает Andrew Vext

Приветствую Вас, Merilyn Manson!
Программы для DOS должны запускаться в DOS.

Ответ отправлен: 27.11.2002, 10:50
Отправитель: Andrew Vext


Отвечает Eugene

Добрый день, Merilyn Manson!
Особо не разбирался, но некоторые замечания появились:
inc bh
xor bl,bl
cmp bl,60
jne ExitIncSec
Непонятно зачем xor bl,bl если ты потом проверяешь равно ли 60. После этой операции у тебя в bl будет 0.
Ещё в конце своего обработчика после ExitHandler: поставь mov al,20h; out 20h,al. Это необходимое действие, чтобы указать системе, что прерывание закончилось.

Ответ отправлен: 27.11.2002, 09:27
Отправитель: Eugene



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (40)
C / C++ (29)
Perl (9)
Delphi (16)
Pascal (21)
Basic / VBA (9)
Java / JavaScript (15)
PHP (10)
MySQL / MSSQL (9)
Пользователю
Windows 95/98/Me (34)
Windows NT/2000/XP (22)
"Железо" (27)
Поиск информации (15)
Администратору
Windows NT/2000/XP (12)
Linux / Unix (17)
Юристу
Гражданское право (9)
Семейное право (3)
Трудовое право (5)
КоАП (3)

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




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

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


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

В избранное