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

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


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

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

Выпуск № 355
от 29.08.2002, 15:50

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


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

Sensey
Статус: Профессиональный
Общий рейтинг: 129.89
URL: Страничка рассылки Паскаля...
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
Portnov
Статус: Опытный
Общий рейтинг: 121.64
URL: Один магнитогорский сайт - для тех, кто первый раз слышит про такой город..
[Подробней >>]
Pablo
Статус: Профессиональный
Общий рейтинг: 131.86
URL: Моя страничка
[Подробней >>]
 
ASMодей
Статус: Опытный
Общий рейтинг: 126.92
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 158.92
[Подробней >>]
Igoryk
Статус: Опытный
Общий рейтинг: 113.76
URL: В помощь программисту
[Подробней >>]
 
LIFO
Статус: Опытный
Общий рейтинг: 138.99
Телефон: 8 01710 24758
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 136.03
URL: моя рассылка по Protected Mode
[Подробней >>]
Byter
Статус: Доверительный
Общий рейтинг: 130.65
[Подробней >>]
 
SonicX
Статус: Начальный
Общий рейтинг: 120.89
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 141.86
[Подробней >>]
Топор
Статус: Профессиональный
Общий рейтинг: 117.51
URL: Хорошая Русская Металлическая команда
Телефон: (8462)500298
[Подробней >>]
 
kvINT
Статус: Опытный
Общий рейтинг: 110.59
[Подробней >>]
ARDoS
Статус: Доверительный
Общий рейтинг: 105.57
[Подробней >>]


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

Вопрос № 1077. Как на асме под виндой (и не тока) прочитать S.M.A.R.T. информацию винта?... (ответов: 1)
Вопрос № 1078. Здравствуйте, уважаемые эксперты. API функция LoadLibrary возвращает в AX значение 5. Объясните, пож... (ответов: 4)
Вопрос № 1079. Всем привет! Как мне "прыгнуть" на какой нибудь адрес. Например на 100h. Я делаю так: jmp... (ответов: 10)
Вопрос № 1080. Где можно найти самые начальные сведения о Assembler'е? Что такое регистры, как они работают для чег... (ответов: 8)
Вопрос № 1081. Здравствуйте, эксперты! Позвольте извиниться. У меня в TASM файла cfg вообще нет, а я вам вопросы ту... (ответов: 6)

Вопросов: 5, ответов: 29


 Вопрос № 1077

Как на асме под виндой (и не тока) прочитать S.M.A.R.T. информацию винта?



Вопрос отправлен: 24.08.2002, 11:15
Отправитель: Priest

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

Отвечает Sensey

Приветствую Вас, Priest!
Хочешь вышлю прогу, ты ее дизасемблишь и узнаешь?
Пиши sensey@ukr.net


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


 Вопрос № 1078

Здравствуйте, уважаемые эксперты.
API функция LoadLibrary возвращает в AX значение 5. Объясните, пожалуйста популярно "чайнику", что это за ошибка "попытка связать задачу" и при каких обстоятельствах она возникает?



Вопрос отправлен: 24.08.2002, 12:23
Отправитель: Denis (maximov_denis@mail.ru)

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

Отвечает Portnov

Доброе время суток, Denis!
Ну да, если возвращаемое значение меньше 32, значит, ошибка, иначе - хэндл загруженной библиотеки. Какая ошибка - ну, например, не найдена нужная библиотека, или формат у нее не тот, или еще что... Скорее всего, в MSDN есть табличка кодов ошибок.
С уважением, Portnov.


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


Отвечает Pablo

Добрый день, Denis!
Функция LoadLibrary возвражает идентификатор библиотеки, а при ошибке возвращает NULL. Чтоб получить код ошибки, которая возникла при загрузке библиотеки, нужно вызвать функцию GetLastError, которая и вернет код ошибки, а вот ошибка с кодом 5 это АФАЙК доступ запрещен, к чему уж у тебя там доступ запрещен я не знаю.

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


Отвечает ASMодей

Доброе время суток, Denis!
С чего ты взял что это ошибка? Функция LoadLibrary в случае
ошибки возвращает 0.


Ответ отправлен: 25.08.2002, 09:08
Отправитель: ASMодей


Отвечает masquer

Приветствую Вас, Denis!
В МСДН написано:
If the function succeeds, the return value is a handle to the module
т.е. в еах у тебя будет module handle (на русский сам переводи). А ошибку пожалуйста по английски пиши.

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


 Вопрос № 1079

Всем привет!
Как мне "прыгнуть" на какой нибудь адрес. Например на 100h.
Я делаю так:
jmp 100h
Но не чего не выходит. У меня получается прыгать только на метки. А на ареса не умею...Помогите!!!
PS
В асме я чайник.Так что извините если что не так скажу.


Приложение:


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

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

Отвечает Portnov

Доброе время суток, R@ptor!
Недопонял. Что значит "выходит только jmp start". В смысле jmp 100h tasm/masm не понимает? Тогда кодируйте непосредственно, через db опкод, или берите с меня пример, выкидывайте tasm/masm, берите nasm. Или управление передается метке Start? Так у нее смещение и есть 100h, вы же сами написали прямо перед ней - org 100h.
C уважением, Portnov.

Ответ отправлен: 24.08.2002, 21:54
Отправитель: Portnov


Отвечает Igoryk

Здравствуйте, R@ptor!
При 'прыжке' следует учесть, что начальный адрес не 0, а 100h, т.е. если нужно прыгнуть на 20h от начала программы, то пиши так:
jmp 100h+20h
Осуществится переход на нужный адрес.

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


Отвечает LIFO

Приветствую Вас, R@ptor!
Брр...Давай вместе разбираться...
1. Метки в программе памяти не занимают (пастулат №1)
т.е. есть код:
org 100h
metka:
mov ax,offset metka
смотрим в дебуггере, что у нас теперь в ax адрес команды mov ax,offset metka - 100h!!!!
Как я помню, метки это директивы ассемблера,а не команды,облегчающие жизнь нам,чтобы не запутаться в адресах.
Поэтому jmp 100h и jmp metka (в моем случае)эквивалентны.
Как в твоем случае jmp 100h и jmp start.
Ну как,понятно?



Ответ отправлен: 25.08.2002, 13:23
Отправитель: LIFO


Отвечает masquer

Приветствую Вас, R@ptor!
Прыгнуть можно или относительно текущего положения, либо на значение, определяемое адресом или регистром

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


Отвечает Broken Sword

Добрый день, R@ptor!
вот понимаешь... почему тебя не удивляет, что компиллятор понимает инструкцию jmp ? int ? Ведь jmp - это EB, а INT - это CD...
Ведь если бы ты сам писал компиль, то мог бы называть все как угодно и через что угодно, главное - это конечный результат. Теперь, почему в ТАСМ-е и МАСМ-е нет такой возможности ? ну это уже спросить нада у разработчиков компилляторов, они посчитали, что все равно не найдется человека, который будет вручную высчитывать смещение, поэтому ДЛЯ нашего же с вами УДОБСТВА придумали метки, какой то синтаксис и т.п.
Это все к тому, что все ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ (как например в твоем случае, или там, инструкцию не понимает компиль какую то новую типа rdtsc) решаются однозначно - db XX ...
Понимаешь? Т.е. теперь тебе нада допустим jmp на 100h
ты и пишешь db 0EBh, XXh, где XX - относительное смещение относительно (каламбур) текущего адреса, т.е. ты короче сам того не осозновая усложняешь себе жизнь


Ответ отправлен: 24.08.2002, 23:28
Отправитель: Broken Sword


Отвечает Byter

Приветствую Вас, R@ptor!
Можно так:
...
jmp word ptr Adres
...
...
Adres dw 100h


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


Отвечает SonicX

Добрый день, R@ptor!
Можно прямым межсегментным переходом:
push cs ; кодовый сегмент
pop ax
mov seg,ax
mov ofs,100h ; или что угодно
db 0eah
ofs dw ?
seg dw ?

Ответ отправлен: 25.08.2002, 17:09
Отправитель: SonicX


Отвечает ASMодей

Приветствую Вас, R@ptor!
Прямой переход на адрес, к сожалению, не позволяют сделать
ни TASM ни MASM. Переход можно сделать так:
push 100h
ret


Ответ отправлен: 25.08.2002, 09:09
Отправитель: ASMодей


Отвечает Dark_Lord

Здравствуйте, R@ptor!
Компилятор не может прыгнуть на уже занятый меткой адрес, может это глюк!?

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


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

Приветствую Вас, R@ptor!
Способ раз:
jmp near labl
labl dw 100h ; описать где-нибудь в данных, если com-файл
Способ два, более надёжный:
push 100h
retn


Ответ отправлен: 25.08.2002, 00:23
Отправитель: Топор


 Вопрос № 1080

Где можно найти самые начальные сведения о Assembler'е?
Что такое регистры, как они работают для чего нужны? Ну в таком духе.
Заранее благодарен.
ToT



Вопрос отправлен: 25.08.2002, 08:50
Отправитель: ToT (tot_chip@fromru.com)

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

Отвечает kvINT

Добрый день, ToT!
www.wasm.ru
цикл статей "Низкоуровневое программирование для дZенствующих". Начни со статьи "Введение в машинный код"

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


Отвечает Igoryk

Добрый день, ToT!
На сайте www.kalashnikoff.ru В разделе Начинающим. Скоро нужную тебе информацию выложу и на своем сайте.

Ответ отправлен: 25.08.2002, 13:22
Отправитель: Igoryk


Отвечает LIFO

Здравствуйте, ToT!
hi-tech.nsys.by (там раньше рассылочка неплохая выходила)
kalashnikoff.ru (рассылка)


Ответ отправлен: 25.08.2002, 13:23
Отправитель: LIFO


Отвечает Byter

Добрый день, ToT!
В рассылки Калашникова.
В книге Зубкова."Ассемблер дла Windows,Dos и Unix"

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


Отвечает SonicX

Приветствую Вас, ToT!
Поищи поисковиками.

Ответ отправлен: 25.08.2002, 17:04
Отправитель: SonicX


Отвечает masquer

Приветствую Вас, ToT!
В книгах лучше всего. Посмотри предыдущие выпуски и выбери то что тебе подойдет.

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


Отвечает Dark_Lord

Приветствую Вас, ToT!
В книгах! В рассылке!

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


Отвечает ARDoS

Доброе время суток, ToT!
Купи себе любую книгу по АСме например Юрова"Ассемблер Учебник" или Пирогова"АССЕМБЛЕР", там это очень хорошо объясняется.


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


 Вопрос № 1081

Здравствуйте, эксперты!
Позвольте извиниться. У меня в TASM файла cfg вообще нет, а я вам вопросы тупые задаю. Ладно.
1. Если не трудно киньте мне на мыло файл конфига для TASM!
Плииз!
Осбенно прошу Dark_Lord!!!
2. Подскажите пожалуйсто: Ломал CustomizerXP. Так когда я его "зарегистрировал" (ввсел пароль) - все ништяк,
но когда запускаю в следующий раз, то вылезает опять NAG с просьбой зарегистрировать.
Что это может быть???
С уважением X_a!ex (x_alex)
x_night@amur.ru



Вопрос отправлен: 25.08.2002, 15:48
Отправитель: x_alex (x_night@amur.ru)

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

Отвечает Igoryk

Добрый день, x_alex!
1. А зачем тебе cfg-файл. У меня его нет и программы нормально компилируются, а вот что касается tlink.cfg, то его содержание такое:
-DC: asmlib.

Ответ отправлен: 25.08.2002, 19:15
Отправитель: Igoryk


Отвечает LIFO

Доброе время суток, x_alex!
Не далил процедуру, кот. отвечает за это.

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


Отвечает masquer

Добрый день, x_alex!
Недоломал значит. Проверок то несколько может быть, причем разных, а ты как думал?

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


Отвечает Dark_Lord

Приветствую Вас, x_alex!
Нету! Ну не знаю, может какой-то у тебя тасм другой, у меня файл tlink.cfg, и в нём:
-LC: asmin
, причём C: asmin, это где мой тасм и мои файлы компиляции!


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


Отвечает Portnov

Доброе время суток, x_alex!
1.CFG файл у Tasm'а - это, AFAIK, файл, в к-ром на каждой строке выписана опция командной строки. Т.е. если вы хотите ассемблировать всегда
tasm myprog.asm /x /z /iC:\asm\include,
но каждый раз вводить это лень, а вводить хочется просто tasm myprog.asm, то создаете в текущей директории файл tasm.cfg след. содержания:
-=Cut=-
/x
/z
/iC:\asm\include
-=Cut=-
и эти опции будут подставляться автоматически.
С уважением, Portnov.

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


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

Доброе время суток, x_alex!
Файл *.cfg для TASM(32).EXE и TLINK(32).EXE можно создать самому. В него просто забиваются часто используемые ключи, и в принципе можно всю командную строку туда засунуть. Если файл имеет имя, совпадающее с соответствующим транслятором или линкером, расширение cfg и лежит с ними в одной папке, то он открывается автоматически. Если нет, то его надо давать в командной строке с символом @, например:
tasm.exe @proga.ta (тогда расширение может быть и не cfg)
tlink.exe @proga.tl (те же яйца)


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



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (30)
"Железо" (39)
Поиск информации (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
Отписаться
Убрать рекламу

В избранное