Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 311
от 08.07.2002, 02:00
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 680 Отправлено ответов: 1834 Активность: 269.7 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
masquer Статус: Профессиональный Общий рейтинг: 160.84 [Подробней >>] |
Spike Статус: Доверительный Общий рейтинг: 120.47 [Подробней >>] |
Артём Шегеда Статус: Профессиональный Общий рейтинг: 123.47 URL: Пристанище неодинокого программиста [Подробней >>] |
kvINT Статус: Опытный Общий рейтинг: 113.29 [Подробней >>] |
Александр Статус: Опытный Общий рейтинг: 113.99 [Подробней >>] |
Vint by Shz Статус: Опытный Общий рейтинг: 113.09 [Подробней >>] |
freeseacher Статус: Опытный Общий рейтинг: 111.14 Телефон: 8(3832)366362 [Подробней >>] |
AnSim Статус: Опытный Общий рейтинг: 109.54 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 611. Люди! Как при помощи досовской функции 4Eh получить все подкаталоги?... (ответов: 1)
Вопрос № 612. Здрвствуйте эксперты!!! Все из нас знают, что лучший и быстрый способ научится писать программы, - э... (ответов: 1)
Вопрос № 613. Ув. Артём Шегеда, Извините за оффтопик, но Вам не кажется, что басня про лису и виноград-Эзопа, а не... (ответов: 1)
Вопрос № 614. Уважаемые программисты ! Я тут потихоньку-тихоньку изучаю программирование под Win. Делаю это на Tur... (ответов: 4)
Вопрос № 615. Доброго дня - ув. эксперты! Не работает функция FindFirstFile и иже с ними. Вот вам кусок кода. и н... (ответов: 1)
Вопрос № 617. Сам отвечаю на свой вопрос.ИМХО кому-то пригодиться. Вопрос: Вопрос по сайсу.Цель-заставить сабж гру... (ответов: 1)
Вопрос № 618. Добрый день (можно Бодрый день..., но это не про меня)! Как воспользоваться установленной задержкой ... (ответов: 2)
Вопрос № 619. Как сделать DLL-файл на ассемблере? А именно на TASM. Мне нужно следующее: что вводить в командную с... (ответов: 3)
Вопрос № 620. тут вот при обсуждении ОСки - автор проекта написал: >> И последнее это отказ от стека(ядро его >> и... (ответов: 4)
Вопрос № 621. Привет Spike Благодарю за задачи, но мы же не в детском саде. :) ... (ответов: 2)
Вопрос № 622. Здравствуйте господа эксперты! Скажите пожалуйста, как востановить затертые файлы на CD-RW, и как эт... (ответов: 3)
Вопрос № 623. Хэлоу, эксперты! Нужна ваша помощь. Объясните начинающему асм-кодеру, самыми простыми словами, что т... (ответов: 3)
Вопросов: 12, ответов: 26
Вопрос № 611 |
Люди! Как при помощи досовской функции 4Eh получить все подкаталоги?
Вопрос отправлен: 02.07.2002, 21:31
Отправитель: Nekto
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Добрый день, Nekto!
установи 4 бит атрибутов в единицу
mov cx, 10h; 00010000b
Ответ отправлен: 02.07.2002, 22:35
Отправитель: masquer
Вопрос № 612 |
Здрвствуйте эксперты!!!
Все из нас знают, что лучший и быстрый способ научится писать программы, - это практика.
Знает ли кто-нить ресурс в нете, где можно скачать упражнения, задачи по программированию на ассемблере.
Заранее благодарен.
Вопрос отправлен: 03.07.2002, 03:23
Отправитель: Сергей (cppdummy@narod.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Spike
Здравствуйте, Сергей!
Вот те задачи:
1. Ввести с клавиатуры два числа, сложить и вывести результат.
2. Ввести с клавиатуры имя текстового файла, считать его и вывести на экран, если он слишком большой, сделать вывод постранично.
3. В графическом видеорежиме вывести крестик, который управляется с клавиатуры, еще лучше мышью, при нажатии например клавиши 1 крестик оставляет след, клавиша 2 - просто перемещение.
Spike.
Ответ отправлен: 03.07.2002, 15:11
Отправитель: Spike
Вопрос № 613 |
Ув. Артём Шегеда,
Извините за оффтопик, но Вам не кажется, что басня про лису и виноград-Эзопа, а не Крылова? Я почти уверен...
Вопрос отправлен: 03.07.2002, 05:18
Отправитель: Шура
[Следующий вопрос >>] [Список вопросов]
Отвечает Артём Шегеда
Приветствую Вас, Шура!
Вы знаете, сначала хотел возмутиться, но потом пытливый ум решил проверить: так ли это? Запросил на Rambler - и получил подтверждение: идея басни про лису и виноград впервые пришла на ум именно Эзопу. Не знаю, передрал ли Крылов эту басню, перевёл ли её красиво с латыни или просто сам додумался, но нам, глупым никто Эзопов текст не показывал :(. Поэтому сослался на русского баснописца.
Во, блин оффтопик...
Ответ отправлен: 04.07.2002, 17:09
Отправитель: Артём Шегеда
Вопрос № 614 |
Уважаемые программисты !
Я тут потихоньку-тихоньку изучаю программирование под Win. Делаю это на Turbo Ass. Помогите научиться создавать и подключать рессурсу к проекту ( например: создать и скомпилить диалог, обработку введенных значений. Какие для этого нужны проги и КЛЮЧИ ДЛЯ КОМПИЛЯТОРА ? )
Буду благодарен за предоаставленные исходники для изучения.
Илья
mis421@chat.ru
Вопрос отправлен: 03.07.2002, 08:54
Отправитель: Ilya
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Приветствую Вас, Ilya!
Люди, я уже охрип кричать - скачай пакет МАСМ32, там есть все ответы на вопросы начинающего. По твоему вопросу - создаешь ресурс, где - не важно, хоть в визуал студии, хоть вручную, есть программка rc.exe - Resource compile, он создает res-файл, потом "cvtres /machine:ix86 rsrc.res" - создается obj, потом "Link /SUBSYSTEM:WINDOWS %1.obj rsrc.obj". Усе!
Ответ отправлен: 03.07.2002, 09:16
Отправитель: masquer
Отвечает Spike
Добрый день, Ilya!
На мыло кинул 233 кило инфы по этому поводу, жди и оно придет.
Spike.
Ответ отправлен: 03.07.2002, 15:11
Отправитель: Spike
Отвечает kvINT
Приветствую Вас, Ilya!
Меню, диалоги пишутся в текстовом редакторе, сохраняются с расширением .rc. Затем программой brcc32.exe получается файл ресурсов с расширением .res.
Вот пример .bat-файла, к-рый компилирует, линкует и выводит инф-цию о результатах в текстовый файл:
c: asm5inrcc32.exe %1
c: asm5in link32 /v %1,%1,,c: asm5libimport32,,%1 >c:kbaq1.txt
Ответ отправлен: 03.07.2002, 18:35
Отправитель: kvINT
Отвечает Александр
Приветствую Вас, Ilya!
Ключи нужны не для компилятора! А для линковщика. Вообще вопрос с подключением ресурсов выглядит так. Сначала необходимо создать файл(ы) ресурсов. Потом откомпилировать их с помощью RC(Resource Compiler, у дядьки Borland'а - BRC). В результате из файла формата RC получаем файл формата RES. Потом прилинковываем всё это, с помощью того же BRC к уже готовому EXE-файлу(программу должна быть собрана с использованием соответствующего .DEF-файла). Вот и всё! Ещё вопросы?
Ответ отправлен: 05.07.2002, 15:56
Отправитель: Александр
Вопрос № 615 |
Доброго дня - ув. эксперты! Не работает функция FindFirstFile и иже с ними.
Вот вам кусок кода. и не работает. Где я не прав?
Sorry за С
Приложение:
Вопрос отправлен: 03.07.2002, 10:35
Отправитель: Dима (ldu@ua.fm)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Доброе время суток, Dима!
FindFirstFile все правильно работает.
Вместо cook=FindFirstFile("c:windowsCookies*.*",cokdat);
пиши
SetCurrentDirectory("c:windowsCookies");
cook=FindFirstFile("*.*",cokdat);
Ответ отправлен: 03.07.2002, 11:16
Отправитель: masquer
Вопрос № 617 |
Сам отвечаю на свой вопрос.ИМХО кому-то пригодиться.
Вопрос:
Вопрос по сайсу.Цель-заставить сабж грузить КОД И ИСХОДНИК.
Под дос-все нормально(действовал согласно мануалке айса и TASM-а 2.0).Под WIN32(опять же согласно мануалке в masm32):
1.Ассемблирую: ml /c /coff /Zi 1.asm -нормально!
2.Линкую: link.exe /SUBSYSTEM:WINDOWS /DEBUG /DEBUGTYPE:CV 1.obj -OK!
ЛИБО :link.exe /SUBSYSTEM:WINDOWS /DEBUG /DEBUGTYPE:CV /PDB:NONE - Выбрасывает ошибку CVPACK error
3.Загружаю SYMBOL LOADER -ом - загружается(C:masm321.exe opened successfully).
4.Жму TRANSLATE-выскакивает ошибка:Error: Can't find Visual C++ MSPDBXX.DLL in path. Add the DevStudiosharedidein directory to path.
..........................................................
ВОПРОС:Как бороться?!!!!
ОТВЕТ: в стандартном пакете MASM32 не было утилиты Cvpack.exe .Использование ее из MASM61 результатов не давало ИМХО из-за несовместимости версий МАСМов.
ВЫХОД:взял файлы Cvpack.exe,Mspdb60.dll из Microsoft Visual C++ 6.0, переписал в masm32Bin и все заработало!!!
С уважением Aice. (nashostrov.mailru.com)
Вопрос отправлен: 03.07.2002, 12:49
Отправитель: Alice (nashostrov@mailru.com)
[Следующий вопрос >>] [Список вопросов]
Отвечает Vint by Shz
Приветствую Вас, Alice!
Всё, ясно!
Ответ отправлен: 04.07.2002, 20:54
Отправитель: Vint by Shz
Вопрос № 618 |
Добрый день (можно Бодрый день..., но это не про меня)!
Как воспользоваться установленной задержкой используя:
int 15h ah = 86h?
В своей игре "дикий червяк" хочу сделать n-е количество задержек...!
Вопрос отправлен: 03.07.2002, 13:28
Отправитель: kuper
[Следующий вопрос >>] [Список вопросов]
Отвечает Vint by Shz
Здравствуйте, kuper!
Вот описание етой функции:
"86H Ждать.Циклит с разрешением прерывания до истечения интервала времени.
Вход: СХ,DX -сколько секунд ждать до возврата к пользователю."
Вот отседова и делай выводы...
Ответ отправлен: 04.07.2002, 20:54
Отправитель: Vint by Shz
Отвечает Spike
Приветствую Вас, kuper!
Используй прерывание 1Ch. BIOS получает управление от системного таймера, делает нужную задержку и вызывает прерывание 1Ch. Только не забудь сохранять все используемые регистры и выходить IRET'ом.
Spike.
Ответ отправлен: 03.07.2002, 17:12
Отправитель: Spike
Вопрос № 619 |
Как сделать DLL-файл на ассемблере? А именно на TASM. Мне нужно следующее: что вводить в командную строку, какие файлы должны быть и т.п.
Вопрос отправлен: 03.07.2002, 16:12
Отправитель: Игорь
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Добрый день, Игорь!
Так же, как и везде, создал def-файл, в нем экспорт прописал, при линковке ключ указывать Link /DLL /DEF:mydll.def .... В остальном все как и exe.
Ответ отправлен: 04.07.2002, 10:51
Отправитель: masquer
Отвечает Spike
Доброе время суток, Игорь!
Для создания DLL-файла нужно сделать следующее:
1. При компиляции и компоновке использовать ключи:
TAsm.exe /m /x /ml name.asm
TLink.exe /Tpd /c name.obj,,,,name.def
2. Создать файл name.def, в который надо включить имена функций:
EXPORTS FunctName1C FunctName1 FunctName2C и т.д.
3. В основном тексте программы сделать общими имена функций:
.386
.model flat
public FunctName1C
public FunctName1
public FunctName2C
...
4. В сегменте кода добавить следующие процедуры:
.code
;Процедура DLLEntry получает три параметра - идентификатор, причину вызова и зарезервированный параметр.
_start@12:
mov al,1 ;Надо вернуть не ноль (TRUE)
ret 12 ;Снять со стека параметры и выйти
;Дальше идут свои процедуры:
;Функция 1 для вызова из C. Т.к. C передает параметры через стек нужно делать отдельную точку входа.
FunctName1C proc
pop ecx ;Сохранить адрес возврата (он хранится первым при вызове функции)
... ;Здесь надо снять все параметры, которые передавались функции (pop eax, pop ebx, ...)
push ecx ;Адрес возврата обратно в стек (нам же нужно будет выйти)
... ;Здесь находится основной текст функции
ret ;Выход
FunctName1C endp
;Функция 1 для вызова из ассемблера
FunctName1 proc
... ;Здесь находится основной текст функции
ret ;Выход
FunctName1 endp
;Для остальных функций специфика та же
Если не предпологается использование функции из C, то соответствующую процедуру можно удалить. Вообще главное знать, как передаются параметры в функцию и следить за этим. Если подумать, то можно сделать один обработчик для функций C и ASM, преобразовав параметры к общему виду.
Я это все не проверял, так что если возникнут проблемы, мыль на spgroup@i.com.ua.
Spike.
Ответ отправлен: 04.07.2002, 12:08
Отправитель: Spike
Отвечает Александр
Добрый день, Игорь!
открываем книгу Зубкова С.В. "Ассемблер - язык неограниченных возможностей" или руководсто по TASM и находим следующее.
tasm /m /x /ml dllsrc.asm
tlink32 -Tpd -c dllsrc.obj,,,,dllsrc.def
Где dllsrc.def файл с именами экспортируемых функций, т.е. он должен выглядеть так:
EXPORTS func1 func2 func3
В .ASM файле эти функции должны быть объявлены как public. И вообще скелетный файл DLL для TASM в приложении.
Приложение:
Ответ отправлен: 05.07.2002, 15:56
Отправитель: Александр
Вопрос № 620 |
тут вот при обсуждении ОСки - автор проекта написал:
>> И последнее это отказ от стека(ядро его
>> использует для снятия установки задачи - процессор так
>> сделан(тоесть один стек в системе для всех и то не большой на 3
>> регистра - больше не надо для переключения модулей))стековые
>> регистры не используются на уровне модуля(отсюда еще меньще
>> контекст - еше быстее переключение(реакция системы выше)).
>> Потому что стек это - геморой, все пихают, у каждого кольца свой стек,
>> никто не контролирует, нереполнение стека - это бичь всех систем
>> кто его использует и с этим ника не побороться.
Я с этим не согласен.
Уважаемые эксперты - проясните плиз - кто из нас ламер ???
И вообще - кто нить видит реальным писать прогу без использования процедур (CALL NNNN) и стека вообще ???
PS товарищи - а куд знаменитый WizardX делся ??? - привет ему огромный :-)
Вопрос отправлен: 03.07.2002, 16:50
Отправитель: Scolitex
[Следующий вопрос >>] [Список вопросов]
Отвечает Vint by Shz
Здравствуйте, Scolitex!
Нет,я считаю ,что написать прогу без процедур написать можно.Но если ОНА ОЧЕНЬ МАЛЕНЬКАЯ!!И если вообще выбросить стек, то какая на фиг вообще оптЯмизация может быть?
Ответ отправлен: 04.07.2002, 20:54
Отправитель: Vint by Shz
Отвечает Spike
Здравствуйте, Scolitex!
Во-первых не без стека вообще, останется системная работа со стеком (переключение задач, вызов исключений и т.д.) и обойти это нельзя.
Во-вторых работа без CALL nnnn элементарно делается вот так:
mov ax, offset RetFromFunct
jmp near CallFunct
RetFromFunct:
...
Функция:
CallFunct:
...
jmp ax
Так что ламеры отдыхают ...
Spike.
Ответ отправлен: 03.07.2002, 21:52
Отправитель: Spike
Отвечает masquer
Добрый день, Scolitex!
В принципе можно и без стека работать, точто так же как можно и на руках ходить. И переполнение стека, имхо, проблема не операционной системы, а программиста, пишущего приложение. Вообще мне интересно будет посмотреть на такую систему :)
Ответ отправлен: 04.07.2002, 10:43
Отправитель: masquer
Отвечает kvINT
Добрый день, Scolitex!
ИМХО, написать можно. Но это будет полный изврат, и код разбухнет до неприличного размера.
Ответ отправлен: 04.07.2002, 12:18
Отправитель: kvINT
Вопрос № 621 |
Привет Spike
Благодарю за задачи, но мы же не в детском саде. :)
Вопрос отправлен: 03.07.2002, 20:32
Отправитель: Сергей (cppdummy@narod.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Vint by Shz
НЕ Доброе время суток, Сергей!
И как?Может хватит загаживать рассылку?Отправляй свой вопрос тока Spike!
Ответ отправлен: 04.07.2002, 20:54
Отправитель: Vint by Shz
Отвечает Spike
Доброе время суток, Сергей!
Тогда напиши свой уровень или опиши, что ты умеешь.
Spike.
Ответ отправлен: 03.07.2002, 23:35
Отправитель: Spike
Вопрос № 622 |
Здравствуйте господа эксперты!
Скажите пожалуйста, как востановить затертые файлы на CD-RW, и как этот CD прочитать по секторам и дорожкам.
Вопрос отправлен: 04.07.2002, 00:57
Отправитель: Сергей
[Следующий вопрос >>] [Список вопросов]
Отвечает freeseacher
Доброе время суток, Сергей!
если при помощи _быстрого стирания_ стиралось то именно читать по секторами дорожкам, ведь там стирается toc. как? ищи проги на эту тему что-то вроде directCD
при помощи _полного_ никак!
Ответ отправлен: 04.07.2002, 15:28
Отправитель: freeseacher
Отвечает masquer
Доброе время суток, Сергей!
Смотри в DDK на все, что с ASPI связано, это так, в качестве напрвления, сам не пробовал.
Ответ отправлен: 04.07.2002, 10:56
Отправитель: masquer
Отвечает Александр
Добрый день, Сергей!
ЭЭЭ... Так они же затёрты. В лучшем для тебя случае, быстром стирании затирается только оглавление диска, поэтому без известного оглавления информацию практически нельзя восстановить. Хотя конечно если использовать нестандартные аппаратные средства, которые могут различать что тут было записано 5 сессий назад, но это что-то похожее на электролнный микроскоп, т.е. очень дорого. Так с помощью LongRead и в ДОС тоже можно, главное чтобы драйвер CD был.
Ответ отправлен: 05.07.2002, 15:56
Отправитель: Александр
Вопрос № 623 |
Хэлоу, эксперты!
Нужна ваша помощь. Объясните начинающему асм-кодеру, самыми простыми словами,
что такое обработка прерываний, желательно с самым простым примером обработки их же.
С уважением, Святой Дух.
Вопрос отправлен: 04.07.2002, 01:58
Отправитель: Святой Дух (d_den@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает AnSim
Доброе время суток, Святой Дух!
Ну и имечко у тебя :)
Прерывания - это (под)программы, записанные внутри компа (ты же просил попроще :)), позволяющие компу выполнить определнные действия. на пальцах - нажимаешь на клавишу, прерывается режим ожидания или еще что (зависит от приоритетов - это ты в умных книжках прочтешь) и выполняется обработка этого прерывания (твоего нажатия), а затем комп возвращается к выполнению отложенной задачи
Ответ отправлен: 04.07.2002, 10:55
Отправитель: AnSim
Отвечает masquer
Добрый день, Святой Дух!
Лучше все-таки книгу прочитать, чем в двух словах... Деляться на аппаратные и программные - аппаратные: клавиатура, мышка, порты, программные: определяемые ОС (21h, например). Обработка соответственно - это ракция твоей программы на возникновение этих прерываний.
Ответ отправлен: 04.07.2002, 10:59
Отправитель: masquer
Отвечает Spike
Доброе время суток, Святой Дух!
Прерывания могут быть аппарытными и програмными. Аппаратные вызываются таймером, клавиатурой, мышью, винтом и т.д., а програмные вызовом прерывания, например INT 21h, INT 10h и т.д.
Для того, чтобы перехватить прерывание нужно узнать текущий вектор прерывния, например попробуем поработать с таймером, прерывание таймера INT 08h, поэтому вызываем функцию DOS:
mov ah, 35h ;Функция DOS - получить вектор прерывания
mov al, 08h ;Номер вектора 08h
int 21h ;Вызов DOS
Первые две строки можно заменить одной: mov ax, 3508h.
Теперь в ES:BX будет текущий вектор, который нужно сохранить:
mov word ptr OldInt08, bx
mov word ptr OldInt08[2], es
В блоке данных сделать переменную:
OldInt08 dd ?
Дальше нужно поставить свой вектор, для этого в DS:DX нужно занести адрес нашего обработчика:
mov ax, 2508h ;Функция DOS - установить вектор прерывания INT 08h
mov dx, offset NewInt08 ;Адрес нового (нашего) обработчика прерывания
int 21h ;Вызов DOS
Теперь сам обработчик, перед тем как что-нибудь сделать нужно сохранить все используемые регистры:
NewInt08 proc
push ax ;Сохранить используемые регистры
push ds
mov ax,cs ;Настроить сегмент данных нашего обработчика
mov ds,ax
mov ax, Counter ;Берем значение счетчика
inc ax ;Увеличиваем значение
mov Counter, ax ;Сохранить новое значение
pop ds ;Восстановить регистры
pop ax
iret ;Выйти из прерывания, если нужно передать управление дальше по цепочке обработчиков, вместо IRET надо использовать JMP DWORD PTR OldInt08
NewInt08 endp
Пока все. Если чего непонятно, мыль на spgroup@i.com.ua
Spike.
Ответ отправлен: 04.07.2002, 12:08
Отправитель: Spike
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (52) C / C++ (31) Perl (10) Delphi (15) Pascal (28) Basic / VBA (11) Java / JavaScript (6) PHP (6) MySQL / MSSQL (9) |
Пользователю Windows 95/98/Me (47) Windows NT/2000/XP (34) "Железо" (37) Поиск информации (19) |
Администратору Windows NT/2000/XP (18) Linux / Unix (14) |
Юристу Гражданское право (6) Семейное право (3) Трудовое право (5) КоАП (2) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||