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

Ассемблер? Это просто! Учимся программировать (FAQ)


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Ассемблер? Это просто! Учимся программировать (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

Подписаться на рассылки

Рассылки Subscribe.Ru
Ассемблер? Это просто! Учимся программировать
Ассемблер? Это просто! Учимся программировать (FAQ)

Задать вопрос экспертам

Регистрация в качестве эксперта


Ведущий рассылки,

Калашников Олег: Assembler@Kalashnikoff.ru
ICQ No.:
68951340
URL сайта подписчиков: http://www.Kalashnikoff.ru

______________

По вопросам сотрудничества, рекламы и спонсорства обращайтесь:

  1. Публичное размещение материала из рассылки: Cooperation@Kalashnikoff.ru
  2. Реклама на сайте, в книге и рассылках: http://www.Kalashnikoff.ru/Reklama.html, Reklama@Kalashnikoff.ru
  3. Издание книги (спонсорство): Sponsor@Kalashnikoff.ru

Рассылка 'Ассемблер? Это просто! Учимся программировать (FAQ)' Рассылка 'Ассемблер? Это просто! Учимся программировать'


(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав.

List Banner Exchange lite
Реклама на сайте Kalashnikoff.ru


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Relayed by Corbina
Рейтингуется SpyLog

В избранное