Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 660
от 07.11.2003, 22:20
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 4447 Отправлено ответов: 12826 Активность: 288.4 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
ASMодей Статус: Профессиональный Общий рейтинг: 112.7 [Подробней >>] |
Евгений Иванов Статус: Профессиональный Общий рейтинг: 142.5 URL: Super Assembler Software Телефон: НСС +7 831 3107039 [Подробней >>] |
Mortus Alighieri Статус: Начальный Общий рейтинг: 118.96 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 149.27 URL: Программирование [Подробней >>] |
dr_dolphin Статус: Доверительный Общий рейтинг: 118.81 [Подробней >>] |
never_again Статус: Доверительный Общий рейтинг: 138.83 [Подробней >>] |
Portnov Статус: Профессиональный Общий рейтинг: 108.2 URL: Мой сайтик... [Подробней >>] |
_vt Статус: Профессиональный Общий рейтинг: 120.52 [Подробней >>] |
Maverick Статус: Профессиональный Общий рейтинг: 122.94 URL: Эхоконференция по вирмейкингу Телефон: 89039415024 (BeeLine GSM) [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 4411. Здравствуйте, уважаемые эксперты! Вопрос, наверное, не по теме, но не к кому обратиться, кроме "... (ответов: 2)
Вопрос № 4412. Хотел бы написать на асм код переключения раскладки клавиатуры с рус на лат и обратно. Подскажите в ... (ответов: 3)
Вопрос № 4413. Всем читать! http://www.bib.com.ua... (ответов: 1)
Вопрос № 4414. ЭДРАВСТВУЙТЕ.ПОЖАЛУЙСТА,ПРИШЛИТЕ ПРОГРАММУ; ВВЕДИТЕ С КЛАВИАТУРЫ МАССИВ Z(5) В КОТОРОМ КАЖЛЫЙ ЗЛЕМЕ... (ответов: 2)
Вопрос № 4416. Я продолжаю вопрос 4390 Вот все заладили offset, а в nasm нет слова offset. Я просто не уточнил, что... (ответов: 5)
Вопрос № 4417. Люди , если кто-нибудь знает, где есть подробная инфа по портам I/O жесткого диска , а также по прог... (ответов: 2)
Вопрос № 4418. Пожалуйста помогите! мне посоветовали обратиться именно к ВАМ (Ассемблерщикам) за ответом! Так вот з... (ответов: 3)
Вопрос № 4419. 1. Насколько критично не очищать стек перед вызовом Push 0;CALL ExitProcess@4 (напушил перед этим па... (ответов: 6)
Вопрос № 4420. КАК ВЫЗВАТЬ RING0 ИЗ DELPHI6 МНЕ НУЖЕН МОДУЛЬ OBJ ИЛИ ВЫЗВАТЬ ПРЕРЫВАНИЯ 13H ИЗ DELPHI6 Я НА РУССКОМ... (ответов: 2)
Вопросов: 9, ответов: 26
Вопрос № 4411 |
Здравствуйте, уважаемые эксперты!
Вопрос, наверное, не по теме, но не к кому обратиться, кроме "бывалых".
Подскажите, пожалуйста, как можно грамотно по законам зарегистрировать свои права на созданную программу? Есть ли возможность зарегистрировать авторские права не на готовый исполняемый код, а на алгоритм или принцип работы программы? Чем в этом плане отличаются Российское, Украинское, международное законодательство? Буду благодарен за полезные ссылки на эту тематику.
Вопрос отправлен: 03.11.2003, 07:06
Отправитель: Ярослав
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Приветствую Вас, Ярослав!
Ищи ссылки на РОСАПО. Там все будет написано.
Ответ отправлен: 04.11.2003, 08:21
Отправитель: ASMодей
Отвечает Евгений Иванов
Здравствуйте, Ярослав!
Это патент называется. Ты как бы называешь новые принципы работы или обработки данных, новое оформление или устройство...
По сути, для программ это будет новый тип алгоритма уже существующих, или
совершенно новый тип, ранее не существовавший...
Я бы посоветовал получше защитить программу - определённый уровень вскрывателей отсеются на этом этапе! Потом можно придумать ещё защиту; например, каждому индивидуально Ассемблируется программа и в ней что-то изменяется. А чтобы она работала, нужно прислать денег и тогда ты отсылаешь этот кусочек... Ну ещё проверка на тот-же комп.. А если смена оного, то перерегистрация... :-)
Бывай!
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 03.11.2003, 08:32
Отправитель: Евгений Иванов
Вопрос № 4412 |
Хотел бы написать на асм код переключения раскладки
клавиатуры с рус на лат и обратно. Подскажите в каком
направлении двигаться. Имею опыт написания небольших
программ на асме
Вопрос отправлен: 03.11.2003, 11:40
Отправитель: olegue (olg@tut.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает Mortus Alighieri
Приветствую Вас, olegue!
смотри
HKL LoadKeyboardLayout(
LPCTSTR pwszKLID, // name of layout to load
UINT Flags // keyboard layout flags
);
и
UINT GetKeyboardLayoutList(
int nBuff, // size of buffer in array element
HKL FAR *lpList // buffer for keyboard layout handles
);
.
Ответ отправлен: 04.11.2003, 17:44
Отправитель: Mortus Alighieri
Отвечает Bob Johnson
Приветствую Вас, olegue!
ActivateKeyboardLayout - остальное по see also (точнее, Keyboard Input Functions - ссылка внизу).
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 05.11.2003, 21:17
Отправитель: Bob Johnson
Отвечает dr_dolphin
Добрый день, olegue!
Воспользуйтесь функцией Windows API ActivateKeyboardLayout
Пока !
Ответ отправлен: 03.11.2003, 16:00
Отправитель: dr_dolphin
Вопрос № 4413 |
Всем читать!
http://www.bib.com.ua/cgi-bin/razdel.cgi?asm
Вопрос отправлен: 03.11.2003, 12:19
Отправитель: Eugene Ivanov (super21@mail.nnov.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает never_again
Добрый день, Eugene Ivanov!
Не плохо. Совсем, даже, не пдохо. Спасибо за ссылку.
Ответ отправлен: 03.11.2003, 14:39
Отправитель: never_again
Вопрос № 4414 |
ЭДРАВСТВУЙТЕ.ПОЖАЛУЙСТА,ПРИШЛИТЕ ПРОГРАММУ;
ВВЕДИТЕ С КЛАВИАТУРЫ МАССИВ Z(5) В КОТОРОМ КАЖЛЫЙ ЗЛЕМЕНТ СОСТОИТ ИЗ ДВУХ СИМВОЛОВ.В КАЖДОМ ЭЛЕМЕНТЕ ОКРУГЛИТЬ БИТЫ ПОД ЧЕТНЫМ НОМЕРОМ И ВЫВЕСТИ ДВОЙНОЕ ИЗОБРАЖЕНИЕ НА ЭКРАН.
И ЧТО ТАКОЕ 'МАСКИРАЦИЯ'?
Вопрос отправлен: 03.11.2003, 12:45
Отправитель: АРЗУ (PLUTONKA@list.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает never_again
Добрый день, АРЗУ!
>> ОКРУГЛИТЬ БИТЫ
это сто значит? обнулить? установить? заменить на compliment?
>>ВЫВЕСТИ ДВОЙНОЕ ИЗОБРАЖЕНИЕ
В двоичной системе или стеро картинок захотелось?
>>ЧТО ТАКОЕ 'МАСКИРАЦИЯ'
С русской терминологией у меня плоховато но если МАСКИРАЦИЯ это Masking на инглише, то это:
скажем есть у тебя запись (она же record)
recordname RECORD fieldname:width [[= expression]]
[[, fieldname:width [[= expression]]]]...
сама RECORD она 16 битная т.е размером с word.
она разбита на битные поля (fieldname)
пример:
some RECORD field1:5,field2:5,field3:2,field4:4
это значит что биты 0-3 отданы полю field4
4-5 ----//----- field3
6-10 ---//----- field2
11-15 --//----- field1
потом делаешь что-то в роде этого:
mov ax,MASK field2
теперь биты 6-10 регистра ах установлены в 1, а все остальные обнулены.
теперь ты свободен "одеть маску" поля field2
не любой 16 битный регистр или переменную типа word.
Пример:
допустим stam переменная типа word
"одеваем" на неё маску field2:
mov ax,MASK field2
and stam,ax
P.S. возможны некоторые неточности. давно уже не пользовался Record'ом.
Ответ отправлен: 03.11.2003, 14:32
Отправитель: never_again
Отвечает Евгений Иванов
Доброе время суток, АРЗУ!
Берёшь напильник и округляешь биты!
С этим разобрались...
А маскирование - это оставление только тех бит, которые тебе необходимы:
Например, нужно стереть биты 2 и 4, а вот биты 1 и 3 установить, а на место 2 и 4 поставить эти же биты из другого байта. Делаем вот так:
mov al, [byte1]
mov ah,[byte2]
and al, 11101011b
and ah,00010100b
or al, 1010b
or al,ah
Удачи!
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 04.11.2003, 01:00
Отправитель: Евгений Иванов
Вопрос № 4416 |
Я продолжаю вопрос 4390
Вот все заладили offset, а в nasm нет слова offset. Я просто не уточнил, что для nasm. А ведь он и кладет в ax адрес label.
Отдельные ответы для:
Евгений Иванов
Я и имел в виду адрес. Если было бы надо я бы поставил скобки, но так как вопрос был в lea, а в ее названии и есть слово "адрес", я именно так и сделал. И чем так плох реальный режим. Пусть самый первый, но заметьте более понятный и простой(я НЕ сказал, что защищенный не понимаю, просто это другой режим). Я лично знаю 2х людей, у которых настолько слабые компы, что ничего кроме ДОС у них не идет. Конечно 386, но с 4 метрами оперативной памяти.( Хочется поставить двоеточие с открывающейся скобочкой, но не понравились вы мне. Не буду. ) Да и еще в лабораториях у нас под ДОС-ом стоит установка по рентгенографическому фазовому анализу и еще одна по исследованию МДП - структур(полевые транзисторы и бла-бла-бла).
never_again
При чем тут С. Я могу отличить: "взять значение находящееся по адресу label и поместить его в ax" и "поместить адрес(смещение в сегменте данных) label в ax". Просто меня смущало слово "эффективный".
PUSH && Portnov
Самые нормальные ответы. Спасибо.
Спешиал фенкс ту : Ayl. Не поленился ответить, предположив, что я перепутал первые и последние 64Кб. Да кстати не только himem.sys может открыть А20:))(Ну не обижайтесь, это шутка. )(кстати довольно извращенский метод включения, собственно как и сам переход в защищенный режим)
----------------------------------
Далее. Насчет примера я конечно загнул.(Просто в универе в инете сидел, торопился) Я помню точно, что он у меня был в лекциях по паскалю. Но вот не нашел. Поэтому приведу пример другой:
0:7e00 == 7e00:0 . И могу ТОЧНО сказать где он был: сайт asmdev.narod.ru. Рассылка. Номер - 4. После заголовка "Выпуск 4". 2 абзац. " ... boot sector загружается в память по адресу 0:7c00h ..." И второе вхождение: описывается переменная SETUP_SEG == 0x7e00.( Всего 512 байт разницы не играют роли.) И делается прыжок: jmp SETUP_SEG:0. Вот и подтверждение. Сначала 7c00 фигурирует как сегмент, а затем как смещение в нулевом сегменте. Недоверять ему(некто Dron) я не могу, т.к. это не первый пример, который я вижу. Вот не понимаю почему так и все(про правила вычисления физического адреса в RM рассказывать не надо, именно следуя им ничего не получается). Вникните в вопрос, он действительно интересный.
Да кстати, бывает ли Зубков в электронном виде. Что-то часто его вспоминают. Если нет, то ISBN + издательство подойдет.
Юному осописателю(только чур не обижаться) по впросу 4381 и 4372(Переключение видео режимов в защищенном режиме) хотелось бы посоветовать обратиться сюда: http://www.talula.demon.co.uk/freebe/. Качай архивец и разбирайся. Только вот у меня не хватило сил. А вообще у товарищей Фроловых(сильные ребята) есть книжка по VESA&SVGA. Если денег много можешь купить. Только вот адреса их странички не помню. А там прямая ссылка на магазин этой книгой торгующий. (Стоп. Меня терзают смутные сомнения. По-моему нечто вроде frolov.pp.ru или frolov.ppr.ru было. )
Вопрос отправлен: 03.11.2003, 16:15
Отправитель: Dead Krolik
[Следующий вопрос >>] [Список вопросов]
Отвечает Portnov
Приветствую Вас, Dead Krolik!
-------------------
> Недоверять ему(некто Dron)...
Да, Dron"у надо доверять... Между прочим, когда-то он был одним из нас, и разработка этой AsmOS (позже переименованной в Dronix) начиналась на kalashnikoff.ru... Были времена... :_(
Читайте выпуск внимательнее. Там не утверждается, что 7e00:0=0:7c00! 7e00:0 - это адрес для загрузки SETUP"а, а не адрес загрузки boot sector"а. Адреса это, конечно же, разные.
С уважением, Portnov.
Ответ отправлен: 04.11.2003, 14:41
Отправитель: Portnov
Отвечает never_again
Приветствую Вас, Dead Krolik!
>> Вот не понимаю почему так и все
0+10=10
10+0=10
так почему же 0+7е00 должно отличаться от 7е00+0 ???
Ответ отправлен: 04.11.2003, 11:31
Отправитель: never_again
Отвечает Bob Johnson
Приветствую Вас, Dead Krolik!
> Если было бы надо я бы поставил скобки, но так как вопрос был в lea, а в ее названии и есть слово "адрес", я именно так и сделал.
Между прочим, правильно писать
lea ax, [my_var]
а не
lea ax, my_var
Потому что вторым аргументом в lea является переменная в памяти, так же как и в mov. А вообще же lea была придумана только для удобства (может это уже писали, я пропустил первый твой вопрос) - вот если у тебя есть процедура с локальными переменными, а тебе из нее надо вызвать еще одну, которой передать адрес одной из этих переменных как параметр. Как ты будешь делать?
mov eax, ebp
sub eax, xxx
?
это две команды. В то время как можно
lea eax, [yyy]
Вообще же lea, как я понимаю, была сделана из-за того, что процессор, в принципе, умеет вычислять адрес и делает это в команде mov, просто в ней этот вычисленный адрес пропадает после операции чтения или записи.
> Я лично знаю 2х людей, у которых настолько слабые компы, что ничего кроме ДОС у них не идет
Ну что тут можно сказать, передай им привет... Регрессия никогда не являлась показателем, которым следует гордиться.
> 0:7e00 == 7e00:0
Это ты видимо что-то покурил. 0:7E00 = 7E0:0000 = 7E000, но не более того. В реальном режиме номер сегмента умножается на 16 (или сдвигается на 4 разр. влево), после чего к нему добавляется смещение. Все остальное - это только марихуана... К тому же boot сектор и setup_seg - это не одно и то же.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 05.11.2003, 21:18
Отправитель: Bob Johnson
Отвечает Евгений Иванов
Добрый день, Dead Krolik!
Схоластический спор; куда я попал?! :)
Но всё же скажу:
LEA и MOV - это СОВЕРШЕННО разные команды с разными кодами!
MOV вычисляет тоже этот самый EA, использует его для перемещения данных, а потом ОН исчезает...
А вот LEA вычисляет этот самый адрес И помещает его в Destination...
Типа:
mov x,y{
lea a,x
copy y TO a
}
И нечего здесь пустые споры БЕССМЫСЛЕННЫЕ устраивать!!!
А насчёт улыбок :)
А чего тут - ты можешь и на калькуляторе MK что-то делать, только далеко ли уедешь?!
Я тоже какое-то время никак не хотел переходить на win3.1 !! Не то, что на win2000 или ещё чего...
Сидел в ДОС. Потому что машина была 386 и памяти 4 Мб.
Мне ХВАТАЛО для моих тогдашних потребностей...
Изучал программирование, игры и просто изучение компа...
А сейчас я не могу без многозадачности! У меня работают сразу одновременно:
1.FAR (а то и по 3 экземпляра!)
2.MyIE2 - ну браузер в общем...
3.Почтовик
4.FlashGet
5.Часы Chameleon Clock
6.WinAmp 5.0
7.Eman
8.Парочка экземпляров IDA :-)
9.Miranda
10. МОГУ ещё что хошь запустить!!!
А ты говоришь ДОС и 4 Мб!
Да даже если звук обрабатывать или видео - то мощная машина и много памяти НУЖНО просто не из финта, а РЕАЛЬНО для нормальной работы...
И вот что интересно!
Недавно перешёл на win2000 с win98 - совершенно другие ощущения.
Система НИ РАЗУ не повисла сама!! Могу работать неделю и как-будто только что запустил, забыл даже о перезагрузках и тому подобным вещям...
Чао!
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 04.11.2003, 02:08
Отправитель: Евгений Иванов
Отвечает _vt
Здравствуйте, Dead Krolik!
> Вот все заладили offset, а в nasm нет слова offset
Так я и написал, в некоторых компиляторах так и пишется mov ax, label, что по синтаксису MASM эквивалентно mov ax, offset label
> Да кстати, бывает ли Зубков в электронном виде
Да, например, здесь...
А по поводу адресации в реальном режиме - советую обратиться к книге "The Art of Assembly Language"(имеется в электронном виде)... Приведу некоторые куски:
On the 8086, 8088, 80186, and 80188 (and other processors operating in real mode), the
function that maps a segment to a physical address is very simple. The CPU multiplies the
segment value by sixteen (10h) and adds the offset portion. For example, consider the segmented address: 1000:1F00. To convert this to a physical address you multiply the segment value (1000h) by sixteen. Multiplying by the radix is very easy. Just append a zero to
the end of the number. Appending a zero to 1000h produces 10000h. Add 1F00h to this to
obtain 11F00h. So 11F00h is the physical address that corresponds to the segmented
address 1000:1F00 (see Figure 4.4).
Warning: A very common mistake people make when performing this computation is
to forget they are working in hexadecimal, not decimal. It is surprising to see how many
people add 9+1 and get 10h rather than the correct answer 0Ah.
...
When operating in real mode, an interesting problem develops. You may refer to a
single object in memory using several different addresses. Consider the address from the
previous examples, 1000:1F00. There are several different memory addresses that refer to
the same physical address. For example, 11F0:0, 1100:F00, and even 1080:1700 all correspond
to physical address 11F00h. When working with certain data types and especially
when comparing pointers, it's convenient if segmented addresses point at different objects
in memory when their bit representations are different. Clearly this is not always the case
in real mode on an 80x86 processor.
Fortunately, there is an easy way to avoid this problem. If you need to compare two
addresses for (in)equality, you can use normalized addresses. Normalized addresses take a
special form so they are all unique. That is, unless two normalized segmented values are
exactly the same, they do not point at the same object in memory.
...
Normalized pointers that take this form are very easy to convert to a physical address. All
you need to do is append the single hexadecimal digit of the offset to the segment value.
The normalized form of 1000:1F00 is 11F0:0. You can obtain the physical address by
appending the offset (zero) to the end of 11F0 yielding 11F00.
It is very easy to convert an arbitrary segmented value to a normalized address. First,
convert your segmented address to a physical address using the "multiply by 16 and add
in the offset" function. Then slap a colon between the last two digits of the five-digit
result:
1000:1F00 -> 11F00 -> 11F0:0
*** E-Man - can help you***
Ответ отправлен: 05.11.2003, 23:14
Отправитель: _vt
Вопрос № 4417 |
Люди , если кто-нибудь знает, где есть подробная инфа по портам I/O жесткого диска , а также по программированию контроллера прерываний 8259 ответьте пожалуйста.Было бы неплохо также информацию о порте EBh и линии А20.
Вопрос отправлен: 03.11.2003, 16:27
Отправитель: zurab
[Следующий вопрос >>] [Список вопросов]
Отвечает never_again
Приветствую Вас, zurab!
только не читайте этот порт как "е" "би" "х"! :))
Ответ отправлен: 04.11.2003, 11:21
Отправитель: never_again
Отвечает Евгений Иванов
Приветствую Вас, zurab!
По моему, ты в BIOS полез... :-)
dospage.by.ru не пробовал?
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 04.11.2003, 02:10
Отправитель: Евгений Иванов
Вопрос № 4418 |
Пожалуйста помогите! мне посоветовали обратиться именно к ВАМ (Ассемблерщикам) за ответом! Так вот знаете программу ArtMoney?
if(!WriteProcessMemory(GetCurrentProcess(), ppfn, &pfnNew,
sizeof(pfnNew), NULL))
{
AnsiString str=IntToStr((int)GetLastError());
if(pfnNew==NULL)MessageBox(NULL,"ppfn is null./n Why?","error",MB_OK );
MessageBox(NULL,"Writeprocessmemory",str.c_str(),MB_OK );
}
Так вот. Первая месага не всплывает-т.е.изменяемый адрес не нулевой, а вторая
появляется причем код ошибки 998. В Winerror.h она описана как
//#define ERROR_NOACCESS 998L
Что у меня нет доступа к этому участку памяти
но она должна изменять байты, не обращая внимания на тип защиты страницы памяти! Может что то не так ?
Вопрос отправлен: 03.11.2003, 16:32
Отправитель: GameMakeR
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Приветствую Вас, GameMakeR!
Наверное, надо разрешить запись в данный участок. Поможет тебе функция VirtualProtect(Ex).
*** E-Man - can help you***
Ответ отправлен: 03.11.2003, 19:55
Отправитель: _vt
Отвечает Mortus Alighieri
Здравствуйте, GameMakeR!
The WriteProcessMemory function writes memory in a specified process. The entire area to be written to must be accessible, or the operation fails.
BOOL WriteProcessMemory(
HANDLE hProcess, // handle to process whose memory is written to
LPVOID lpBaseAddress, // address to start writing to
LPVOID lpBuffer, // pointer to buffer to write data to
DWORD nSize, // number of bytes to write
LPDWORD lpNumberOfBytesWritten // actual number of bytes written
);
Parameters:
hProcess
Identifies an open handle to a process whose memory is to be written to. The handle must have PROCESS_VM_WRITE and PROCESS_VM_OPERATION access to the process.
обрати внимание на последнее предложение.
Ответ отправлен: 04.11.2003, 17:44
Отправитель: Mortus Alighieri
Отвечает Bob Johnson
Доброе время суток, GameMakeR!
А что ты хочешь изменить и в какой винде? Может ты хочешь в 98-й подправить верхнюю память (выше 2-х гб)? Так это нельзя...
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 05.11.2003, 21:18
Отправитель: Bob Johnson
Вопрос № 4419 |
1. Насколько критично не очищать стек перед вызовом Push 0;CALL ExitProcess@4 (напушил перед этим пару DWORD и не вынул. Я понимаю - дурной стиль, но вопрос теоретический)?
2. Юзаю MASM32 8.0 - метки в разных процедурах повторяются и это нормально (типа локальные). Но если совпадают в процедуре и основном теле программы - то ML ругается. Можно ли тут что-нить предпринять(кроме изменения имени меток)?
Вопрос отправлен: 03.11.2003, 17:04
Отправитель: IanPo
[Следующий вопрос >>] [Список вопросов]
Отвечает Portnov
Доброе время суток, IanPo!
1. Если пару DWORD"ов, то ничего особенного. А вот массивы там в стеке оставлять или большие структуры - грозит переполнением стека.
2. По-моему, так...
mylabel:
...
myproc proc
LOCAL mylabel
...
mylabel:
...
myproc endp
Хотя могу ошибаться, с Masm32 давно не работал...
С уважением, Portnov.
Ответ отправлен: 04.11.2003, 14:57
Отправитель: Portnov
Отвечает Bob Johnson
Приветствую Вас, IanPo!
1. Совершенно некритично. Ты вообще можешь засорять стек столько, сколько хочешь, главное чтобы его размер не дошел до предела (вроде 1 мб) и ты не сделал ret по неверному адресу. А вот что плохой стиль - это точно.
2. Не пиши в программе меток с такими же именами.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 05.11.2003, 21:19
Отправитель: Bob Johnson
Отвечает never_again
Здравствуйте, IanPo!
1) а когда хирург забывает скальпель внутри пациента? пациент конечно жив но чувствует себя не очень то и комфортно. так почему, спрашивается, система должна спокойно существовать с забитым стаком и при этом помалкивать? Винда конечно молчит и всё проглатывает, а вот под ДОСом за такие программы надо руки отбивать.
2) ну добавляй к меткам разные, там, значки типа '@' или циферки какие если уж совсем имя менять не хочешь.
Ответ отправлен: 04.11.2003, 11:17
Отправитель: never_again
Отвечает Mortus Alighieri
Доброе время суток, IanPo!
i. win - PM OS, и это не критично:
terminating a process does not necessarily remove the process object from the operating system. A process object is deleted when the last handle to the process is closed.
ii. в макросе или функции ( MACRO / PROC ) попробуй писать
LOCAL label:
Ответ отправлен: 04.11.2003, 17:44
Отправитель: Mortus Alighieri
Отвечает Maverick
Доброе время суток, IanPo!
1. При практических изуверствах я ошибок не встречал. Я так понимаю, что виндовый загрузчик чистит стек после завершения процесса. Можешь остовлять невыровненным короче.
Ответ отправлен: 05.11.2003, 13:27
Отправитель: Maverick
Отвечает Евгений Иванов
Доброе время суток, IanPo!
1.Лучше стек нормализовывать, он не резиновый!
Но с этой подпрограммой не важно - она стек сама нормализовать должна!
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 04.11.2003, 02:11
Отправитель: Евгений Иванов
Вопрос № 4420 |
КАК ВЫЗВАТЬ RING0 ИЗ DELPHI6 МНЕ НУЖЕН МОДУЛЬ OBJ
ИЛИ ВЫЗВАТЬ ПРЕРЫВАНИЯ 13H ИЗ DELPHI6
Я НА РУССКОМ ПЛОХО!
Вопрос отправлен: 03.11.2003, 20:20
Отправитель: Pr-Askar
[Следующий вопрос >>] [Список вопросов]
Отвечает Mortus Alighieri
Здравствуйте, Pr-Askar!
I don't think that you can do that. Why? It is impossible to switch from ring3 to the ring 0(imho). If you want your application to run in the RING0 you are to write DRIVER(win9x - vxd). Read Iczelions tutorials to know more.
Ответ отправлен: 04.11.2003, 17:45
Отправитель: Mortus Alighieri
Отвечает Maverick
Добрый день, Pr-Askar!
Можно же использовать ассемблерные вставки в делфи. Вот и вставляй. Смотря какая платформа.
Ответ отправлен: 05.11.2003, 13:27
Отправитель: Maverick
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (32) C / C++ (26) Perl (3) Builder / Delphi (22) Pascal (20) Basic / VBA (6) Java / JavaScript (8) PHP (13) Криптография (9) WinAPI (14) |
Пользователю Windows 95/98/Me (46) Windows NT/2000/XP (63) "Железо" (40) Поиск информации (28) |
Администратору Windows NT/2000/XP (39) Linux / Unix (16) |
Юристу Гражданское право (10) Семейное право (7) Трудовое право (7) КоАП (7) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||