Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Ассемблер? Это просто! Учимся программировать (FAQ)
Ассемблер? Это просто! Учимся программировать (FAQ)
Выпуск N 030 |
Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"
Дата выхода: 2001-06-28
Рейтинг экспертов
На скорую руку созданную программу, которая показывает кол-во набранных баллов экспертов можно посмотреть здесь:http://www.kalashnikoff.ru/cgi-bin/CleanExp.cgi
Я не гарантирую постоянную работу указанной выше ссылки. Со временем все станет более культурно.
Спасибо за внимание!
Вопрос №237
Здравствуйте уважаемые Экперты. У меня к вам вопрос
В одной из рассылок, где работа с видеобуфером
была одна строка
mov es:[di],ax
я немного с ней неразобрался, поясните поподробней если это
нетрудно
Best Regarts,
Andrey S.
Ответ
Здравствуйте, Andrey S.! значит так... в es находится сегмент видио буфера а в di смещение... [] что находится в них является адресом таким образом мы кидаем в буфер по смещению di данные из ax. Срвет посмотри как это работает в отладчике
Отправил эксперт: sasha
Эксперт отправил ответов (всего): 33
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №242
Привет экспертам!
Хелп ми!
С недавнего времени юзаю Вынь Ме :). Как известно Мелкомягкие, по неизвестной мне пока причине, осознано вырубили реальный режим Доса :(. Это не проблема (в инете есть патч :) для io.sys и command.com - для того чтобы опять вернуть реал - в config.sys делается конфигурационное загрузочное меню и все Ок!). Дело в том, что все вроде бы в порядке, кроме одного:
немогу подключить русскую раскладку клавиатуры :(. Дося на файл keybrd3.sys матерится "Не правильная версия Дос". Из-за этого не могу писать к своим программам на Асме, (в реале) комментарии на русском :( приходится применять транлитерацию и все такое прочее. Помогите очень прошу.
Спасибо :).
До скорого общения.
ЗЫ. Файлы autoexec.bat и config.sys прилагаю (писал сам).
DZ_Zero-Q
dz_zero-q@mail.ru
Ответ
Здравствуйте, DZ_Zero-Q! ЭХ... честно сказать тоже МЕ ставил, но для ассемблера и тем более для ассемблера под дос это не то... она очень плохо держит доз (даже после патча), могу посоветовать только то что б поставил 98 винду и всё
Отправил эксперт: sasha
Эксперт отправил ответов (всего): 34
Экспертная группа: Пользовательская работа с Windows
Вопрос №244
Привет экспертам!
Написал программу, в которой заменена команда ret на pop ip (решил приколоться).
Прогу прилагаю.
А оказывается ассемблер не знает о существовании этого регистра (или знает?).
Пишет ошибку A2006 - необъявленный идентификатор.
Вопрос:
Если Асм на самом деле не знает о существовании регистра ip, то как его "заставить" узнать о нем? Или это невозможно?
Спасибо.
До скорого общения.
DZ_Zero-Q
dz_zero-q@mail.ru
ЗЫ. Командная строка masm pop_ip,,
link /t pop_ip
Естестна ком формат.
И еще вопросик:
В чем разница между ml.exe и mlx.exe (версия MASM 6.0)
Ответ
Здравствуйте, DZ_Zero-Q! всё это конечно хорошо! но в ассемблере , да как и везде нельзя программно использовать регистр ip и следовательно программа неверна!
Отправил эксперт: sasha
Эксперт отправил ответов (всего): 35
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №246
Здраствуйте ув. эксперты!
Я пытаюсь сам написать обработчик прерывания почти такой же как и в рассылке №10.
Столкнулся с проблемой перехода в INT 21H.
Пытаться перейти туда путём установки в CS и IP значений бесполезно т.к. это нужно сделать одной коммандой (а я не имею понятия как это сделать) и наверно это невозможно. Посмотрев как это делает Автор у меня появились вопросы:
Почему это при ассемблировании работает ? ("jmp dword ptr
cs:[Int_21h_vect]", где "Int_21h_vect dd ?").
Разъясните пожалуйста непросвещённому что такое "jmp dword ptr cs:[Int_21h_vect]", где "Int_21h_vect" содержит 4 байта с устанавливаемыми IP и CS в данном порядке(сначала IP, потом CS), и куда же оно прыгнет ???
И ещё, вот моя программа,которая ассемблируется но не линкуется (программа Олега успешно компилируется и работает). Link говорит: "Error: Cannot generate COM file : data below initial CS:IP defined").
Ответ
Здравствуйте, VK! что тут непонятного??? по этой строке программа идёт на старый обработчик прерывания...
Отправил эксперт: sasha
Эксперт отправил ответов (всего): 36
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №254
Ув. эксперт sasha!
Z и так знаю что делает "jmp dword ptr cs:[Int_21h_vect], где "Int_21h_vect" содержит 4 байта с устанавливаемыми IP и CS в данном порядке (сначала IP, потом CS)".
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!Я не понимаю как она это делает !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Если можешь то ответь подробно:
1. Я не понимаю как действует DWORD вместо обычного WORD (напр. "jmp Label1" - при ассемблировании ассемблер заменит Label1 на смещение в сегменте куда загружена моя программа, я прав ?)
2. Я вообще не понимаю смысла и расшифровки "ptr".
3. Почему записано так: CS:[Int_21h_vect], как это понимать и чему это равносильно ???
4. Какие ещё возможности предосталяет "jmp" ???
Пожалуйста, помогите разобраться, кто хорошо знает оператор "jmp" !!!
Ответ
Здравствуйте, VK! ptr делает преобразование разных типов, например так допустим есть переменная обььявленная как
perem1 dd ?
дальше к примеру эту переменную надо впихнуть в 16 -ти разрядный регистр, делается это с помощью оператора преобразвония ptr
таким образом
mov ax, dword ptr perem1 CS:[Int_21h_vect]
а здесь так это работает! CS - это регистр кода правильно??? а переменная int_21_vect это адрес нашего старого обработчика прерывания, таким образом просто ссылаемя на него вот и всё!!!
Отправил эксперт: sasha
Эксперт отправил ответов (всего): 37
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №253
Здраствуйте, уважаемые эксперты!
Подскажите, кому не лень, какой самый удобный и лучший отладчик на ваш взгляд. Мне не обязательно с супер наворотами, в которых нужно разбираться, а удобный и без заморочек. И где его можно закачать?
Если есть ещё какие-нибудь удобные программки, то пишите где скачать.
Ну а у кого большое желание помочь, то вот моё мыло: vkmb5880@prvtel.uralnet.ru
Буду рад всякой помощи. Заранее благодарен.
Ответ
Ну это уж кому как. Лично я просто тащусь от SoftIce. Но он замороченый для новичков. А я советую начать с TD or CV. есть в ТАМС МАСМ соотв. Надо основы понять. Хотя айс под винду - просто зверь. И ТД со своими основами даже рядом не э-э-э.. проходил!
Отправил эксперт: K.A. NiCK
Эксперт отправил ответов (всего): 35
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №255
Здравствуйте эксперты !!!
Хочу спросить, может кто объяснит почему файл содержащий один символ весит 1 БАЙТ, а ведь его ИМЯ, АТРИБУТЫ, ВРЕМЯ СОЗДАНИЯ... тоже где-то храняться, и под них наверное тоже место отводится ?
С Благодарностью
Сергей.
Ответ
Здравствуйте, Serzh!
Всё_то,_о чём ты спрашиваешь, хранится в справочнике_диска.
Подробнее можно прочитать у П.Нортона(Глава_5, пункты 5_и
6.
Tschabanow@ewetel.net
Отправил эксперт: Oleg
Эксперт отправил ответов (всего): 4
Экспертная группа: Пользовательская работа c DOS
Вопрос №256
у меня тасм5.0 не ассеблируется программа
Assembling file: life.asm
*Warning* life.asm(2) Open segment: CSEG
**Fatal** life.asm(2) Unexpected end of file encountered
Ответ
Здравствуйте, Tim! Вот ты вызываешь int 16h и что??? где функция?? что одно прерывание это делает???, возможно это ошибка
Отправил эксперт: sasha
Эксперт отправил ответов (всего): 38
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №254
Ув. эксперт sasha!
Z и так знаю что делает "jmp dword ptr cs:[Int_21h_vect], где "Int_21h_vect" содержит 4 байта с устанавливаемыми IP и CS в данном порядке (сначала IP, потом CS)".
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!Я не понимаю как она это делает !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Если можешь то ответь подробно:
1. Я не понимаю как действует DWORD вместо обычного WORD (напр. "jmp Label1" - при ассемблировании ассемблер заменит Label1 на смещение в сегменте куда загружена моя программа, я прав ?)
2. Я вообще не понимаю смысла и расшифровки "ptr".
3. Почему записано так: CS:[Int_21h_vect], как это понимать и чему это равносильно ???
4. Какие ещё возможности предосталяет "jmp" ???
Пожалуйста, помогите разобраться, кто хорошо знает оператор "jmp" !!!
Ответ
Здравствуйте, VK!
С вопросом как ВСЕ команды работают в фирму Intel, пожалуйста.
1. Просто у инструкции jmp есть две формы выполнения, которые можно указывать явно. jmp near - переход меняет только смещение. И jmp far - переход изменяет и сегмент и смещение. Соответственно для записи смещения нужно 2байта(слово), поэтому jmp автоматически ассемблируется в jmp near. Если же ты указываешь в качестве аргумента сегмент:смещение, то происходит трансляция в jmp far.
2. ptr - это не команда процессора, а директива ассемблера, означающая, что следующее за ней число адрес. Просто в процессоре существует 2 режима адресации: прямая и косвенная. В косвенной адресации мы указываем адрес ячейки где хранится аргумент команды(адрес перехода в вашем случае). Для того чтобы ассемблировать правильно косвенную адресацию мы и указываем ptr, а так как размер тоже влияет на формирование кода команды, то надо и его указывать.
3. Потому что, мы берем адрес перехода из сегмента CS, а не сегмента DS. А поступаем мы так, потому что у нас com-программа, да еще и резидентная.
>>чему это равносильно ???
????
4. Подожди до вечера я тебе все пришлю, а не только jmp.
Отправил эксперт: Александр
Эксперт отправил ответов (всего): 49
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №255
Здравствуйте эксперты !!!
Хочу спросить, может кто объяснит почему файл содержащий один символ весит 1 БАЙТ, а ведь его ИМЯ, АТРИБУТЫ, ВРЕМЯ СОЗДАНИЯ... тоже где-то храняться, и под них наверное тоже место отводится ?
С Благодарностью
Сергей.
Ответ
Здравствуйте, Serzh!
Все эти аттрибуты хранятся в записи каталога, где под них отведено место
Отправил эксперт: RANDOM
Эксперт отправил ответов (всего): 7
Экспертная группа: Пользовательская работа c DOS
Вопрос №242
Привет экспертам!
Хелп ми!
С недавнего времени юзаю Вынь Ме :). Как известно Мелкомягкие, по неизвестной мне пока причине, осознано вырубили реальный режим Доса :(. Это не проблема (в инете есть патч :) для io.sys и command.com - для того чтобы опять вернуть реал - в config.sys делается конфигурационное загрузочное меню и все Ок!). Дело в том, что все вроде бы в порядке, кроме одного:
немогу подключить русскую раскладку клавиатуры :(. Дося на файл keybrd3.sys матерится "Не правильная версия Дос". Из-за этого не могу писать к своим программам на Асме, (в реале) комментарии на русском :( приходится применять транлитерацию и все такое прочее. Помогите очень прошу.
Спасибо :).
До скорого общения.
ЗЫ. Файлы autoexec.bat и config.sys прилагаю (писал сам).
DZ_Zero-Q
dz_zero-q@mail.ru
Ответ
Здравствуйте, DZ_Zero-Q!
А не попробовать ли тебе поставить в качестве руссификатора что-нибудь типа keyrus и иже с ним
Отправил эксперт: RANDOM
Эксперт отправил ответов (всего): 8
Экспертная группа: Пользовательская работа с Windows
Вопрос №263
Эксперт Александр, большое спасибо за помощь!!!
У меня ещё есть вопросы:
1. Как ты думаешь "ptr = [ ]" или не равно ???
2. Если хочешь, то пришли мне свой e-mail, чтобы не загружать ни сервер ни других (экспертов и чайников)
3. Я тут в отладчике помучался и вот информация для размышления (в приложении).
Я заметил то что после "ptr" можно сколько угодно квадратных скобок ставить код от этого не изменится. Может это и не правильно для некоторых случаев. Я неуверен.
Интересные вещи с комбинацией операторов происходят !!!
Нельзя записать так : "jmp word [ia]", нужно "ptr" добавить или "[DS:IA]".
Кто хочет давайте разберёмся в "jmp","ptr" и "[ ]".
VK
Ответ
Здравствуйте, VK! а что тут разбираться?? ptr преобразование типов ...
используется для того что бы засунуть в к примеру 2 байтовый регистр 4 байтовое слово... jmp прыжок на метку, [] способ адресования... т.е что находится в скобках является адресом (смещением) а не данными
Отправил эксперт: sasha
Эксперт отправил ответов (всего): 39
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №256
у меня тасм5.0 не ассеблируется программа
Assembling file: life.asm
*Warning* life.asm(2) Open segment: CSEG
**Fatal** life.asm(2) Unexpected end of file encountered
Ответ
Здравствуйте, Tim!
Строку assume CS:CSEG,DS:CSEG,ES:CSEG,SS:CSEG
надо заменить на строку assume CS:CSEG
Приложение:
Отправил эксперт: Вася
Эксперт отправил ответов (всего): 1
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №253
Здраствуйте, уважаемые эксперты!
Подскажите, кому не лень, какой самый удобный и лучший отладчик на ваш взгляд. Мне не обязательно с супер наворотами, в которых нужно разбираться, а удобный и без заморочек. И где его можно закачать?
Если есть ещё какие-нибудь удобные программки, то пишите где скачать.
Ну а у кого большое желание помочь, то вот моё мыло: vkmb5880@prvtel.uralnet.ru
Буду рад всякой помощи. Заранее благодарен.
Ответ
Здравствуйте, VK!
По-моему, AFDPRO
Я послал его тебе по e-mail
Отправил эксперт: Вася
Эксперт отправил ответов (всего): 2
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Вопрос №252
Хочу замутить прогу, которая бы сидела резидентом и всем мешала...
Моя резидентка под DOSом работает,под Виндой-ни шиша. Как сделать резидентную программу для Винды? Или, если у кого есть прога, которая сидит резидентом и записывает в файл все нажатые клавиши, вышлите мне на sania@vpcit.ru.
Удачи!!
Ответ
Здравствуйте, RC!
Как писать под Виндовс я не знаю, но я тебе прогу послал.
Попробуй,может чё получится.
Отправил эксперт: Вася
Эксперт отправил ответов (всего): 3
Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS
Подписаться на рассылки
Форма подачи вопроса
ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Если Вы сомневаетесь, какой подгруппе следует отправить вопрос, то направляйте его в обычном текстовом виде по адресу Experts@Kalashnikoff.ru. Вопрос будет выслан соответствующей подгруппе.Нажимайте кнопку "Отправить" только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!
Регистрация в качестве эксперта
Ведущий рассылки,
Калашников Олег:
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 |
В избранное | ||