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

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


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

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

Выпуск № 438
от 09.12.2002, 19:00

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


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

Maverick
Статус: Профессиональный
Общий рейтинг: 137.58
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 108.66
URL: Страничка обо мне и моих друзьях
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 117.25
[Подробней >>]
 
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.37
[Подробней >>]
Eugene
Статус: Опытный
Общий рейтинг: 110
URL: мощный файловый архив
[Подробней >>]
Max
Статус: Начальный
Общий рейтинг: 115.9
[Подробней >>]
 
DiGiT[old]
Статус: Опытный
Общий рейтинг: 106.96
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 114.47
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 122.54
URL: Страничка рассылки по Паскалю
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
 
keleb-glin
Статус: Доверительный
Общий рейтинг: 115.76
[Подробней >>]
Дмитрий
Статус: Начальный
Общий рейтинг: 100.62
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 119.52
[Подробней >>]
 
St
Статус: Опытный
Общий рейтинг: 115.37
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.11
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 123.24
[Подробней >>]


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

Вопрос № 2033. Привет всем. Вот такой вопрос: 1.как в исходную строку вставить после заданного символа, все символ... (ответов: 2)
Вопрос № 2034. Здравствуйте, Эксперты ! Поясняю и коректирую вопрос 2018 В программе MAINPRO определенны переменные... (ответов: 2)
Вопрос № 2035. Здравствуйте, Эксперты ! Пишу на Visual Basic, но в предназначенном разделе, мало кто отвечает ! Под... (ответов: 2)
Вопрос № 2036. Hi. Большая просьба: дайте урл на ХОРОШУЮ доку по структуре PE файла, а если не трудно то лучше приш... (ответов: 2)
Вопрос № 2037. При изучении асмы возникла "небольшая проблема", а именно: при выводе символов в текстовом... (ответов: 3)
Вопрос № 2038. Приветствую уважаемых экспертов! Вы не поверите, C, Pascal, Basic, Java, все их визуальные решения и... (ответов: 5)
Вопрос № 2039. Здравствуйте. Собираю информацию по драйверам: ВСЕ - справочники, статьи, рефераты и пр. Мой e-mail:... (ответов: 1)
Вопрос № 2040. Здравствуйте, Эксперты ! Мне нужно чтобы программа передала три переменные подпрограмме как параметр... (ответов: 5)
Вопрос № 2041. Доброго времени суток, уважаемые эксперты! Я тут столкнулся с глупой и от того неожиданной ошибкой! ... (ответов: 6)

Вопросов: 9, ответов: 28


 Вопрос № 2033

Привет всем. Вот такой вопрос: 1.как в исходную строку вставить после заданного символа, все символы , предшествующие ему, оставшуюся часть строки оставить без изменения. 2. как можно подсчитать количество слов в предложении.Заранее Большое спасибо.



Вопрос отправлен: 04.12.2002, 19:21
Отправитель: evgen

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

Отвечает Maverick

Доброе время суток, evgen!
1.Сканируй строку на наличие этого символа, а то что просканировал запоминай где нибудь.
2."Сравнить пока не равно" пробелу, равно-увеличим счетчик слов и дальше.
Если не понял:
Maverick@nightmail.ru

Ответ отправлен: 05.12.2002, 07:08
Отправитель: Maverick


Отвечает Gibbel

Приветствую Вас, evgen!
1. Сместить оставшуюся часть строки к концу на необходимое количество символов. Затем скопировать символы на позицию после заданного символа.
2. Посчмтай количество пробелов +1.
P.S.: Сессия приближается???

Ответ отправлен: 05.12.2002, 16:13
Отправитель: Gibbel


 Вопрос № 2034

Здравствуйте, Эксперты !
Поясняю и коректирую вопрос 2018
В программе MAINPRO определенны переменные QTY как DB, VALUE как DW и PRICE как DW.
программа написана под DOS
1. Каким образом нужно указать в программе MAINPRO, что переменные доступны другим программам.
2. Каким образом в подпрограмме указать, что три переменные определенны в другом месте.
Программа MAINPRO вызывает подпрограмму SUBPRO!
SUBPRO делит VALUE на QTY и записывает в частное PRICE.
Т.е. SUBPRO вроде функции.



Вопрос отправлен: 04.12.2002, 19:28
Отправитель: Саша

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

Отвечает Ayl

Доброе время суток, Саша!
См. приложение

Приложение:

Ответ отправлен: 05.12.2002, 17:41
Отправитель: Ayl


Отвечает Bob Johnson

Добрый день, Саша!
Public и Extrn.


Ответ отправлен: 05.12.2002, 15:07
Отправитель: Bob Johnson


 Вопрос № 2035

Здравствуйте, Эксперты !
Пишу на Visual Basic, но в предназначенном разделе, мало кто отвечает !
Подскажите API-функцию которая закачивает файл с интернета с указанного байта, указанное кол-во байт.
Ведь ассемблер тоже может использовать API



Вопрос отправлен: 04.12.2002, 19:30
Отправитель: Саша

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

Отвечает Gibbel

Добрый день, Саша!
Ну, начнем с того, что для закачки файла с инета используется намного больше одной функции...
Также есть вариации - будешь ли ты работать при помощи winsock, либо же будешь использовать WinInet API, или же WinHTTP API... В любом случае, если ты работаешь с HTTP протоколом, тебе необходимо добавить заголовок "Range: bytes=[begin]-[end]", где вместо [begin] подставляешь номер первого требуемого байта, а вместо [end] - номер последнего.
Как тоже организовать в других протоколах читай в соответствующей документации...

Ответ отправлен: 05.12.2002, 10:20
Отправитель: Gibbel


Отвечает Bob Johnson

Приветствую Вас, Саша!
Да... API, конечно мощный набор функций, но... не все же делать одним call. Нет такой функции! Более, если хочешь именно с указанного байта, то сам делай. Иначе есть FtpGetFile. Она скачивает целый файл и все такое.
P.S. Assembler может использовать API функции.


Ответ отправлен: 05.12.2002, 15:08
Отправитель: Bob Johnson


 Вопрос № 2036

Hi. Большая просьба: дайте урл на ХОРОШУЮ доку по структуре PE файла, а если не трудно то лучше пришлите (доку) ее на мыло.
Заранее сэнкс.



Вопрос отправлен: 04.12.2002, 22:04
Отправитель: HeX (x-nucleus@yandex.ru)

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

Отвечает Maverick

Приветствую Вас, HeX!
Скинул, вроде никто не жаловался на нее.


Ответ отправлен: 05.12.2002, 07:09
Отправитель: Maverick


Отвечает Gibbel

Доброе время суток, HeX!
RSDN.ru

Ответ отправлен: 05.12.2002, 10:26
Отправитель: Gibbel


 Вопрос № 2037

При изучении асмы возникла "небольшая проблема", а именно: при выводе символов в текстовом режиме(исходники Калашникова, первые уроки) в ВинХР, они, как это ни странно не выводятся. Что делать, как быть:). А то без этого считаю свои знания немного не полными: я знаю, что это правильно, но что именно там вывелось-то??!



Вопрос отправлен: 04.12.2002, 22:07
Отправитель: Kiros (kir_jkl@hotbox.ru)

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

Отвечает Maverick

Здравствуйте, Kiros!
Ну дык а какая прога то?
Вообще ничего не выводится?


Ответ отправлен: 05.12.2002, 07:09
Отправитель: Maverick


Отвечает Eugene

Добрый день, Kiros!
Попробуй в самом начале проги поставить смену видеостраницы.
mov ax, 0500h
int 10h

Ответ отправлен: 05.12.2002, 09:39
Отправитель: Eugene


Отвечает Bob Johnson

Приветствую Вас, Kiros!
сделай в начале своей проги
mov ax, 3
int 10h
и все будет ок.


Ответ отправлен: 05.12.2002, 15:08
Отправитель: Bob Johnson


 Вопрос № 2038

Приветствую уважаемых экспертов!
Вы не поверите, C, Pascal, Basic, Java, все их визуальные решения и даже Fortran (в частности 99), довались мне легко и без особых усилий. Но сколько я не пытался, пересесть за ASM у меня ни чего не выходит. Может кто даст какой-нибудь линк на книгу для "полных" идиотов, где конкретно, русским языком, написано: какие функции, в сочетании с какими прерываниями(допустим, что реч идёт о досе) и регистрами используються, и зачем, и почему и т.д. и .т.п
Заранее благодарен.
С уважением Tibor Ferencig.



Вопрос отправлен: 05.12.2002, 03:32
Отправитель: Tibor (tibor_ferencig@mail.ru)

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

Отвечает Max

Доброе время суток, Tibor!
Держи !!! Должен пиво.!!!


Ответ отправлен: 05.12.2002, 22:02
Отправитель: Max


Отвечает DiGiT[old]

Добрый день, Tibor!
Все языки, которые ты перечислил алгоритмические, в принципе асм тоже. Ты попробуй Prolog поюзать сразу облезешь, совсем другая концепция. А чтобы писать на асме надо много помнитьЯ, чего не предполагается при программировании на других языках

Ответ отправлен: 06.12.2002, 09:18
Отправитель: DiGiT[old]


Отвечает baldr

Доброе время суток, Tibor!
И снова в который раз могу посоветовать книгу С.В.Зубкова "Assembler для DOS, Windows и Unix".
Достаточно качественно и доступно написано. Книга доступна в книжных магазинах, а, возможно, и
даже наложенным платежом (если попробовать заказать на www.dmk.ru).
Сам же я учился по книге Питера Абеля "Программирование на языке Assembler для IBM PC" (или
как-то так). Эта книга есть почти на всех крупных сайтах с подобной литературой.


Ответ отправлен: 05.12.2002, 23:23
Отправитель: baldr


Отвечает Maverick

Здравствуйте, Tibor!
Читай Калашникова, рассылку.
Я сам с нее начинал, и интересно, и доступно.
Разберешся с ней, ищи Зубкова, не в инете, а в магазине.
В электронном варианте ее нет.
А дальше уже зависит от области применения ассемблера(демки, драйвера, вирусы и т.д.)
По возникающим вопросам можешь мне мылить, помогу чем смогу.
Maverick@nightmail.ru


Ответ отправлен: 05.12.2002, 07:09
Отправитель: Maverick


Отвечает Sensey

Приветствую Вас, Tibor!
Ну например отличная справочная система TechHelp
ЗЫ 666 ответ - как Я дьявольски умен ;)))))


Ответ отправлен: 05.12.2002, 12:15
Отправитель: Sensey


 Вопрос № 2039

Здравствуйте.
Собираю информацию по драйверам: ВСЕ - справочники, статьи, рефераты и пр. Мой e-mail: bayramanna@investbank.org
Спасибо.



Вопрос отправлен: 05.12.2002, 08:31
Отправитель: Bayram Annanurov (bayramanna@investbank.org)

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

Отвечает baldr

Здравствуйте, Bayram Annanurov!
Мда... Интересное хобби... :-// А сами драйвера не собираешь?
Ты бы хоть объяснил для чего тебе это надо? Курсовик пишешь? Тогда примерную структуру подскажем.
Или хочешь драйвер написать (а под какую ось??), так мы тебе и ссылки соответствующие дадим!
В общем, поясни, а то - "собираю... Спасибо..." :-// И что?


Ответ отправлен: 05.12.2002, 23:23
Отправитель: baldr


 Вопрос № 2040

Здравствуйте, Эксперты !
Мне нужно чтобы программа передала три переменные подпрограмме как параметры .
А подрограмма чтобы возратила результат через параметр.
как это cделать ?



Вопрос отправлен: 05.12.2002, 18:02
Отправитель: Петрович

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

Отвечает Bob Johnson

Доброе время суток, Петрович!
Обычно для передачи параметров используют либо регистры, либо стек. Если использовать регистры - то это может выглядеть так:
mov eax, param1
mov edx, param2
mov ecx, param2
call procedure
eax = result
если через стек, то для возврата результата один из параметров должен быть указателем на ячейку памяти, например:
push param3
push param2
push offset param1
call procedure
[param1] = result


Ответ отправлен: 06.12.2002, 22:33
Отправитель: Bob Johnson


Отвечает keleb-glin

Здравствуйте, Петрович!
Модно передавать процедуре параметры несколькими способами:
1. Через регистры.
2. Через переменные.
3. Через стек.
Первый способ очевиден и прост, однако регистров мало. А если параметров много?
Второй способ тоже хорош, а если процедура определена в другом модуле?
Лучше передавать параметры через стек. Только придётся поработать над: доставанием данных. Это можно сделать адересацией через регистр bp. Он по дефолту нацелен на сегмент ss, т.е ss:[bp] эквивалентно [bp]. Присваиваешь ему значение sp, и от него идёшь вниз стека и достаёшь параметры, ты ведь знаешь их порядок и размер.
Второй вопрос - кто ответственен за очистку стека от положенных параметров - процедура или вызивающая программа. Лучше это повесить на процедуру ( потом легче будет использовать её в других программах ). Поэтому процедура в конце достанет адрес возврата сверху, почистит стек pop'ами, положит возвращаемое значение и положит адрес обратно. Тогда после выхода из ф-кции в стеке будет возвращаемое значение.


Ответ отправлен: 05.12.2002, 20:51
Отправитель: keleb-glin


Отвечает Дмитрий

Доброе время суток, Петрович!
Просто :)
Пушишь (push) свои параметры, а в подпрограмме пушишь ответ, а в основной программе после этого pop ax - опа, и результат в ах :)

Ответ отправлен: 05.12.2002, 19:54
Отправитель: Дмитрий


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

Здравствуйте, Петрович!
Передать параметры программе можно через конандную строку, но
получить через них значение, возвращенное программой, невозможно.
Попробуй использовать для этого переменные окружения.


Ответ отправлен: 05.12.2002, 20:02
Отправитель: ASMодей


Отвечает St

Привет, Петрович!
Если я правильно понял вы
1) или хотите вернуть значение функции через один из тех трех параметров который вы ей передаете - тогда вы передаете в качестве этого параметра адрес переменной (скорее всего глобальной, хотя и не обязательно), и в функции записываете результат в переменную по этому адресу. Дополнительно можно через (E)AX вывести адрес этой переменной (просто для понятности).
2) или хотите вернуть значение функции через некую переменную - тогда вы можете использовать любую глобальную или же выделенную для этого область памяти, в функции записать результат в переменную и через (E)AX вывести адрес этой переменной.
St

Ответ отправлен: 05.12.2002, 19:46
Отправитель: St


 Вопрос № 2041

Доброго времени суток, уважаемые эксперты!
Я тут столкнулся с глупой и от того неожиданной ошибкой! Как можно использовать формат FileTime полученый GetFileTime. Там что-то всё очень странно, два двойных слова как-то содержут два слова, при этом оно всё в наносекундах с 1600-ого года, или что-то вроде того!? Как на самом деле он там представлен, и сколько наносекунд одна секунда!?
Спасибо



Вопрос отправлен: 05.12.2002, 18:52
Отправитель: megalama

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

Отвечает vitya

Приветствую Вас, megalama!
Не надо тебе мучаться с этой структурой. Если тебе нужно удобоваримое для прочтения время, то после этого вызови функцию FileTimeToSystemTime, которая превратит структуру FILETIME в структуру SYSTEMTIME, в которой все уже расписано, как у людей - день, час, год, месяц и т.д.

Ответ отправлен: 06.12.2002, 09:22
Отправитель: vitya


Отвечает Bob Johnson

Приветствую Вас, megalama!
Ну ты чувак... 1 наносекунда = 10^-9 секунд. = 1/1000 микросекунд = 1/1000000 миллисекунд.
В этой структуре на самом деле содержится одно 64-разрядное значение, которое соответствует числу временных отрезков, равных 100 нс, прошедших с 1 января 1601 года.
В общем, используй функцию FileTimeToSystemTime и она тебе все преобразует в нужный формат.


Ответ отправлен: 06.12.2002, 22:33
Отправитель: Bob Johnson


Отвечает Dark_Lord

Приветствую Вас, megalama!
Обычно эта процедура используется в паре с FileTimeToSystemTime, которая используется с двумя параметрами, offset на структуру systemtime и offset на filetime

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


Отвечает St

Привет, megalama!
Последний вопрос странный - у вас нет словаря или доступа к интернету?
деци (10-1), санти (10-2), милли (10-3), микро (10-6), нано (10-9), пико (10-12), фемто (10-15), атто (10-18)
100 наносекунд = 1x10-7 секунд
Есть такие функции CompareFileTime, DosDateTimeToFileTime, FileTimeToDosDateTime, FileTimeToLocalFileTime, FileTimeToSystemTime, GetFileTime, LocalFileTimeToFileTime, SetFileTime, SystemTimeToFileTime - посмотрите может они помогут вам сосчитать время.
St

Ответ отправлен: 05.12.2002, 19:55
Отправитель: St


Отвечает Gibbel

Доброе время суток, megalama!
Micrsoft рекомендует пользоваться функцией FileTimeToSystemTime() для преобразования к нормальному виду... А вообще, структура FileTime содержит четверное слово (64-бит), значащее количество 100-наносекундных интервалов считая от 1 Января 1601 года (формат UTC).


Ответ отправлен: 05.12.2002, 19:24
Отправитель: Gibbel


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

Здравствуйте, megalama!
Так и представлен, только там 100-наносекундные интервалы
отсчитываются. Наносекунда - это 1*10E-09 секунды. И вообще
не заморачивайся, а используй функцию FileTimeToSystemTime.


Ответ отправлен: 06.12.2002, 06:02
Отправитель: ASMодей



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (39)
C / C++ (28)
Perl (6)
Delphi (19)
Pascal (22)
Basic / VBA (9)
Java / JavaScript (11)
PHP (6)
MySQL / MSSQL (8)
Пользователю
Windows 95/98/Me (31)
Windows NT/2000/XP (21)
"Железо" (29)
Поиск информации (14)
Администратору
Windows NT/2000/XP (12)
Linux / Unix (16)
Юристу
Гражданское право (10)
Семейное право (3)
Трудовое право (5)
КоАП (3)

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




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

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


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

В избранное