Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Ассемблер? Это просто! Учимся программировать (FAQ)
Ассемблер? Это просто! Учимся программировать (FAQ)
Выпуск N 010 |
Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"
Дата выхода: 2001-05-31
От ведущего
Учитывая, что на один вопрос поступает от 1 до 3 ответов, я сделал так,
что в рассылку посупает только первые два ответа, остальные отправляются
только подписчику, задавшему вопрос. Вопрос хранится в базе в течение
одного месяца. Если ответов вообще не поступило, то он опубликовывается в рассылке
с указаением электронного адреса подписчика. Т.о. любой читатель может
ответить на него. Если же поступил хоть один ответ, то через месяц вопрос
удаляется. Эксперт, чей вопрос попал в рассылку, получает 2 балла. Остальные
получают по одному.
Т.к. система еще полностью не оттестирована (да и пока не запущена), то я заранее приношу свои извинения
в случае, если программа начент "глючить". Буду также благодарен, если вы будете
присылать мне указания на ошибки.
И еще. Один подписчик просил сделать форму для высылки благодраностей эксперту
за отправленный ответ. Надо подумать...
Также планирую предоставить вам, уважаемые подписчики, возможность отправлять не
только вопросы, но и мысли, предложения, алгоритмы и пр. сразу в данную рассылку (а не экспертам).
Т.о. кроме вопросов / ответов в рассылке будут присутствовать ваши сообщения.
В общем, работаю...
_________________
Почему бы в самой рассылке не сделать форму подачи вопроса, а не заходить на сайт?
Просто у меня Интернет по модему с почасовой оплатой, и мне очень это очень неудобно.
Друзья мои! С удовольствием бы установил форму в рассылку, но проблема с перекодировкой.
Дело в том, что часть подписчиков получает в кодировке KOI-8, часть в Windows-1251 и еще часть в другой.
Получается, что Вы отправляете вопрос эксперту в той кодировке, в которой получаете выпуск.
Ваши вопросы автоматически сохраняются в файле в разных кодировках,
и при выходе рассылки получится "каша".
Не удивляйтесь: я не имею понятия, как мне на Перле проверить кодировку и переводить
все письма, например, в Windows-1215. Если кто-нибудь подскажет - буду безмерно благодарен!
Новости
Помнится, в 17-18 выпусках я ненароком затронул тему об экономической ситуации в Беларуси.
Пришло очень много отзывов, а также писем с просьбой не публиковать в рассылке
по Ассемблеру подобной информации. Я, конечно, совершил тогда ошибку...
Тем не менее, тема для многих очень интересная. Поэтому я рискнул открыть рассылку
"От Советского Информбюро", в которой:
"...рассматриваются различные точки зрения по поводу развала СССР,
объединения СНГ, политики НАТО, действий президентов различных стран,
способы возрождения России и стран СНГ, Союзный Договор между Россией и
Беларусью и пр.
Кроме этого, обсуждения и вспоминания прежних советских времен, плюсы и
минусы, ностальгия по прошлому (или наоборот), проблемы современной молодежи
и многое другое..."
Если это заинтересует многих, то будем делать рассылку!
Подписаться можно на сайте http://www.Kalashnikoff.ru
Вопрос
Уважаемые эксперты!
Все программы из уроков 1-6 выполняются, но после выполнения компьютер виснет.Если в ДОС окне под виндой запускаю, то виснет так, что три кнопки не помогают.
И еще, после компиляции всегда предупреждение
Link: Warning L4021: no stack segment.
Что бы это значило?
Как бороться с зависанием?
Использую MASM 6.11, WIN98SE, PIII-733.
Спасибо.
Ответ
Он и будет виснуть, так как ты пытаешься сделать exe программу.
Сделай com программу и все будет хорошо
link /TINY prog.obj
если не ошибаюсь.
Отправил: Dron (http://dronv.chat.ru/ - Хочу свою операционную систему!)
Эксперт отправил ответов (всего): 6
Экспертная группа: Дизассемблеры
Вопрос
Уважаемые эксперты!
Все программы из уроков 1-6 выполняются, но после выполнения компьютер виснет.Если в ДОС окне под виндой запускаю, то виснет так, что три кнопки не помогают.
И еще, после компиляции всегда предупреждение
Link: Warning L4021: no stack segment.
Что бы это значило?
Как бороться с зависанием?
Использую MASM 6.11, WIN98SE, PIII-733.
Спасибо.
Ответ
Уважаемый Олег!
Вы создаете exe-файл, а нужно com!
Для MASM 6.11 наберите:
ML.EXE prog.asm /AT
Обратите внимание, что /AT должны быть ЗАГЛАВНЫМИ символами!
Вы получите prog.com.
Это вопрос часто задают новые подписчики. Как ассемблировать программу написано в Приложении № 1 к высылаемой в архиве кнгие.
P.S. Подобные вопросы следует задавать экспертной группе "Работа с MASM/TASM".
Отправил: Олег Калашников (http://www.Kalashnikoff.ru - Рассылки по Ассемблеру и Законодательству)
Эксперт отправил ответов (всего): 17
Экспертная группа: Дизассемблеры
Вопрос
Написал такую программу, которая удаляет заданный каталог (D:\Winrar\temp), так вот, каталог она удаляет, после этого вылезает сообщение: "Программа выполнила некорретную операцию и будет завершена.... Перезагрузите компьютер...".
Почему это происходит?
Ответ
Hi Евгений.
Всё в порядке. Необходимость завершить программу после её выполнения еще никто не отменял. Ппопробуйте так: (см. пример).
Good luck. Slava V.
Приложение:
Отправил: Slava V.
Эксперт отправил ответов (всего): 1
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос
Здравствуйте, эксперты!
У меня к Вам вопрос по поводу динамического выделения памяти. При использовании ДОСовской функции 48h возникает ошибка 08h (недостаточно памяти). Хотя я пытаюсь выделить всего лишь один параграф.
Может я чего не так делаю?
Зарание спасибо!
Антон.
Ответ
Hi Антон.
Вся проблема в том, что при запуске программы, DOS отдает всю свободную память ей (вернее тут виноваты линковщики, не прописывающие реальные требования программы в заголовке ЕХЕ файла). Поэтому попытка выделить еще памяти приводит к ошибке.
Надо после запуска программы отдать DOS всю ненужную память, а потом запросить у него сколько надо. Звучит конечно смешно: отдать, а потом попросить. :-) А шо делать?
А теперь слайды (с) Анек... (смотрим пример).
Good luck. Slava V.
Приложение:
Отправил: Slava V.
Эксперт отправил ответов (всего): 2
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос
Уважаемые эксперты!
Все программы из уроков 1-6 выполняются, но после выполнения компьютер виснет.Если в ДОС окне под виндой запускаю, то виснет так, что три кнопки не помогают.
И еще, после компиляции всегда предупреждение
Link: Warning L4021: no stack segment.
Что бы это значило?
Как бороться с зависанием?
Использую MASM 6.11, WIN98SE, PIII-733.
Спасибо.
Ответ
хм..
я пользуюсь тасмом , но думаю проблема в том что ты делаешь не .com файл а .exe , например для тасма это так : tasm filename а вот потом с ключом надо линковать : tlink /t filename
так и в масме.., разберись с компилятором
Отправил: sasha
Эксперт отправил ответов (всего): 6
Экспертная группа: Дизассемблеры
Вопрос
День добрый ув. Эксперты
Вот вопросец возник:
Как можно заблокировать либо перехватить нажатия Ctrl и Alt
при работе с 16 прерыванием Bios
В общем-то все что требуется - это сделать ввод с клавиатуры
и не допустить появления спецсимволов (типа сердечка, пики и т.п.) возникающих при нажатии на Сtrl+какая либо буква
Если можна покажите пожалста какойнить примерчик
Заранее спасибо
Ответ
Ну ты и загнул. Во-первых, должен отметить, что это не я такой умный, а книжки у меня такие антикварные :). Во-вторых, для твоих целей надо перехватывать не int 16h, а int 9h, поскольку это сам и есть обработчик прерываний от клавиатуры, а остальные только пользуются результатами его труда. Вообще у PC есть два байта флагов клавиатуры по адресам 40:17h и 40:18h. Вот их структура.
40:17h(Левый и правый Ctrl и Alt не различаются)
бит 0 - Правый Shift
бит 1 - Левый Shift
бит 2 - Ctrl
бит 3 - Alt
бит 4 - Scroll Lock
бит 5 - Num Lock
бит 6 - Caps Lock
бит 7 - Ins
40:18h (только PC AT, т.е. 80286 и старше)
бит 0 - Левый Ctrl
бит 1 - Левый Alt
бит 2 - Правый Ctrl
бит 3 - Правый Alt
бит 4 - Scroll Lock
бит 5 - Num Lock
бит 6 - Caps Lock
бит 7 - SysRq
Программа в приложении. Это минимум. И делай с ним, что хошь - Ответ эксперта. Собирать в .com файл естественно. Осторожно резидентная программа!
P.S. Самая лучшая книга по программированию на ассемблере IMHO, это:
П.И. Рудаков, К.Г. Финогенов "Программируем на языке ассемблера IBM PC"
Первое издание Издательство "Энтроп", 1995 год. В четырех частях, но трех книгах(Часть 1. Основы программирования, Часть 2. Прикладное программирование, Части 3 и 4 Программирование в защищенном режиме. Программирование математического сопроцессора). Третье издание, по-моему, отличается только тем, что изданы все четыре части одой книжкой. Удобно.
P.P.S. Может не так красиво, но я красиво писал уже давно, и вспоминается все по чуть-чуть. Поэтому просьба к другим экспертам - не плюйтесь пожалуйста.
Приложение:
Отправил: Александр
Эксперт отправил ответов (всего): 3
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №2
Уважаемые эксперты.
У меня несколько вопросиков про прерывания:
1. к примеру int 21h (int 33), почему именно 21h? Это что,
адрес, по которому прерывание расположено в памяти?
2. а можно ли с помощью ассемблера изменить прерывание,
чтобы оно стало делать что-то другое?
3. можно ли посмотреть прерывание в отладчике? Если нет, то
как вообще можно его увидеть ( и на чём оно написано)?
4. наконец, можно ли написать собственное прерывание (такой
вот, резидентик), выбрать ему название и использовать
его потом для написания программ?
Заранее спасибо за терпимость к любопытству
начинающего.
Костя
Ответ
Вопрос какой-то вообще чауниковый... ты хоть книжки бы какие нибудь почитал чтоль... кстати всех тоже касается...
1. тебе что не понятно? почему int 21h и int 33 одно и то же? или почему именно 21h? помоему просто от фонаря... все предыдущие были чем-то заняты, а это какраз свободно... вот и решили что 33 хороший номер прерывания для всяких сервисов! :))) Кстати это только в досе так... в линуксе например все сервисы расположены на прерываниии int 80h тоже неплохая круглая цифра! :)
2. конечно можно!!! rtfm...
3. посмотреть можно в отладчике, и не важно на чем оно написано, как говорил один мой старый друг: "систему можно написать и на бейсике..." :)
4. Имя это конечно очень важно! как вы резидент назовете, так он и поплывет... :) шутка... :) ты хоть сам то понимаешь что хочешь спросить? что имеется ввиду под названием резидента? номер ему присвоить чтоль?
Почитай всетаки книжки по ассемблеру, очень полезно если ты собираешься в этом разобраться...
Отправил: Dron (http://dronv.chat.ru/ - Хочу свою операционную систему!)
Эксперт отправил ответов (всего): 7
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №
День добрый ув. Эксперты
Вот вопросец возник:
Как можно заблокировать либо перехватить нажатия Ctrl и Alt
при работе с 16 прерыванием Bios
В общемто все что требуется - это сделать ввод с клавиатуры
и не допустить появления спецсимволов (типа сердечка, пики и т.п.) возникающих при нажатии на Сtrl+какая либо буква
Если можна покажите пожалста какойнить примерчик
Заранее спасибо
Ответ
А может просто проверку на спецсимволы поставить? после вызова int 16h?
Отправил: Dron (http://dronv.chat.ru/ - Хочу свою операционную систему!)
Эксперт отправил ответов (всего): 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 | Отписаться | Relayed by Corbina
Рейтингуется SpyLog |
В избранное | ||