Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Ассемблер? Это просто! Учимся программировать (FAQ)
Ассемблер? Это просто! Учимся программировать (FAQ)
Выпуск N 086 |
Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"
Дата выхода: 2001-09-06
Вопрос №790
Уважаемые эксперты!
Я когда-то задавал вопрос по поводу неправильной работы 35h-й ф-ии.
А именно : почему значение в es:bx не совпадает со значением в
0000:[21h*4], причем именно 21h-ого прерывания - с остальными всё
работает нормально. Так вот , недавно я попробовал стандартный
debug.exe вместо AFD - и всё заработало! В Turbo debugger'е то же
нифига не работает. У меня что версии глючные (все программы с этого
сайта) ? Если да то где найти нормальные ? И вообще порекомендуйте
какой-нибудь нормальный отладчик под ЧИСТЫЙ DOS.
И попутно - почему MASM не работает под DOS,тоже довольно чистым :-),
пишет : 'Cannot execute DosXNT.exe - not enough core'
заранее большое спасибо, Elron.
Ответ
Уважаемый Elron!
Чето мне ваш вопрос не давал покоя, я и решил проверить...
Запустите пожалуйста предлагаемую небольшую прогу в ЛЮБОМ ОТЛАДЧИКЕ, и после выпонения mov cx,word ptr ds:[21h*4]+2 скажите честно глядя всем экспертам в глаза, что ax не равно bx, а cx не равен es!!! Видно, вы чето нетого в самом коде накрутили, а данный пример наглядно все иллюстрирует: получаем адрес обработчика int 21h в ES:BX, затем топорным методом, помещая в ds 0 (нулевой сегмент), берем два значения по адресам 21h*4 и 21h*4+2, по вашему они не совпадают с ранее полученными с пом. 35 ф-ции????!!!!! Попробуйте поменять в таком случае разрешение на мониторе - может поможет... ;(
а на "этом сайте" все проги неоднократно проверенны и у всех почемуто работают!!!
Приложение:
Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 129
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №785
Привет всем.
У меня имеются вопросы к подгруппе "Общие вопросы по асму под win32", но
отправив вопрос в эту подгруппу он ушЈл в бермудский треугольник. Так вот
вопрос ко всем - есть в этой подгруппе кто-нибудь ? И если есть, то вопрос см в
приложении. Спасибо.
С уважением, Макс.
Ответ
Здравствуйте, Макс!
; call DeleteFileA ;если убрать " ; " , то в файл ничего не пишется
а вам не кажется что выпросто после записи в файл, удаляете из него это строкой
Отправил эксперт: АлександрМ
Эксперт отправил ответов (всего): 9
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №791
Уважаемые эксперты.
Иду на пуск-завершение работы-выключить компьютер
компюетер вроде выключается, экран гаснет а затем
снова стартует, выключить иожно только вытянув его из розетки.
В чем дело?
У меня WinME
Ответ
Здравствуйте, Олег!
В реестре HKEY_LOCAL_MASHINE\system\CurentControlSet\control\ShutDdown
есть опция FastReboot посмотри значение...если там 1, измени на 0
....
Отправил эксперт: змей
Эксперт отправил ответов (всего): 19
Экспертная группа: Пользовательская работа с Windows
Вопрос №790
Уважаемые эксперты!
Я когда-то задавал вопрос по поводу неправильной работы 35h-й ф-ии.
А именно : почему значение в es:bx не совпадает со значением в
0000:[21h*4], причем именно 21h-ого прерывания - с остальными всё
работает нормально. Так вот , недавно я попробовал стандартный
debug.exe вместо AFD - и всё заработало! В Turbo debugger'е то же
нифига не работает. У меня что версии глючные (все программы с этого
сайта) ? Если да то где найти нормальные ? И вообще порекомендуйте
какой-нибудь нормальный отладчик под ЧИСТЫЙ DOS.
И попутно - почему MASM не работает под DOS,тоже довольно чистым :-),
пишет : 'Cannot execute DosXNT.exe - not enough core'
заранее большое спасибо, Elron.
Ответ
Здравствуйте, Elron!
Насчет дебагера: я проверял под Turbo Debaggerом, все работает, скорее всего в нем проблема. Да, он поставляется вместе с С+...
Насчет МАСМ
У тебя же написано при ошибке 'Cannot execute DosXNT.exe'
NT!!! То есть этот масм настроен под работу с расширенной версией Доса
ЗЫ Broken Sword'y. "Серийный номер" винта, который выдает Format, можно взять через прерывание(я уже отвечал както), так вот, он завязан на последнюю дату форматирования
Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 109
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №793
Привет всем!
Обратите пожалуйста внимание на проблему! (прилагается). Данная програмка просто считает до ста, используя прерывание 1 (пошаговый режим). По достижении пятидесяти программа прерывается и выдает сообщение. Проблема в том, что на Celerone она НЕ ПРЕРЫВАЕТСЯ. На 286 все идет отлично.
Еще одно: убираю из подпрограмы Counter вызов процедуры GetCh – все работает и на Celerone. Часовые втыкания в подрограммку GetCh ни к чему не привели – так и не смог понять в чем разница (с точки зрения выполнения) между 286 и РII. Что-то выполняться не успевает что ли?
Очень прошу помочь.
ВНИМАНИЕ! При работе с программкой испоьзовать отладчики и трассировщики проблематично, потому что они сами, практически все, используют прерывание 1 и глючат безбожно (естественно имеется в виду DOS).
P.S. Мои извинения Paintbinger-у! Ничего подобного не имел в виду. Наоборот, последнее сообщение – BEST!!! Перепиши в звуковом - буду наслаждаться:))))))))))))). Только не злоупотребляй, а то уважаемые эксперты скоро с тобой так же разговаривать будут.
А может забить на это программирование на хрен и в панки?????:))
Вал.Ик.
Ответ
Здравствуйте, Вал.Ик.!
Опять старая проблема нереентерабельности(правильно написал?) Дос
Ты вызываешь int 21h 2 раза в пошаговом режиме.
ИМХО проблема в этом
Попробуй переписать без 21 прерывания...
Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 110
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №794
Чем масм 5.0 под дос лучше тасм 2.0
и лучше ли???
И что лучше юзать?
Ведь масм у меня очень маленький и удобный - 3 ф-ла всего?
А тасм можно также обрезать?
Ответ
Здравствуйте, Дмитрий!
Пора бы уже тасмом 5.0 пользоваться или масмом 6.13, если эти два сравнивать, то по дос тасм получше, под виндовоз - масм! А своих динозавров ВЫКИНЬ!
Если три файла, то нифига он не может быть удобным, т.к. прикладных прог, помогающих при разработке нет!
А урезать и тасм также можно, там по-моему 4 файла необходимы для получения *.exe or *.com!
Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 77
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №794
Чем масм 5.0 под дос лучше тасм 2.0
и лучше ли???
И что лучше юзать?
Ведь масм у меня очень маленький и удобный - 3 ф-ла всего?
А тасм можно также обрезать?
Ответ
Здравствуйте, Дмитрий! Во-первых, ни у кого ничего обрезать не нада, все что входит в комплект ТАСМ-а для НАСТОЯЩЕГО программиста представляет особый интерес, конечно для наших с вами прог в 100 строк вполне хватит тасма, тлинка и TD. Все остальное действительно можна резать, но, опять же, чем оно мешает??? винт маленький? Ну examples можешь удалить, если сильно на нервы действуют.
а 5.0 лучше 2.0 хотя бы потому, что он вышел в свет попозжее, и следовательно, некоторые баги 2.0 в нем устранены (во всяком случае хочется на это уповать). А вообще, кто бы что ни говорил, а прога чем позже выпущена, тем она лучше и качественнее (или уж по крайней мере такая же, но чтоб хуже - такого я не знаю, виндов, кстати, тоже касается). Если тебя конкретно интересует 5.0, то вот смотри (переводи сам):
New TASM 5.0 features:
- Enhanced MASM compatibility
- TASM32.EXE Thunk Compiler compatibility for Windows 95 flat thunking.
New Turbo Debugger 5.0 features:
- Dual monitor support under Win95 (TDW: -do, TD32: -vd)
- Debugger support for new C++ language constructs (bool, namespaces, etc.)
- 16-bit debugging support under Windows NT with TDW.EXE
А вообще если у тебя ТАСМ 2.0, то сломя голову его менять на 5.0 не имеет никакого смысла, (по принципу - работает и слава Богу)
p.s. спасиба Sensey
Отправил эксперт: Broken Sword (http://www.revolution.co.uk - скрытая реклама...)
Эксперт отправил ответов (всего): 130
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №796
Приветик эксперты!!!
Что ваши выборы Модератора прекратились, или отложили? Ладно собственно вопрос по существу: Недавно капельку грохнулся винт(стол+падение не виновато) ну и появился ненавистный bad :-Е, ну поскольук гарантия на компе висела, пришлось завозить. Буквально через время Х-time, мне дружненько его вернули без злокачественного bad. Мне известно что в современных винтах, существует вроде как резервная область, и соответственно бэд туда и выкинули, я прав? Но каким это образом туда выбрасывается (жилательно не упоминать софт - нелюблю без надобности). И кокой размер этой области?
DM ПОЛУЧИЛ БАЛЫ?
С уважением SATIS
Ответ
Здравствуйте, SATIS!
Лично я про такие области на винтах не слышал. Ты уверен, что тебе вернули тот же винт. Кстати какой фирмы. Насколько мне известно, имеются проблемы с винтами IBM серии DTLA (там какой-то глюк с биосом и ИБМ сама об этом заявляла).
З.Ы. А чё, Майкл то умер...
Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 97
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №794
Чем масм 5.0 под дос лучше тасм 2.0
и лучше ли???
И что лучше юзать?
Ведь масм у меня очень маленький и удобный - 3 ф-ла всего?
А тасм можно также обрезать?
Ответ
Здравствуйте, Дмитрий!
А с чего ты взял что масм лучше тама под досами? Лично я юзаю тасм 5.0. Естетсвенно его тоже можно кастрировать до неприличия:
tasm.exe
tlink.exe
rtm.exe
dpmi16bi.ovl
итого 440 801 байт.
Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 98
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №803
Здраствуйте эксперты!
Зачем нужна папка-Uninstall Information?
Можно ее удалить?
Ответ
Здравствуйте, Alex!
Вообще-то нет, поскольку, насколько мне известно, в этой папке помимо информации по удалению IE содерджится и все свойства обозревателя: начальная страница, способы соединения и т.д.
Отправил эксперт: Spartak
Эксперт отправил ответов (всего): 13
Экспертная группа: Пользовательская работа с Windows
Вопрос №789
Привет, эскперты!
У меня такой вопрос: необходимо сделать лист рассылки с использованием фильтров (форвардинга, в частности) бесплатной мыльницы (почтового ящика то бишь). На народе большие возможности настройки фильтров, но особенность форвардига - каждый раз, даже при пустяковом изменении фильтра, на все ареса идет письмо с просьбой подтвердить форвард, а это не есть гуд.
Посоветуйте, пожалуйста, какую-нибудь почтовую службу, где нет такой заморочки с форвардингом, но рассылать одним фильтром можно на много адресов, а не на один.
Заранее благодарю.
Ответ
Здравствуйте, Sqeezer!
Попробуй использовать сервис служб рассылок: subscribe.ru, yahoogroups.com или каких-нибудь других.
Отправил эксперт: Spartak
Эксперт отправил ответов (всего): 14
Экспертная группа: Пользовательская работа с Windows
Вопрос №797
Доброе время суток!!!
Блин читаешь, и прямо самого рвет хотяб маленький, скромненький вопросик задать. Например: Довольно хочится услышать как можно подробниее про не реентабельность DOS , довно интересовал вопрос но некак руки недоходили.
Ну как у вас обстаят дела с выбором человека, который будет слидить за порядком в рассылке, хотя уже болие мение налаживается, что несомненно радует. :)
DM приветик , ну и сколько балов получил, за мой прошлый вопрос? ;)
С уважением SATIS
Ответ
Здравствуйте, SATIS!
Не "реентабельность", а реентерабельность!
Вот в двух словах, а вообще вопрос очень обширный и надо читать литературу!Использую любой поисковик, найдешь!
Это связано с тем, что из некоторых обработчиков нельзя вызывать другие обработчика, так как они затирают стек предыдущего обработчика,
что вызывает неработоспособность программы!
Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 78
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №803
Здраствуйте эксперты!
Зачем нужна папка-Uninstall Information?
Можно ее удалить?
Ответ
Здравствуйте, Alex!
Эта папка используется Norton Utilites, поэтому не трогай!
Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 79
Экспертная группа: Пользовательская работа с Windows
Вопрос №802
Здраствуйте эксперты!
3-и вопроса:
1)Что дулает оператор Lea и TITLE?
2)Все понятно крому ptr (К примеру:mov dl,byte ptr My_string)?
3)mov ax, 1020=> ah=10 (байт?), al=20 (младший байт?)?
Усли в ax, будет число к примеру 102=> ah=10, al=2?
Ответ
Здравствуйте, Alex!
1.lea аналогичен команде mov ..,offset.., т.е. получает смещение метки или строки с данными! Title - директива для печати твоей проги, параметры всякие!
2.В DL помешается первый байт из строки май_стринг, чо непонятного!
3.Если в ax - 102h, то в ah-01h, а в al-02h!
Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 80
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №802
Здраствуйте эксперты!
3-и вопроса:
1)Что дулает оператор Lea и TITLE?
2)Все понятно крому ptr (К примеру:mov dl,byte ptr My_string)?
3)mov ax, 1020=> ah=10 (байт?), al=20 (младший байт?)?
Усли в ax, будет число к примеру 102=> ah=10, al=2?
Ответ
Здравствуйте, Alex!
1)LEA (Загрузить эффективный адрес) помещает смещение операнда-источника в памяти (а не его содержимое) в операнд назначения. Операнд-источник должен находиться в памяти, операнд назначения должен быть регистром общего назначения. Эта команда особенно полезна для инициализации регистров ESI(SI) и EDI(DI) перед выполнением команд работы со строками или инициализации регистра EBX(BX) перед командой XLAT.
2)Операция WORD PTR указывает Турбо Ассемблеру, что данный операнд в памяти нужно интерпретировать, как операнд размером в слово, а операция BYTE PTR указывает Турбо Ассемблеру, что данный операнд в памяти нужно интерпретировать, как операнд размером в байт, независимо от его предопределенного размера.
3)Дело в том, что 1020 - число десятичное, в 16-ичной системе счисления это 03FC. Поэтому al=0FCh, ah=03h, ведь в регистры помещается не само десятичное число, а его 16-ичный эквивалент.
Отправил эксперт: Василий
Эксперт отправил ответов (всего): 44
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №800
Здравствуйте!
Уважаемые эксперты объястните "как мне обратиться к
ячейке памяти в защищенном режиме" т.е. у меня программа написанная на асме (win32, GUI) и я
хочу обратиться к "индикатору" т.е. 0000:0417 (В реальном режиме получалось,
а в защищЈнном это нужно сначала как-то объявить????)
Подскажите как это сделать!!! (ПЛИЗ)....... или дайте линк на какой-то
форум, где это можно спросить ;)
Ответ
Здравствуйте, Дмитрий!
В общем так, я тебе вышлю доку. Почитаешь, там все написано вполне доступно. Как прочтешь, пиши. Вышлю какие-нибудь example'ы.
Отправил эксперт: Василий
Эксперт отправил ответов (всего): 45
Экспертная группа: Работа с MASM/TASM
Вопрос №797
Доброе время суток!!!
Блин читаешь, и прямо самого рвет хотяб маленький, скромненький вопросик задать. Например: Довольно хочится услышать как можно подробниее про не реентабельность DOS , довно интересовал вопрос но некак руки недоходили.
Ну как у вас обстаят дела с выбором человека, который будет слидить за порядком в рассылке, хотя уже болие мение налаживается, что несомненно радует. :)
DM приветик , ну и сколько балов получил, за мой прошлый вопрос? ;)
С уважением SATIS
Ответ
Здравствуйте, SATIS!
В общем. При запуске прерывания DOS - 21h, ядро сохраняет и
переключает SS и SP, так чтобы они указывали на внутренний стек и
начинает обрабатывать запрос. Если в это время произойдёт прерывание
(например 8 или 9), то проц переключится на прерывание и "заморозит"
DOS. Если обработчик прерывания вызовет функцию DOS, то SS и SP опять-
же будут установлены на стек DOS, причём сохраненные их значения,
которые DOS должен восстановить, затрутся этими и затем DOS пойдёт
затирать свой внутренний стек. Вот и всё :-(
Отправил эксперт: Nik
Эксперт отправил ответов (всего): 97
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №799
Здравствуйте!
Уважаемые эксперты объястните "как мне обратиться к
ячейке памяти в защищенном режиме" т.е. у меня программа написанная на асме (win32, GUI) и я
хочу обратиться к "индикатору" т.е. 0000:0417 (В реальном режиме получалось,
а в защищЈнном это нужно сначала как-то объявить????)
Подскажите как это сделать!!! (ПЛИЗ)....... или дайте линк на какой-то
форум, где это можно спросить ;)
Ответ
Здравствуйте, Дмитрий!
См. ответ на вопрос №800.
Отправил эксперт: Василий
Эксперт отправил ответов (всего): 46
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №802
Здраствуйте эксперты!
3-и вопроса:
1)Что дулает оператор Lea и TITLE?
2)Все понятно крому ptr (К примеру:mov dl,byte ptr My_string)?
3)mov ax, 1020=> ah=10 (байт?), al=20 (младший байт?)?
Усли в ax, будет число к примеру 102=> ah=10, al=2?
Ответ
Здравствуйте, Alex!
1) TITLE - ничего. Это директива ассемблера, которая требуется для нужд
программиста. Если хочешь узнать где она используется - сделай листинг
(смотри параметры TASM/MASM/NASM/???)
LEA преобразует адрес в число (во задвинул :) и помещает в регистр:
т.е., например, LEA EBX, [EAX+EBX+20] поместит в регистр
EBX число EAX+EBX+20.
2) Смотри предыдущие выпуски этой рассылки
3) AH - старший байт (A High), AL - младший байт (A Low)
Так, если AX = 1234h, то AL = 34h, а AH = 12h
Но это касается только шестнадцатеричных чисел!!!
Отправил эксперт: Nik
Эксперт отправил ответов (всего): 98
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №804
Тут, образно говоря такая проблема:
mov al,1
cmp al,1
jz @@search
Но @@search находится дальше чем 127 байт
А если поставить в начале проги .386 то возникае много ошибок вида: Error betving passes.....
Что делать , ведь мне надо туда прыгнуть?
Ответ
Здравствуйте, Дмитрий!
Нет ничего проще! См. текст.
Приложение:
Отправил эксперт: Bitman
Эксперт отправил ответов (всего): 8
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Подписаться на рассылки
Форма подачи вопроса
ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!Нажимайте кнопку "Отправить" только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!
Регистрация в качестве эксперта
Архив выпусков
Ведущий рассылки,
Калашников Олег:
Assembler@Kalashnikoff.ru
ICQ No.: 68951340
URL сайта подписчиков:
http://www.Kalashnikoff.ru
______________
По вопросам сотрудничества, рекламы и спонсорства обращайтесь:
- Публичное размещение материала из рассылки: Cooperation@Kalashnikoff.ru
- Реклама на сайте, в книге и рассылках: http://www.Kalashnikoff.ru/Reklama.html, Reklama@Kalashnikoff.ru
- Издание книги (спонсорство): Sponsor@Kalashnikoff.ru
(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав. |
Реклама на сайте Kalashnikoff.ru
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу | Рейтингуется SpyLog |
В избранное | ||