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

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 83
от 13.03.2005, 18:00

Администратор:Калашников О.А.
В номере:Вопросов: 3, Ответов: 7


Вопрос № 17966: Здравствуйте. У меня несколько вопросов... 1) Изучил уже 14,5 выпусков рассылки (сейчас на 15-ом сижу... хотя поверхностно проичитал уже где-то до 20-ого) , но до сих пор не знаю как на ассемблере сделать элементарную вещь, а именно элементарно з...
Вопрос № 17979: Здравствуйте! Подскажите пожалуйста, где можно найти доку по программированию железа без применения функций ДОС, Windows и других ОС (через порты ввода-вывода)...
Вопрос № 17992: Всех с праздничком ;0). А вопрос такой: Как запустить другую программу из своей в момент загрузки WinXp, т. е. до того момента, как станут доступны API. Можно ли с помощью int 4b00h или не прокатит (попробовать сам пока не успел). Если нельзя...

Вопрос № 17966
Здравствуйте. У меня несколько вопросов...
1) Изучил уже 14,5 выпусков рассылки (сейчас на 15-ом сижу... хотя поверхностно проичитал уже где-то до 20-ого) , но до сих пор не знаю как на ассемблере сделать элементарную вещь, а именно элементарно запомнить введенную пользователем с клавиатуры строку... Вот я и интересуюсь, будет ли где-нибудь в последующих выпусках об этом???
2) После долгих мучений над Турбо Дэбагером и Коуд Вью я пиршел к выводу, что в программах типа *.сом не представляется возможным сохранить отладочную информацию (то есть, чтоб при отладке иметь дело с реальным исходным текстом программы, а не с дизасемблированной ерундой, при работе с которой волей-неволей приходится запоминать адреса всех call-ов jmp-ов и т. п. Так ли это??? (например используя tasm я прописывал: tasm.exe prog.asm /zi, tlink prog.obj /t /v - результат такой же как и без навороченных ключей... а вот при создании .ехе файла работало....
3) Зачем тасм дописывает "левые" nop-ы??? Например при ассемблировании примера из 13 номера рассылки (вирус) тасм-ом програма имеет размер 133 байт в то время как при использовании масма -132 байта... в отладчике же появляется лишний nop...
4) Дайте, пожалуйста, кто-нибудь ссылочку на полноценный пакет tasm (в котором "все включено")... а то у меня сейчас только какой-то дифективный тасм, шедший в комплекте с урезаным Borland C++ 3.1..
5) А, собственно, занимаются ли еще Microsoft и Borland созданием масма и тасма??? А то почему-то везде, где присутствует упоминание о масме, идет речь о версии максимум 6.14... а ей уже кажись более 10 лет...
Кажется все...
Большое всем спасибо...
Отправлен: 08.03.2005, 01:29
Вопрос задал: CrazyIronToiletPaper (статус: 1-ый класс)
Всего ответов отправлено: 4

Отвечает: Стас
Здравствуйте, CrazyIronToiletPaper!
1) не знаю не читал, :) а для того чтобы ввести строку с клавиатуры нужно:
зарезервировать под неё память скажем простым db 18,20 dup(0)
и либо самому принимать коды клавы (с int16h) и укладывать их туда, либо использовать DOS ввод ah=0ah int 21h DS:DX - указавает на твой буффер.
3) используй ключ /m
Ответ отправил: Стас (статус: Практикант)
Отправлен: 08.03.2005, 02:03
Оценка за ответ: 5

Отвечает: _vt
Здравствуйте, CrazyIronToiletPaper!
1) Не помню, будет ли там об этом, но это просто. Например, читать посимвольно с помощью int 16h/ah=00h.
2) В самом коде программы - невозможно, но можно сохранить ее отдельно. Для TASM и TD это делается так:

tasm /zi prog.asm
tlink /v prog.obj
tdstrip /s /c prog.exe


Т.е. ты создаешь exe и превращаешь его в com, отделяя отладочную инфу в файл. TD ее увидит.
3) Для выравнивания кода на какую-то границу, например. Т.е. для оптимизации скорости, например.
4) На сайте борланда вполне может валяться, он теперь бесплатен. Если нет - exetools.com
5) Microsoft точно занимается. В составе последних Visual Studio есть ml.exe версий 7.00 и 8.00. Но это только эти файлы. Полноценный пакет - только 6.11.
--

* In Gates we trust! :)

Ответ отправил: _vt (статус: Академик)
Отправлен: 08.03.2005, 02:08
Оценка за ответ: 5

Отвечает: Евгений Иванов
2. Да, отладочная информация доступна только в формате EXE. COM её не поддерживает.
3. Чтобы лишние NOP-ы исчезли, необходимо проставить многопроходовое ассемблирование. Для этого есть ключ /mЧисло, где Число - сколько делать проходов. При этом на втором и более проходах Ассемблер будет искать эти самые лишние NOP-ы, которые остаются от команд ближнего перехода, и удалять их, корректируя остальные адреса. Если писать программы определённым образом, то количество проходов можно свести к двум.
Удачи!
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 08.03.2005, 03:22
Оценка за ответ: 5

Отвечает: Dark_Lord
Здравствуйте, CrazyIronToiletPaper!
1) Если не требуется каких-то особых проверок, то считать строку можно при помощи функции 0Ah, прерывания 21h, на входе ah=0Ah, DS:DX = адрес буфера.
2)Насколько я знаю в .com нельзя сохранить ничего кроме кода (и данных)
3)Процессоры работают с командами немного быстрее, если адрес тех выравнен до определёного числа, тасм производит эту оптимизацию при компиляции.
4)-
5)Занимаются, но как и новых версий дос, новых версий ассемблеров для дос немного. Относительно недавно вышел masm 8.1, но ориентирован он в основном на работу с Windows...
Ответ отправил: Dark_Lord (статус: Профессионал)
Отправлен: 08.03.2005, 10:09
Оценка за ответ: 5


Вопрос № 17979
Здравствуйте!
Подскажите пожалуйста, где можно найти доку по программированию железа без применения функций ДОС, Windows и других ОС (через порты ввода-вывода)
Отправлен: 08.03.2005, 13:47
Вопрос задал: bjudge (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: Стас
Здравствуйте, bjudge!
Подробнее! Какое железо конкретно ты хочешь помучать?
Вообщем процесс выглядит следующим образом:
получаешь байт (IN) из порта статуса устройства(для каждого свой)
проверяешь в этом байте биты готовности устройства к "общению"
посылашь(OUT) один или несколько байт в один или несколько (зависит от устройства) портов - команда и данные.
получаешь (IN) один или несколько байт из портов статуса и данных - результат и статус устройства.
Ну примерно так...
Ответ отправил: Стас (статус: Практикант)
Отправлен: 09.03.2005, 01:12


Вопрос № 17992
Всех с праздничком ;0).
А вопрос такой:
Как запустить другую программу из своей в момент загрузки WinXp, т. е. до того момента, как станут доступны API. Можно ли с помощью int 4b00h или не прокатит (попробовать сам пока не успел). Если нельзя, то как?
Спасибо...
P.S. WinXp SP1, masm.
Отправлен: 08.03.2005, 16:50
Вопрос задал: Дима Михайлов (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: PavPS
Здравствуйте, Дима Михайлов!
API начинают быть боступными после загрузки соответствующих либ. Сначала из HAL, ntoskrnl,ntdll и т.д. В самом нечале грузятся сервисы - можешь использовать их, потом посли логона, начинают запускаться приложения - можешь сервисом захучить их и с их помошью запустить прогу, или отредактировать быстро ключь RUNOnce реестра - никто и не заметит. А вообще не очень понятно задан вопрос, т.о. извиняй за не очень ясный ответ :)
Ответ отправил: PavPS (статус: 6-ой класс)
Отправлен: 08.03.2005, 17:07

Отвечает: _vt
Здравствуйте, Дима Михайлов!
Если твоя программа является драйвером - то с помощью специальной API это делается - обращайся в Win XP DDK за справкой. int 4b00h тут совсем не причем.
--

* In Gates we trust! :)

Ответ отправил: _vt (статус: Академик)
Отправлен: 09.03.2005, 11:57


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться

В избранное