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

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


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

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

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

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

Форма подачи вопроса

ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!

Нажимайте кнопку "Отправить" только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!


Ваше имя *:

Ваш e-mail *:

Подгруппы:

Вопрос *:

Прилагаемая программа (если необходимо):


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

Архив выпусков


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

Калашников Олег: 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. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав.


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

В избранное