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

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


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

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

Выпуск № 356
от 30.08.2002, 15:50

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1141
Отправлено ответов: 3489
Активность: 305.7 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе]


 Список экспертов, ответы которых опубликованы в данном выпуске

Broken Sword
Статус: Профессиональный
Общий рейтинг: 135.84
URL: моя рассылка по Protected Mode
[Подробней >>]
Byter
Статус: Доверительный
Общий рейтинг: 130
[Подробней >>]
Pablo
Статус: Профессиональный
Общий рейтинг: 131.33
URL: Моя страничка
[Подробней >>]
 
LIFO
Статус: Опытный
Общий рейтинг: 137.61
Телефон: 8 01710 24758
[Подробней >>]
Топор
Статус: Профессиональный
Общий рейтинг: 117.57
URL: Хорошая Русская Металлическая команда
Телефон: (8462)500298
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 141.83
[Подробней >>]
 
masquer
Статус: Профессиональный
Общий рейтинг: 158.81
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 129.76
URL: Страничка рассылки Паскаля...
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
Igoryk
Статус: Опытный
Общий рейтинг: 113.55
URL: В помощь программисту
[Подробней >>]
 
copycon
Статус: Доверительный
Общий рейтинг: 112.4
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 119.77
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 119.3
URL: Пристанище неодинокого программиста
[Подробней >>]
 
Portnov
Статус: Опытный
Общий рейтинг: 121.55
URL: Мой сайтик...
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 116.86
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
Andrey
Статус: Начальный
Общий рейтинг: 106.15
[Подробней >>]
 
ARDoS
Статус: Доверительный
Общий рейтинг: 105.39
[Подробней >>]
SonicX
Статус: Доверительный
Общий рейтинг: 118.98
[Подробней >>]
Painbringer
Статус: Профессиональный
Общий рейтинг: 169.88
URL: Музычка, стишки и прочая дрянь
[Подробней >>]
 
kvINT
Статус: Опытный
Общий рейтинг: 110.41
[Подробней >>]
Beeblebrox
Статус: Профессиональный
Общий рейтинг: 116.19
URL: Beeblebrox / TMA HomePage
[Подробней >>]
Shal
Статус: Опытный
Общий рейтинг: 107.48
[Подробней >>]
 
nix
Статус: Опытный
Общий рейтинг: 112.23
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1082. Hi all! Помогите разобраться с этой программой. А именно не понятно вот это: Init: mov ax,8899h in... (ответов: 4)
Вопрос № 1083. Уважаемые все! Заранее извиняюсь на возможную неуместность вопроса. Кто знает где сейчас живет рас... (ответов: 2)
Вопрос № 1086. Мир Вашему дому, уважаемый эксперт! Возникла проблема, надеюсь на помощь. Дано: 1. Запускается прило... (ответов: 3)
Вопрос № 1087. Доброго времени суток господа Эксперты Вы наверняка слышали о стресс тестах которые проводят после ... (ответов: 2)
Вопрос № 1088. Здравствуйте. В книге "Ассемблер? Это просто!Учимся программировать под MS-DOS (Том I)" оп... (ответов: 8)
Вопрос № 1090. Уважаемые эксперты, у меня небольшой вопрос. В стандартной поставке MASM32 есть каталог COM в которо... (ответов: 1)
Вопрос № 1091. Здравствуйте эксперты! Подскажите, как расстояние (например, длина линии на экране) в пикселях перев... (ответов: 8)
Вопрос № 1092. Добрый день уважаемые эксперты. Дополнение к "Вопрос № 1045" Запускаю SoftICE 4 в нем: bp... (ответов: 2)
Вопрос № 1093. Уважаемые эксперты, посоветуйте плз где в сети можно найти побольше инфы по написанию программ на яз... (ответов: 4)
Вопрос № 1094. Здравствуйте, эксперты! У меня к Вам вопрос: При "ассемблировании" файла его надо сначала ... (ответов: 12)

Вопросов: 10, ответов: 46


 Вопрос № 1082

Hi all!
Помогите разобраться с этой программой.
А именно не понятно вот это:
Init:
mov ax,8899h
int 10h
cmp ax,9988h ; Тут проверка на повторную загрузку
jne Set_resident ; Если не 9988(т.е если не в памяти) то установить
mov ah,9
mov dx,offset In_memory
int 21h
ret
Set_resident:
........
Вроде всё ясно!
Int_10h_proc proc
pushf
cmp ax,8899h;Получается что если мы загружаем 1 раз(ax=8899),то не чего не загружается, ведь если ах=8899 то мы просто делаем 9988 и выходим, а резидент не чего не делает.По мойму должно быть всё наоборот т.е. не cmp ax,8899h а cmp ax,9988h.
jne Next_test
xchg ah,al
popf
iret
Next_test:
cmp ah,88h
jne Go_10h
..........
Мне сложно объяснить чего я не могу понять, сложно сформулировать.Так что прошу постарайтесь понять сказанное выше.
СПАСИБО!!!



Приложение:


Вопрос отправлен: 25.08.2002, 16:16
Отправитель: R@ptor (Spinosaur@narod.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Broken Sword

Здравствуйте, R@ptor!
Во-первых, давай разберемся с понятиями, потому как из твоих предложений видно что с этим проблемы: TSR-прога - это программа, которая останется в памяти ПОСЛЕ завершения. ТА ЧАСТЬ TSR-ПРОГРАММЫ (чаще всего - установочная), которая после выхода в памяти НЕ ОСТАНЕТСЯ, называется трансцендентной (transient), а вот тот кусок который ОСТАНЕТСЯ висеть в памяти и есть непосредственно РЕЗИДЕНТ.
Теперь следи за ходом мысли:
Мы запускаем наш TSR в первый раз. Что происходит?
mov ax,8899h
int 10h
Т.к. мы запускаем наш TSR В ПЕРВЫЙ РАЗ (!), то естественно менять местами ah и al некому, согласен? Стандартный обработчик int 10h такой ерундой не занимается. Т.е. после int 10h мы получим в ax ЧТО УГОДНО, только не 9988h, так?
Т.е. мы на выходе получили AX=БРЕД
Теперь смотри дальше:
cmp ax,9988h
или иначе говоря, cmp наш бред с 9988, естественно ->
jne Set_resident
В SET_RESIDENT перехватится int 10h, навесится уже на наш код и после int 27 (или чего там) останется висеть в памяти. Так?
Шаг номер два: ЗАПУСКАЕМ TSR ВО ВТОРОЙ (!) РАЗ !!!!
Смотри внимательно дальше! Опять все то же самое:
mov ax,8899h
int 10h
СТОП!!! Понмишь наш первый шаг? Тогда после int 10 выполнялся стандартный обработчик. А сейчас?? Ведь мы же перехватили int 10h на первом шаге, верно? Т.е. после int 10h управление передается уже не на стандартный, а на наш Int_10h_proc. СОГЛАСЕН?
СМОТРИ ДАЛЬШЕ:
pushf
cmp ax,8899h
РАВНО ? КОНЕЧНО РАВНО!!! Мы ведь сами только что сделали mov ax,8899h
jne Next_test ; никаких next_test!!! идем дальше по коду
xchg ah,al
МЕНЯЕМ ah и al
popf
iret
возвращаемся.... AX у нас теперь равно 9988 (следишь?) смотрим:
cmp ax,9988h
ДА !!! ВОТ ТЕПЕРЬ ОНИ РАВНЫ
jne Set_resident ; НИФИГА! ЗАЧЕМ ВТОРОЙ РАЗ ЕГО ВЕШАТЬ?
выведем сообщение, что прога уже в памяти
Теперь запусти TSR в третий, четвертый, .... двадцатый раз, и каждый раз все будет происходить в ТОЧНОСТИ, как на втором шаге (т.е. ВТОРОЙ РАЗ ОНА РЕЗИДЕНТОМ НЕ ЛЯЖЕТ!)
Теперь смотри, ты скажешь, так тогда int 10h вообще не будет работать, оно ведь только и делает что меняет ah и al местами, и больше ничего!!! На самом деле нет - посмотри ОЧЕНЬ внимательно на jne Next_test. НА самом деле, ВО ВСЕХ СЛУЧАЯХ, кроме нашего (когда int 10h вызывается в начале нашего TSR-а, или иными словами, когда AX НЕ РАВНО 8899h) будет происходить прыжок именно на Next_test...
Надеюсь, все вопросы отпали. Но если что - не стенсняйся, спрашивай еще, я могу еще более доступно это все повторить )
(хотя это уже будет тяжело сделать...)

Ответ отправлен: 25.08.2002, 19:41
Отправитель: Broken Sword


Отвечает Byter

Доброе время суток, R@ptor!
8899 это позывной
Его будет отправлять наи только наша программа,
а если нам его отправили,то мы ей отвечаем и выходим.
Представь :
Мы уже в памяти
Программа отправляет нам 8899
Мы проверяем на 9988(это как ты хочешь сделать)
Не отправляем программе ответ
И программа считает ,что нас в памяти нет ,и перезаписывает нас туда
Понял?:)

Ответ отправлен: 25.08.2002, 16:28
Отправитель: Byter


Отвечает Pablo

Доброе время суток, R@ptor!
Как раз все правильно, на входе значение ax является номером функции, а на выходе же значение в ax параметр по которому определяется евляется ли прога уже резидентом или нет.

Ответ отправлен: 27.08.2002, 21:43
Отправитель: Pablo


Отвечает LIFO

Доброе время суток, R@ptor!
Так...
Все по-порядку:
Init:
mov ax,8899h
int 10h
далее cmp ax,8899h , т.е. мы делаем проверку на установку, резидент сравнивает и престанавливает местами - мы в памяти.
В противном случае сравниваем только ah = 88 - вызов нашей новой функции, если да (al - все равно), то пишем 'моя строка' если же эти два случая не подошли , то отдаем управление real int 10h...
Ну, алгоритм понятен (посмотри в отладчике обязательно - все станет на свои места, зайди внутрь нашего обработчика с разными значениями ax)


Ответ отправлен: 28.08.2002, 10:46
Отправитель: LIFO


 Вопрос № 1083

Уважаемые все! Заранее извиняюсь на возможную неуместность вопроса. Кто знает где сейчас живет рассылка rtfm_helpers? Поисковики ведут на yahoogroups, в то время как поиск по группаи ее не находит. Пробовал RTFM_helpers-subscribe@yahoogroups.com, но в ответ тишина, а вдоль дороги мертвые с косами стоять....
Поможите плиз кто может.
Крайне обязан
Саня.



Вопрос отправлен: 25.08.2002, 16:25
Отправитель: Саня

[Следующий вопрос >>] [Список вопросов]

Отвечает Broken Sword

Приветствую Вас, Саня!
www.wasm.ru
(rtfm_helpers@wasm.ru)

Ответ отправлен: 25.08.2002, 19:41
Отправитель: Broken Sword


Отвечает LIFO

Здравствуйте, Саня!
Я подписывался где-то в начале лета через сайт
hi-tech.nsys.by

Ответ отправлен: 27.08.2002, 11:39
Отправитель: LIFO


 Вопрос № 1086

Мир Вашему дому, уважаемый эксперт!
Возникла проблема, надеюсь на помощь.
Дано:
1. Запускается приложение, при этом, естественно создаётся процесс и принадлежащий ему поток. Назовём этот поток потоком А.
2. Приложение создаёт ещё один поток (Поток В). В этом потоке создаются одно или несколько окон.
3. В конце концов, поток В завершает работу и при этом уничтожает все принадлежащие ему (созданные им) окна («Я тебя породил, я тебя и убью». Тарас Бульба нашёлся!).
Надо:
Чтобы при завершении потока В окна созданные им не уничтожались и продолжали нормально функционировать.
(Как вариант решения: может можно как-то переназначить поток-владельца окна от потока В к потоку А?)



Вопрос отправлен: 25.08.2002, 20:35
Отправитель: ЗасЛанец

[Следующий вопрос >>] [Список вопросов]

Отвечает Топор

Здравствуйте, ЗасЛанец!
Вообще-то, насколько я знаю, в процедуру создания окна надо вручную передавать идентификатор процесса-родителя. Если он нулевой, то это окно вроде должно быть самостоятельным. В вопросе не копался, могу быть и не прав.


Ответ отправлен: 26.08.2002, 17:16
Отправитель: Топор


Отвечает Dark_Lord

Доброе время суток, ЗасЛанец!
Ты попробуй для окон отдельный тред(thred) сделать, у них нет потока породитель, они как-бы независими.
З.ы. только потом удалить их не забудь, ато работать будут до-о-олго!

Ответ отправлен: 25.08.2002, 20:44
Отправитель: Dark_Lord


Отвечает masquer

Приветствую Вас, ЗасЛанец!
Неполучится, при выходе из потока освобождаются все хуки и окна, им созданные.
Создавай окна в потоке А, а в поток В передавай описатель. Можно критическими секциями воспользоваться, если доступ из нескольких потоков будет.

Ответ отправлен: 25.08.2002, 21:12
Отправитель: masquer


 Вопрос № 1087

Доброго времени суток господа Эксперты
Вы наверняка слышали о стресс тестах которые проводят после оверлокинга компов, для проверки стабильности. Так вот вопрос, чего стрессового эти проги(тесты) делают?



Вопрос отправлен: 25.08.2002, 21:24
Отправитель: Евгений

[Следующий вопрос >>] [Список вопросов]

Отвечает Dark_Lord

Добрый день, Евгений!
Юзают CPU или память на полную мощность (100%) в течении какого-то времени, если всё ОК, то система стабильно!
Просто интересно, при чём тут рассылка по ассемблеру?!

Ответ отправлен: 25.08.2002, 21:36
Отправитель: Dark_Lord


Отвечает Sensey

Приветствую Вас, Евгений!
Ну я например запускаю Q3 Demo - для нагрузки видео и заодно в фоне батничком архивирую каталог виндовс, удаляю архив и по новой :)
То есть нагружаю все что можно...
Для проверки памяти есть неплохая прога на сайте Артема Шегеды shegeda.chat.ru


Ответ отправлен: 27.08.2002, 10:01
Отправитель: Sensey


 Вопрос № 1088

Здравствуйте. В книге "Ассемблер? Это просто!Учимся программировать под MS-DOS (Том I)" описана функция 09h прерывания 21h. Почему написано, что на выходе функции "ничего"? Если посмотреть её работу в отладчике, то при выходе из функции в AL заносится последний символ строки, т.е. $(24h).



Вопрос отправлен: 25.08.2002, 23:24
Отправитель: Sergei

[Следующий вопрос >>] [Список вопросов]

Отвечает Топор

Доброе время суток, Sergei!
А у Зубкова, например, так и написано - по документации ничего, а на деле - последний символ.


Ответ отправлен: 26.08.2002, 17:12
Отправитель: Топор


Отвечает Byter

Приветствую Вас, Sergei!
Возможно прерывание при выводе строки использует регистр al,
не очищая его после работы.
А может это сделано специально.


Ответ отправлен: 26.08.2002, 16:20
Отправитель: Byter


Отвечает Igoryk

Добрый день, Sergei!
Все дело в том, что автор книги считает ненужным считывать регистр AX, раз после такой операции он равен 24h. Но в книге Зубкова это уже подмечено.

Ответ отправлен: 27.08.2002, 12:41
Отправитель: Igoryk


Отвечает Pablo

Приветствую Вас, Sergei!
А написано так потому, чтобы программст не забивал себе всякой ерудндой голову, в этом коде так, в другом коде по другому. То есть наверное лучше бы написать было бы out: al - destroyed.

Ответ отправлен: 26.08.2002, 13:15
Отправитель: Pablo


Отвечает Broken Sword

Приветствую Вас, Sergei!
Это согласно официальной документации так
p.s. де ты взял эту книгу?

Ответ отправлен: 26.08.2002, 12:17
Отправитель: Broken Sword


Отвечает copycon

Здравствуйте, Sergei!
А енто уже недокументированная фича :)))
Удачи.


Ответ отправлен: 26.08.2002, 00:12
Отправитель: copycon


Отвечает Dark_Lord

Доброе время суток, Sergei!
Потому что в этой книги автор поступил умно и не стал недокументированные вещи писать. Да, ты прав, всё время возвращается последний записанный символ, который всегда равен $, но мелкософт об этом официально не заявлял, тоесть может взять да убрать, поэтому лучше это не использовать!

Ответ отправлен: 26.08.2002, 00:41
Отправитель: Dark_Lord


Отвечает Ayl

Добрый день, Sergei!
Да, есть такая вещь, что помешало мне однажды с оптимизацией :-) А идет, видимо, из документации Microsoft Corp. Причем дублируется во всех справочниках, даже в Tech Help, хотя там наиболее достоверная инфа собрана.
Хотя на самом деле это большая подстава. И не только с этой функцией, я еще несколько раз наталкивался, что изменяются регистры, которые не должны этого делать, согласно документации.
Писали бы, что ли, modified...


Ответ отправлен: 26.08.2002, 02:31
Отправитель: Ayl


 Вопрос № 1090

Уважаемые эксперты, у меня небольшой вопрос.
В стандартной поставке MASM32 есть каталог COM в котором
есть архив, после его разархивирования имеем ряд каталогов с
расказами об работе с Component Object Model , то есть COM объектами.
там каталог BIN содержит *.BAT файлы для примеров из катклога
EXAMPLES, в котором есть каталог MYCOM, это пример библиотеки
содержащей COM объект. Пример кампилируется файлом BLDDLL.BAT,
получается нормальный DLL файл всем хорош для ассемблера.
Но там же в каталоге TESTAPP есть пример использования этой
библиотеки (MyCom.DLL) в визуал бейсике, а для него при создании
библиотеки (или после её создания) набо создавать файл с
расширением *.TLB (mycom.tlb), он есть в исходном примере,
но при использовании BLDDLL.BAT не создаётся.
При создании аналогичных библиотек в визуал С++ этот библиотечный
файл *TLB создается автоматически, там для этого есть ещё и файл MKTYPLIB.EXE.
И вот вопрос в том как его создать в MASM32, что для этого надо?
Ведь как-то же его создают, раз он есть в этом примере?



Вопрос отправлен: 26.08.2002, 04:23
Отправитель: Kostik (mks@norcom.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Добрый день, Kostik!
Посмотри внимательней, там есть idl файлы, которые с помощью midl.exe компилируются в tlb. Правда, сам midl.exe в пакет не входит, его из визуал студии взять можно.

Ответ отправлен: 26.08.2002, 09:55
Отправитель: masquer


 Вопрос № 1091

Здравствуйте эксперты!
Подскажите, как расстояние (например, длина линии на экране) в пикселях перевести в миллиметры (см, м, км).



Вопрос отправлен: 26.08.2002, 08:32
Отправитель: EraSer (eraser99@tut.by)

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Добрый день, EraSer!
Разрешение экрана 72 точки на дюйм. От этого и отталкивайся.

Ответ отправлен: 26.08.2002, 09:58
Отправитель: masquer


Отвечает Sensey

Доброе время суток, EraSer!
:)
Ну возми линейку, померяй размер экрана в мм(у меня 285), при разрешении в 1024 пикселя по ширине получаем
1 пиксел == 285:1024=0.278 мм
:)


Ответ отправлен: 27.08.2002, 10:04
Отправитель: Sensey


Отвечает Byter

Доброе время суток, EraSer!
Зависит от разрешения монитора!

Ответ отправлен: 26.08.2002, 16:27
Отправитель: Byter


Отвечает Артём Шегеда

Здравствуйте, EraSer!

Если это программа для DOS, то ничего более умного я уже не посоветую.
Если это программа для Windows, то...
Мерять линейкой длину отрезка на мониторе - это, конечно, интересное занятие (особенно если расчитывать, что программа работает на 10,20,...,1000 различных типах мониторов с разными разрешениями). Но по-моему, лучше вызвать функцию GetDeviceCaps, передав в качестве первого параметра 0, а в качестве второго - LOGPIXELSX (или LOGPIXELSY - для режимов с "квадратными" пикселами они будут равны). Возвращаемый результат - количество точек в дюйме. Дели на 2.54 - будет количество точек в сантиметре.

Ответ отправлен: 26.08.2002, 16:29
Отправитель: Артём Шегеда


Отвечает Portnov

Доброе время суток, EraSer!
Ну, знаете ли...
Скажем, вот с моим монитором. max.разрешение 1280х1024, зерно 0.21mm. Если разрешение именно такое, то pixel==зерно. Т.о., 1px=0.21mm. Сможете отсюда чего надо посчитать? При этом учитывайте, что зерно у каждого монитора свое. И еще, при других разрешениях pixel!=зерно, напр., 800х600: 1280/800=1.6 => 1px=0.21mm*1.6=0.336mm.
C уважением, Portnov.


Ответ отправлен: 26.08.2002, 14:39
Отправитель: Portnov


Отвечает Pablo

Здравствуйте, EraSer!


Ответ отправлен: 26.08.2002, 12:34
Отправитель: Pablo


Отвечает baldr

Здравствуйте, EraSer!
Вообще-то это зависит от разрешения экрана.
Попробуй при известном разрешении вывести на экран линию в 100-500 пикселов и померить линейкой. Там вычисли коэффициент величины пиксела относительно разрешения (во сказал!) и считай.

Ответ отправлен: 26.08.2002, 12:25
Отправитель: baldr


Отвечает copycon

Доброе время суток, EraSer!
Для этого сначало надо узнать коэфицент перевода конкретно для этого монитора/разрешения.
Если монитор P&P может он и сам сможет расказать.
Хотя разные проги (CorelDraw) заставляют пользователя самому с линеечкой экран мерять :)
Удачи.


Ответ отправлен: 28.08.2002, 19:50
Отправитель: copycon


 Вопрос № 1092

Добрый день уважаемые эксперты.
Дополнение к "Вопрос № 1045"
Запускаю SoftICE 4 в нем:
bpx MessageBoxA
bl
00) bpx User32!MessageBoxA
То есть точку останова он поставил правильно. Далее, создаю простейший проект на Delphi 5. На форму ложу одну кнопку в OnClick кнопки прописываю следующий код
procedure TForm1.Button1Click(Sender: TObject);
begin
Windows.MessageBoxA(Handle, '1111', 'aaaaaa', 1);
end;
Компилирую и запускаю проект. Жму кнопку. Результат НОЛЬ, точка останова не срабатывает. Если устанавливаю BreakPoint на CreateWindowExA или на GetProcAddress то все работает отлично. В чем может быть причина такого странного поведения SoftICE’а?
Версия SoftICE: SoftICE (R) – DriverStudio (tm) 2.5.0 (Build 240)
Устанавливал только SoftICE (и патч для него под WinXP)
OS: Windows XP



Вопрос отправлен: 26.08.2002, 09:48
Отправитель: Green (zelenin_ve@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает masquer

Добрый день, Green!
Пробуй
MessageBeep, MessageBoxIndirectA, MessageBoxExA

Ответ отправлен: 26.08.2002, 10:12
Отправитель: masquer


Отвечает Broken Sword

Приветствую Вас, Green!
Во-первых, никакого патча не нужно, 150 раз писалось про DS 2.6, а во вторых - в момент написания bpx messageboxa ты должен находится в адресном пр-ве проги. Смотри как это делается:
Запускаешь SI, держишь уже наготове свою прогу на дельфях (чтоб одним кликом ее сразу же и запустить). Жмешь ctrl+D, вводишь bpx loadlibrarya
F5
СРАЗУ же запускаешь свою прогу (это к тому, чтоб ты не шарил в ее поисках по всему винту, т.к. SI будет брякаться практически при каждом открытии папки). Вообщем, прога у тебя была уже выделена, ты жмешь просто enter и оказываешься в SI (loadlibrarya в myprogram.exe)
Теперь жмешь F12, затем bc*, и вот только теперь можно делать bpx messageboxa. Громоздко? Да, но по другому без SL не получится (SL - это Symbol Loader)

Ответ отправлен: 26.08.2002, 12:17
Отправитель: Broken Sword


 Вопрос № 1093

Уважаемые эксперты, посоветуйте плз где в сети можно найти
побольше инфы по написанию программ на языке ассемблера
под Linux/Unix. В тех книгах по асму, которые я видел в
продаже (в С-Петербурге), этот вопрос если и освещается
то очень поверхностно. Хотелось бы в идеале, чего-нибудь
последовательное, с примерами... TIA



Вопрос отправлен: 26.08.2002, 10:58
Отправитель: Evasive

[Следующий вопрос >>] [Список вопросов]

Отвечает Byter

Добрый день, Evasive!
Есть книга Зубкова "Ассемблер для Windows,Dos и Unix",
но ее нет в цифровом виде.


Ответ отправлен: 26.08.2002, 16:31
Отправитель: Byter


Отвечает Andrey

Здравствуйте, Evasive!
Ничего суперского в инете и книгах не найдете, все из-за того, что большинство программистов под Unix относятся к ASM как к средству понижения переносимости программ. Однако есть несколько сайтов, один из них http://www.linuxassembly.org/. Зайдите также на страницу компилятора NASM http://www.cryogen.com/Nasm/, ну а дальше везде по ссылкам.

Ответ отправлен: 27.08.2002, 14:50
Отправитель: Andrey


Отвечает LIFO

Приветствую Вас, Evasive!
Таких полноценных книг нету ( я не видел ).
В Зубкове посмотри...


Ответ отправлен: 28.08.2002, 10:46
Отправитель: LIFO


Отвечает ARDoS

Доброе время суток, Evasive!
Недавно этот вопрос задавали.
http://www.sourceforge.net
http://www.geocities.com/SiliconValley/Ridge/2544/asm/assembler.html
http://www.lcs-chemie.de/assemb.htm
http://www.tizek.com/tutorials/linuxasm.htm
http://www.linuxassembly.org/
http://home.od.ua/~blackw
http://www.ibiblio.org/pub/Linux/docs/
http://www.citforum.ru
http://dkws.narod.ru
http://www.linuxoid.ru
http://www.kylixportal.chat.ru
http://linux.itsoft.ru
http://www.linux.org.ru


Ответ отправлен: 28.08.2002, 14:40
Отправитель: ARDoS


 Вопрос № 1094

Здравствуйте, эксперты!
У меня к Вам вопрос: При "ассемблировании" файла его надо сначала Linkовать, а
затем Tasmить?. Напишите мне алгоритм "ассемблирования" файла.
Заранее спасибо.
x_night@amur.ru



Вопрос отправлен: 26.08.2002, 14:53
Отправитель: x (x_night@amur.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает SonicX

Доброе время суток, x!
Например у тебя файл prog.asm:
1)tasm prog
Если файл без ошибок у тебя будет prog.obj
2)tlink prog /tdc
У тебя получается файл prog.com

Ответ отправлен: 27.08.2002, 19:29
Отправитель: SonicX


Отвечает Portnov

Добрый день, x!
Наоборот.
tasm myprog.asm
tlink myprog.obj, если еще поставить /t - будет создан com-файд, а так - exe.
С уважением, Portnov.


Ответ отправлен: 26.08.2002, 17:44
Отправитель: Portnov


Отвечает Painbringer

Доброе время суток, x!
вообще то наоборот.....

Ответ отправлен: 26.08.2002, 18:22
Отправитель: Painbringer


Отвечает Byter

Здравствуйте, x!
Смотри мыло.


Ответ отправлен: 26.08.2002, 16:32
Отправитель: Byter


Отвечает Топор

Доброе время суток, x!
tasm.exe [ключи] proga.asm,,,
Если не было синтаксических ошибок, на выходе будет proga.obj
tlink.exe [ключи] proga.obj
На выходе будет proga.exe, или, если у тлинкера в ключах было /t и соблюдены некоторые условия, proga.com


Ответ отправлен: 26.08.2002, 16:58
Отправитель: Топор


Отвечает kvINT

Доброе время суток, x!
Как раз наоборот.

Ответ отправлен: 26.08.2002, 17:57
Отправитель: kvINT


Отвечает masquer

Доброе время суток, x!
Только наоборот - снача компилятор идет, а потом линкер.
Ага, щаз!!! Алгоритм напишите...
Если так уж хочется Фасм в исходниках идет, бери, разбирайся.

Ответ отправлен: 26.08.2002, 15:35
Отправитель: masquer


Отвечает Beeblebrox

Здравствуйте, x!
Для ассемблирования файла достаточно его просто ассемблировать, то есть tasmить
В результате получается объектный файл, который при желании можно слинковать линкером и получить исполняемый файл (com или exe)

Ответ отправлен: 26.08.2002, 16:14
Отправитель: Beeblebrox


Отвечает LIFO

Приветствую Вас, x!
Нет, сначала тасмить, потом линковать.
Алгоритмы задрало писать по сто раз, скачай 1-ые выпуски рассылки Олега.


Ответ отправлен: 28.08.2002, 10:43
Отправитель: LIFO


Отвечает Shal

Здравствуйте, x!
tasm.exe file.asm
tlink.exe file.obj


Ответ отправлен: 28.08.2002, 00:28
Отправитель: Shal


Отвечает ARDoS

Здравствуйте, x!
Наоборот сначала tasm'ить, а потом link'овать
Пример:1)ЭТО БУДЕТ EXE
tasm proga.asm
link proga.obj
2)А ЭТО БУДЕТ СОМ
tasm proga.asm
link /t proga.obj
3)А ЭТО БУДЕТ EXE для WINDOWS с подключением файла ресурсов
brcc32 proga
tasm32 /ml proga
tlink32 /Tpe /aa /c /x proga,,,,,proga.res


Ответ отправлен: 28.08.2002, 14:40
Отправитель: ARDoS


Отвечает nix

Добрый день, x!
Ассембле транслирует исходный текст в машинный код, а линковщик подправляет в нем адресацию.(на сколько я знаю) Если енто не так, то пусть меня поправит действительно знающий человек:-)))

Ответ отправлен: 30.08.2002, 14:31
Отправитель: nix



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (40)
C / C++ (29)
Perl (12)
Delphi (16)
Pascal (26)
Basic / VBA (11)
Java / JavaScript (13)
PHP (11)
MySQL / MSSQL (13)
Пользователю
Windows 95/98/Me (45)
Windows NT/2000/XP (31)
"Железо" (40)
Поиск информации (18)
Администратору
Windows NT/2000/XP (16)
Linux / Unix (17)
Юристу
Гражданское право (9)
Семейное право (7)
Трудовое право (8)
КоАП (5)

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




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное