Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Ассемблер? Это просто! Учимся программировать (FAQ)
Ассемблер? Это просто! Учимся программировать (FAQ)
Выпуск N 057 |
Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"
Дата выхода: 2001-08-13
Вопрос №486
Подписался я, на Вашу господа, рассылку, дождался родимую, уселся, разинул варежку, ну думаю щас вумным стану "Ассемблер? Это просто! Учимся программировать." А чЈ то не учимся никак, тока на вопросы отвечаем, да советы даЈм, как подкоррректировать ту или иную программку. А когда же будем "програмировать"?!:( В смысле, учится тому, что так просто!:) Может хоть тоже чЈ-нить подсоветуете, ну может пойти куда:) Мож хде в Сети поковыряться подскажете, статейки какие-нить?!:) Уж очень хочется програмЈром крутым заделаться, тем более "Это просто!":)))
На сим и остаюсь с наилучшими пожеланиями моего дальнейшего роста!
Ваш DeusEx!:)
Ответ
Здравствуйте, DeusEx!
Вообще-то эта рассылка предназначена для частых вопросов (FAQ).
А рассылка, где учат - comp.prog.assembler.
Отправил эксперт: Nik
Эксперт отправил ответов (всего): 60
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Вопрос №486
Подписался я, на Вашу господа, рассылку, дождался родимую, уселся, разинул варежку, ну думаю щас вумным стану "Ассемблер? Это просто! Учимся программировать." А чЈ то не учимся никак, тока на вопросы отвечаем, да советы даЈм, как подкоррректировать ту или иную программку. А когда же будем "програмировать"?!:( В смысле, учится тому, что так просто!:) Может хоть тоже чЈ-нить подсоветуете, ну может пойти куда:) Мож хде в Сети поковыряться подскажете, статейки какие-нить?!:) Уж очень хочется програмЈром крутым заделаться, тем более "Это просто!":)))
На сим и остаюсь с наилучшими пожеланиями моего дальнейшего роста!
Ваш DeusEx!:)
Ответ
Здравствуйте, DeusEx!
Во-первых подпишись на рассылку Ассемблер? Это просто! Учимся программировать.
Во-вторых на сайте, всеми нами уважаемого Калашникого Олега
, скачай архив рассылки, всю до дыр зачитываешь и вперед легко и просто начинаешь писать крутые проги.
Отправил эксперт: Andy Bitoff (http://bitoff.pisem.net - HomePage)
Эксперт отправил ответов (всего): 14
Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32
Вопрос №484
Доброе время суток !
У меня возник вопрос, в рассылке Ассемблер? Это просто! выпуск 13. Объясняется работа вируса, в принципе всё понятно вот только есть в файле virus13.asm, такая строка
;jmp dword ptr cs:[off_move]
после чего регистр CS становится равен 0BF00h, вот этот факт и озадачил меня, ведь значение 0BF00h, присваивалось регистру ES, seg_move dw 0BF00h
;mov es,seg_move ; вот тут es и стал равен 0BF00h
далее по этому адресу мы и заносим вирус
;mov di,100h
;mov cx, offset Finish-100h
;mov si,100h
;rep movsb
вот теперь (как я понял), в ES c 100 - го смещения и находится наш вирус
но дальше идёт такая строка
;jmp dword ptr cs:[off_move]
и CS стал равен 0BF00h и все вроде бы хорошо, но почему изменился CS ?, ведь логичнее было бы по моему
; jmp dword ptr es:[off_move]
Ведь не трогали же мы СS,а в отладчике всё выглядит так
;jmp FAR CS:[102]
Вот в общем и суть моей проблемы, я был бы очень благодарен если бы вы смогли мне ответить, и ещё если рассылка закрылась то напишите пожалуйста где можно получить ответ.
С уважением serga
serga@unicode.kz
Ответ
Здравствуйте, serga!
Вот уж действительно часто задаваемый вопрос.
Уважаемые подписчики, пожалуйсто, своевременно читайте рассылку ("FAQ"), прежде чем задавать вопрос!
А по существу, вам уже дали 2 ответа, да и в предыдущих вопросах затрагивалась эта тема... Просто прыжок был ДАЛЬНИЙ!
Отправил эксперт: Marmon
Эксперт отправил ответов (всего): 8
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №487
Здравствуйте!
Написал я одну прогу под ДОС. Долго копался в ней. Казалось, что все правильно написано. Вдруг один участок кода показался мне подозрительным. Решил сделать с него прогу (прилагается). Хочу спросить, почему она неправильно работает, если функция 2Ch прерывания 21h вызывается приблизительно 18 раз в секунду? Процессор (Duron 700MHz) не успевает ее выполнить за 1/18с (т. е. до того времени, когда она будет вновь вызвана)?
Спасибо!
P.S.
Если нужна та прога, о которой я вспоминал в самом начале, то могу прислать.
Должна была выйти обычная напоминалка. Для этого и использовал ф-ию 2Сh.
Попробую переделать прогу так, чтобы проверка осуществлялась 1 раз в секунду, а не 18.
Ответ
Tshchinski Nazar!
пришли прогу. а пока единственное, что могу сказать, команда iret тоже не просто так себе выполняесть тихонько, она из стека тянет ерунду всякую (флаги, Ip и Cs по-моему, может в другом порядке), поэтому pusha iret popa сам понимаешь не катит, переставь iret и popa. и еще раз: пришли прогу, потому что кусок абсолютно рабочий (после перестановки) я не пойму, чего ты хочешь чтоб она делала.
Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 35
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №487
Здравствуйте!
Написал я одну прогу под ДОС. Долго копался в ней. Казалось, что все правильно написано. Вдруг один участок кода показался мне подозрительным. Решил сделать с него прогу (прилагается). Хочу спросить, почему она неправильно работает, если функция 2Ch прерывания 21h вызывается приблизительно 18 раз в секунду? Процессор (Duron 700MHz) не успевает ее выполнить за 1/18с (т. е. до того времени, когда она будет вновь вызвана)?
Спасибо!
P.S.
Если нужна та прога, о которой я вспоминал в самом начале, то могу прислать.
Должна была выйти обычная напоминалка. Для этого и использовал ф-ию 2Сh.
Попробую переделать прогу так, чтобы проверка осуществлялась 1 раз в секунду, а не 18.
Ответ
Здравствуйте, Tshchinski Nazar!
Команда iret завершает обработчик прерывания, и если после нее в обработчике находятся еще какие-то инструкции, то они попросту не выполняются. Ты разместил команду popa после команды iret, что привело к нарушению баланса стека - одному из верных способов подвесить комп.
Когда управление пришло в этот обработчик, на вершине стека находилось содержимое регистров ip, cs, flags какой то преостановленной программы, во время выполнения твоего обработчика ты можеш всячески манипулировать со стеком, при одном условии - команда iret, завершающая обработчик, должна получить стек в таком же состоянии, каким он был сразу после вызова, т. е. с дальним адресом возврата и флагами на вершине. Ты же помещаешь в стек аж восемь регистров командой pusha и фактически обратно их не извлекаешь. В твоей программе команда iret достает из стека содержимое регистров di, si и bp, совершает переход по адресу si:di и устанавливает флаги в значение bp. Сам видиш что из этого получается.
Короче, всегда будь со стеком очень внимателен, а в обработчике прерывания утраивай свою внимательность.
Приложение:
Отправил эксперт: Alexander_K
Эксперт отправил ответов (всего): 8
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №467
сБЮФЮЕЛШЕ ЩЙЯОЕПРШ,
С ЛЕМЪ Й БЮЛ РЮЙНИ БНОПНЯ: ЛНФМН КХ Я ОНЛНЫЭЧ ЙНЛЮМДШ WINDOWS, Х ЕЯКХ ДЮ РН ЙЮЙНИ, ОЕПЕБЕЯРХ ЛНМХРНП Б ФДСЫХИ ПЕФХЛ (standby), Б ЙНРНПШИ ЕЦН ОНЯКЕ МЕЯЙНКЭЙХУ ЛХМСР АЕГДЕИЯРБХЪ ОЕПЕБНДХР WINDOWS?
Ответ
гДПЮБЯРБСИРЕ, electronic!
дЮ, ЛНФМН, МН МЮ ЙЮЙНЛ ЪГШЙЕ?
яЛНРПХ SDK Programmers reference HELP РЮЛ ЕЯРЭ.
Отправил эксперт: Alex2000
Эксперт отправил ответов (всего): 23
Экспертная группа: оНКЭГНБЮРЕКЭЯЙЮЪ ПЮАНРЮ Я Windows
Вопрос №474
сБ. щЙЯОЕПРШ.
гЮМХЛЮКЯЪ КХ ЙРН ЖХТПНБШЛ РЕКЕБХДЕМХЕЛ.
уНВС РЕКЕЙЮПРС ЖХТПНБСЧ ЙСОХРЭ, ЛНФЕР ЙРН ВЕЦН МХРЭ ОНЯНБЕРНБЮРЭ.
яОЮЯХАН.
Ответ
гДПЮБЯРБСИРЕ, Oleg!
ю ВРН РШ ХЛЕЕЬЭ ББХДС ОНД ЙЮПРНИ ЖХТПНБНЦН РЕКЕ?
йЮПРС ОПХЕЛЮ ЯОСРМХЙНБНЦН РЕКЕБХДЕМХЪ ХКХ ЙЮПРС ДКЪ БХДЕНЛНМРЮФЮ?
Отправил эксперт: Alex2000
Эксперт отправил ответов (всего): 24
Экспертная группа: лНДЕКХ, БХДШ Х РХОШ ЙНЛОЭЧРЕПНБ (hard)
Вопрос №475
гДПЮБЯРБСИРЕ!
цПНЛЮДМЕИЬЮЪ АКЮЦНДЮПМНЯРЭ ЩЙЯОЕПРС Nik ГЮ ЯЯШКЙС МЮ ЯЮИР Я ЩЙГЮЛОКЮЛХ ОН МЕПЕЮКЭМНЛС ПЕФХЛС. мН БНОПНЯШ МЮ ЩРНЛ МЕ ЙНМВХКХЯЭ :( . дЕКН Б РНЛ, ВРН ЦДЕ-РН ЯКШЬЮК, ВРН МЮВХМЮЪ Я Pentium'НБ ЩРНР ПЕФХЛ АШК НАЗЪБКЕМ АЮЦНЛ ОПНЖЕЯЯНПЮ Х ОНРНЛС ОМЪЛХ МЕ ОНДДЕПФХБЮЕРЯЪ (ОПНБЕПХРЭ МЕ ЛНЦС, С ЛЕМЪ i486DX-100 :) ), УНРЕКНЯЭ АШ ГМЮРЭ, МЮЯЙНКЭЙН ЩРН ЯННРБЕРЯРБСЕР ХЯРХМЕ.
бНХМЯРБСЧЫХИ КЮЛЕП.
Ответ
гДПЮБЯРБСИРЕ, бНХМЯРБСЧЫХИ КЮЛЕП!
б ОПЖЕЯЯНПЮУ ХМРЕК ЕЯРЭ ПЕЮКЭМШИ ГЮЫХЫЕММШИ Х ПЕФХЛ КХМЕИМНИ ЮДПЕЯЮЖХХ, ОНЯКЕДМХИ ЪБКЪЕРЯЪ МЕНТТХЖХЮКЭМШЛ МЕ СЯРЮМНБКЕММШЛ ЯРЮМДЮПРНЛ Х БЯЕ ХМРЕКШ ЕЦН АСДСР ОНДДЕПФХБЮРЭ, ЙЮЙ Х ГЮЫ. ПЕФХЛ.
Отправил эксперт: Alex2000
Эксперт отправил ответов (всего): 26
Экспертная группа: нАЫХЕ БНОПНЯШ ОН ОПНЦПЮЛЛХПНБЮМХЧ МЮ юЯЯЕЛАКЕПЕ ОНД DOS
Вопрос №466
гДПЮБЯРБСИРЕ, ЩЙЯОЕПРШ!
б УНДЕ ОНКЕЛХЙХ ОН ОНБНДС ОПНЬКНЦН ЛНЕЦН БНОПНЯЮ АШКЮ ГЮРПНМСРЮ РЕЛЮ, ЙНРНПСЧ ЛНФМН МЮГБЮРЭ МЕ ХМЮВЕ ЙЮЙ "СДЮП МХФЕ ОНЪЯЮ".
вРН ГЮ "МЕДНЙСЛЕМХПНБЮММШИ МЕПЕЮКЭМШИ ПЕФХЛ ОПНЖЕЯЯНПЮ"? ъ РЮЙ ОНМЪК, ВРН ЩРН ПЕЮКЭМШИ ПЕФХЛ Я ПЮЯЬХПЕММШЛХ БНГЛНФМНЯРЪЛХ ЮДПЕЯЮЖХХ. бЕПМН КХ ЩРН?
еЯРЭ КХ ОН ЩРНЛС МЕДНЙСЛЕМРХПНБЮММНЛС ПЕФХЛС ДНЙСЛЕМРЮЖХЪ? :)
х, ЦКЮБМНЕ, цде???
йЮЙ ЦНБНПХРЯЪ, ОНКЖЮПЯРБЮ ГЮ URL.
я СБЮФЕМХЕЛ, бНХМЯРБСЧЫХИ КЮЛЕП.
Ответ
гДПЮБЯРБСИРЕ, бНХМЯРБСЧЫХИ КЮЛЕП!
мХВЕЦН НЯНАЕММНЦН Б ЩРНЛ ПЕФХЛЕ МЕР, ОПНЯРН ПЕФХЛ КХМЕИМНИ ЮДПЕЕЯЮЖХХ РХОЮ ЙЮЙ LBA С БХМРНБ. оН ЩРНИ ЬРСЙЕ ЕЯРЭ ЙМХЦЮ "оПНЦПЮЛЛХПНБЮМХЕ МЮ ЮООЮПЮРМНЛ СПНБМЕ"ВЭЪ МЕ ОНЛМЧ,ХЫХ Б ХМЕРЕ.
Отправил эксперт: Alex2000
Эксперт отправил ответов (всего): 28
Экспертная группа: нАЫХЕ БНОПНЯШ ОН ОПНЦПЮЛЛХПНБЮМХЧ МЮ юЯЯЕЛАКЕПЕ ОНД DOS
Вопрос №488
Подскажить кто нибудь:
1. Что из себя представляют 32-битные регистры и как ими пользоваться.( и их список с назаначением)
2. Как они связаны с 16 битными регистрами.
Ответ
Здравствуйте, Voodoo!
ВСЕ 32-х битные регистры :
EAX, EBX, ECX, EDX: регистры общего назначения
ESI, EDI: регистры для работы со строками
EBP, ESP: для работы со стеком
EIP: указатель инструкции
EFLAGS: регистр флагов
32-х битные регистры - это регистры, имеющие разрядность 32 бита (может содержать 32 нуля или единицы, например, EAX = 0000 1111 0000 1111 0000 1111 0000 1111).
До 80386 проца ВСЕ регистры были 16-битными (т.е. все, что описано выше было без буковки E: AX,SP,IP и т.д., имели разрядность 16 бит), E - enchansed (расширенный, т.е. + 16 бит); в программах без директривы .386 операции с регистрамии типа EXX, где XX - соответствующий 16-битный регистр недопустимы.
Вообще по-правде говоря, в реальном режиме 32-битные регистры используются крайне редко или вообще не используются (во всяком случае ВСЕ известные мне ф-ции ДОС и БИОС используют на "входе" и "выходе" только 16-битные регистры), а нужны для вычислений над числами большими 65535 или меньшими -32768. И посмотри в любой книжке по АСМ-у на картинку, на которой изображен регистр и все станет яснее ясного.
Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 36
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №488
оНДЯЙЮФХРЭ ЙРН МХАСДЭ:
1. вРН ХГ ЯЕАЪ ОПЕДЯРЮБКЪЧР 32-АХРМШЕ ПЕЦХЯРПШ Х ЙЮЙ ХЛХ ОНКЭГНБЮРЭЯЪ.( Х ХУ ЯОХЯНЙ Я МЮГЮМЮВЕМХЕЛ)
2. йЮЙ НМХ ЯБЪГЮМШ Я 16 АХРМШЛХ ПЕЦХЯРПЮЛХ.
Ответ
гДПЮБЯРБСИРЕ, Voodoo!
бЯЕ РЮЙФЕ ЙЮЙ Х Я 16 АХРМШЛХ, РНКЭЙН РЮЛ 32.
йЮЙХЕ НМХ ЕЯРЭ Х ЙЮЙ ЯБЪГЮМШ Я 16 СГМЮРЭ КЕЦЙН:
АЕПёЬЭ НАШВМШИ ПЕЦХЯРП, МЮОПХЛЕП, AX, DX ... Х ОПХАЮБКЪЕЬЭ АСЙБС E(xtended) ОНКСВЮЕЬЭ 32 АХРМШИ ПЕЦХЯРП, Р.Е. EAX, EDX Х Р.Д
Отправил эксперт: Alex2000
Эксперт отправил ответов (всего): 29
Экспертная группа: нАЫХЕ БНОПНЯШ ОН ОПНЦПЮЛЛХПНБЮМХЧ МЮ юЯЯЕЛАКЕПЕ ОНД DOS
Вопрос №489
Alexander_K это не Казанцев Александр случаем?
Sign: alex2000
Ответ
Здравствуйте, инженер-программист Алексей Шахнюк!
Он самый.
Отправил эксперт: Alexander_K
Эксперт отправил ответов (всего): 9
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №488
Подскажить кто нибудь:
1. Что из себя представляют 32-битные регистры и как ими пользоваться.( и их список с назаначением)
2. Как они связаны с 16 битными регистрами.
Ответ
Здравствуйте, Voodoo!
Для начала в начале программы поставь
.386
И тебе станут доступны 32-битные регистры!
Это все знакомые тебе регистры, только пишутся они так
EAX, EBX, и т.д.
т.е. с добавлением буковки Е перед регистром
16-битными остались сегментные регистры
сs, ds, es, fs, gs(2 последних новые)
А вообще-то книги надо читать...:)
Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 66
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №487
Здравствуйте!
Написал я одну прогу под ДОС. Долго копался в ней. Казалось, что все правильно написано. Вдруг один участок кода показался мне подозрительным. Решил сделать с него прогу (прилагается). Хочу спросить, почему она неправильно работает, если функция 2Ch прерывания 21h вызывается приблизительно 18 раз в секунду? Процессор (Duron 700MHz) не успевает ее выполнить за 1/18с (т. е. до того времени, когда она будет вновь вызвана)?
Спасибо!
P.S.
Если нужна та прога, о которой я вспоминал в самом начале, то могу прислать.
Должна была выйти обычная напоминалка. Для этого и использовал ф-ию 2Сh.
Попробую переделать прогу так, чтобы проверка осуществлялась 1 раз в секунду, а не 18.
Ответ
Здравствуйте, Tshchinski Nazar!
Сначала popa потом iret
т.е. сначала восстанавливаем регистры, потом выходим...
Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 67
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №490
Alexander_K, тебя не трудно узнать по профессиональности и объёмности ответа, а к твоему сведению я не инженер-программист а инженер-электронщик.
Sign:alex2000
Ответ
Здорово, Alex!
Прекрати захламлять рассылку, пиши на 18@au.ru или на username@e-mail.ru или в гости приходи, я как раз резидентную утилиту laba_6_0 дописываю, теперь она по HotKey выгружается.
Отправил эксперт: Alexander_K
Эксперт отправил ответов (всего): 11
Экспертная группа: Общие вопросы по программированию на Ассемблере под 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 |
В избранное | ||