Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 684
от 08.01.2004, 04:40
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 4763 Отправлено ответов: 13482 Активность: 283.0 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
ASMодей Статус: Профессиональный Общий рейтинг: 112.43 [Подробней >>] |
fC Статус: Профессиональный Общий рейтинг: 145.33 URL: Тезка :) [Подробней >>] |
SedHg Статус: Доверительный Общий рейтинг: 116.12 [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 110.37 [Подробней >>] |
Artemy Статус: Опытный Общий рейтинг: 118.63 Телефон: 8 905 549 38 66 [Подробней >>] |
Евгений Иванов Статус: Профессиональный Общий рейтинг: 136.92 URL: Super Assembler Software Телефон: Пчёлка +7 905 6601206 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 146.84 URL: Программирование [Подробней >>] |
never_again Статус: Опытный Общий рейтинг: 127.87 [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 106.11 URL: Savage Metal Club - жизнь в стиле рок-н-ролл Телефон: +7 901 710 3146 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 116.52 [Подробней >>] |
St Статус: Профессиональный Общий рейтинг: 105.62 [Подробней >>] |
Hangatyr Статус: Профессиональный Общий рейтинг: 108.87 [Подробней >>] |
_vt Статус: Профессиональный Общий рейтинг: 118.2 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 4729. Здраствуйте. FASM Как в загрузчике сделать русский шрифт. Как запускать из загрузчика другое приложе... (ответов: 1)
Вопрос № 4730. Привет! Кто-нибудь знает, где можно скачать Soft-ICE для Windows XP и все необходимые патчи к нему? ... (ответов: 2)
Вопрос № 4732. Здравствуйте, уважаемые эксперты! С наступившим Вас! Я покопался в базе, но не нашел подробного алго... (ответов: 4)
Вопрос № 4736. Здравствуйте уважаемые эксперты. Если не затруднительно, помогите написать маленькую программку на а... (ответов: 2)
Вопрос № 4737. Здравствуйте. Подскажите пожалуйста, как можно определить, где начинется и где заканчивается свободн... (ответов: 2)
Вопрос № 4738. Здравствуйте уважаемые эксперты. Написал маленькую консольную програмку, которая должна проигрывать ... (ответов: 2)
Вопрос № 4739. Помогите разобраться со структурами в языке ассемблере. как обращаться к полям объявленной структуры... (ответов: 4)
Вопрос № 4740. 20 минут назад обратился с вопросом по структурам. За ответ спасибо но я внем ничего не понял. Я пол... (ответов: 4)
Вопрос № 4741. Здравствуйте. Как сделать, чтоб после выведения на экран текстовой строки, вторая выводимая строка в... (ответов: 7)
Вопросов: 9, ответов: 28
Вопрос № 4729 |
Здраствуйте.
FASM
Как в загрузчике сделать русский шрифт.
Как запускать из загрузчика другое приложение (com)
Как вернуть упровление ОС при загрузке.
Вопрос отправлен: 01.01.2004, 23:07
Отправитель: Pawel
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Здравствуйте, Pawel!
Ручками, все ручками.
1. Находишь описание знакогенератора для стандартного VGA, смотришь как там организована работа со шрифтом и меняешь его на свой русифицированный.
2. Насчет запуска другого приложения все немного сложнее: для начала это приложение надо прочитать с диска, а для этого надо разбираться в файловой системе. Далее, если это COM-файл, то просто передаешь ему управление командой CALL (не забудь про смещение в 100h байт). Для запуска EXE-файла еще придется пройтись по нему и изменить все адреса сегментов.
3. Какой ОС ты собрался вернуть управление, если она еще не загружена? Загружай ее ядро и запускай его (см. п.2).
Ответ отправлен: 05.01.2004, 08:17
Отправитель: ASMодей
Вопрос № 4730 |
Привет! Кто-нибудь знает, где можно скачать Soft-ICE для Windows XP и
все необходимые патчи к нему? Я из многих мест скачивал и ничего
стабильно не работало, доводило даже до синего экрана. Спасибо!
Вопрос отправлен: 02.01.2004, 00:30
Отправитель: Mafia32
[Следующий вопрос >>] [Список вопросов]
Отвечает fC
Доброе время суток, Mafia32!
попробуй этот
http://reversing.kulichki.net/files/debug/sinstallnt.exe
патчи тут
http://reversing.kulichki.net/files/debug/debug.htm
Удачи!
P.S.
Че там с организацией? :)
Ответ отправлен: 02.01.2004, 09:47
Отправитель: fC
Отвечает SedHg
hi, Mafia32!
А смотрел ли ты тут - reversing.kulichki.net
Ответ отправлен: 05.01.2004, 19:14
Отправитель: SedHg
Вопрос № 4732 |
Здравствуйте, уважаемые эксперты!
С наступившим Вас!
Я покопался в базе, но не нашел подробного алгоритма вывода вещественного числа.
Проблема такая: есть вещественное число, скажем в ST,
надо преобразовать его в ASCII строку (в формате с E+xxx на конце). Подскажите, плз, как это сделать, только поподробнее.
Спасибо.
Вопрос отправлен: 02.01.2004, 09:24
Отправитель: CoolerTheGreat
[Следующий вопрос >>] [Список вопросов]
Отвечает Dark_Lord
Добрый день, CoolerTheGreat!
команда FPU fxtract помещает мантиссу st(0) в st(0), а экспоненту в st(1), нантисса - это число, экспонента - это степень 10, на которую число должно быть умножено! Эстественно всё это в HEX.
Ответ отправлен: 02.01.2004, 13:40
Отправитель: Dark_Lord
Отвечает Artemy
Добрый день, CoolerTheGreat!
Посмотри тут...
http://yas-egor.narod.ru/predchisinf.htm
... и на основе этого пиши алгоритм.
Ответ отправлен: 05.01.2004, 12:22
Отправитель: Artemy
Отвечает Евгений Иванов
Добрый день, CoolerTheGreat!
Смотри исходники HLA.
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 03.01.2004, 15:26
Отправитель: Евгений Иванов
Отвечает Bob Johnson
Доброе время суток, CoolerTheGreat!
Этого вроде никто тут и не делал :(
Если преобразовать с помощью фпу - то вкратце: разделяешь число на порядок и мантиссу, мантиссу выводишь как есть (в фпу есть специальный формат, т.е. он сам преобразует число в полу-строку), а порядок - после Е.
Посмотри описание команд сопроцессора.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 06.01.2004, 02:30
Отправитель: Bob Johnson
Вопрос № 4736 |
Здравствуйте уважаемые эксперты. Если не затруднительно, помогите написать маленькую программку на ассемблере, которая открывает файл, имя которого вводится с клавиатуры, выводит на экран все 256 символов и напротив каждого процентное содержание данного символа в файле.
Зачёты подошли к концу, голову уже сломал как сделать эту лабу :((. Заранее спасибо.
Вопрос отправлен: 02.01.2004, 22:21
Отправитель: Василий
[Следующий вопрос >>] [Список вопросов]
Отвечает never_again
Приветствую Вас, Василий!
Что значит "процентное содержание данного символа в файле"????
всё же остальное (вернее предыдущее) сделать очень просто.
Ответ отправлен: 03.01.2004, 13:11
Отправитель: never_again
Отвечает Gibbel
Приветствую Вас, Василий!
Все очень легко - создаешь в памяти массив из 257 элементов (тип элементов - байт, слово, двойное слово, и т.д, - зависит от общего количества символов. Соответственно, последовательно читаешь все символы из файла, и, в соответствие со значением каждого символа увеличиваешь связанный с ним один из первых 256 элементов (счетчиков) на единицу. 257й элемент увеличиваешь на единицу после чтения каждого символа независимо от его значения. В итоге мы получим массив из 256 значений, содержащий количество каждого из символов в файле и общее количество символов в файле. Пользуясь нехитрыми математическими приемами, преподаваемыми во втором классе школы, вычисляем процентное содержание символов в файле, что и выводим в последствии на экран.
Ответ отправлен: 04.01.2004, 01:43
Отправитель: Gibbel
Вопрос № 4737 |
Здравствуйте. Подскажите пожалуйста, как можно определить, где начинется и где заканчивается свободная область памяти после загрузки ОС(DOS), чтобы в дальнейшем я мог туда что-нибудь записать, задавая адрес явно. Заранее благодарю.
Вопрос отправлен: 03.01.2004, 00:24
Отправитель: Vad
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Доброе время суток, Vad!
Это неизвестно.
Используй:
Function 48h (72) Allocate Memory
Allocates a specified number of memory paragraphs.
On entry: AH 48h
BX Number of memory paragraphs to be allocated
Returns: AX Segment address of allocated memory
Error code, if CF is set
BX Size of largest available block (CF set)
Error codes: 7 Memory control blocks destroyed
8 Insufficient memory
Call Function 59h for extended error code information
(DOS 3.0 and above).
--------------------------------------------------------------------------
Function 48h dynamically allocates memory, in multiples of 16 bytes
(one paragraph). The amount of memory to be allocated, in paragraphs,
is specified in BX. If the function is successful, AX:0000 points to
the allocated memory block. (AX holds the segment address; the offset
is always 0000).
Notes: By setting BX=FFFFh before calling, this function
can be used to find the amount of available memory,
which will be returned in BX. (The call will return
an error, which can be ignored, since DOS cannot
allocate more than 640k of memory.)
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 03.01.2004, 16:16
Отправитель: Евгений Иванов
Отвечает Ayl
Доброе время суток, Vad!
Если тебе нужна просто область памяти в момент работы твоей программы, то ты ее можешь выделить с помощью вызова функции 48h прерывания 21h. Для программы типа .COM перед этим нужно освободить память за твоим программным сегментом.
Если же ты хочешь отхватить у DOS кусочек памяти, то тут есть несколько вариантов:
1. Пишешь резидентную программу, которая в момент установки будет выделять кусок памяти и больше не выполнять никаких действий (резидентная, потому что при выходе из нерезидентной программы вся выделенная ею память освобождается).
2. Пишешь нерезидентную программу, которая также выделяет кусок памяти и затем изменяет MCB для выделенного куска памяти так, чтобы он не принадлежал твоей программе.
3. Проходишь по цепочке MCB-блоков и находишь последний блок, помеченный как свободный. Выкусываешь из него кусок и изменяешь MCB.
4. Пишешь boot-программу, которая загружается до ДОС, "откусывает" нужную память и после этого загружает ДОС.
Ответ отправлен: 05.01.2004, 17:50
Отправитель: Ayl
Вопрос № 4738 |
Здравствуйте уважаемые эксперты. Написал маленькую консольную програмку, которая должна проигрывать WAV файл с командной строки. Вопрос в следующем, как узнать когда WAV файл полностью проиграится? В моей программе раздается только щелчок, если поставить бесконечный цикл перед ExitProcess то все нормально, за исключением выхода ;)). Помогите
Приложение:
Вопрос отправлен: 03.01.2004, 09:52
Отправитель: Виталий (ZAVitaliY@yandex.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Добрый день, Виталий!
SND_ASYNC
The sound is played asynchronously and PlaySound returns immediately after beginning the sound. To terminate an asynchronously played waveform sound, call PlaySound with pszSound set to NULL.
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 03.01.2004, 16:23
Отправитель: Евгений Иванов
Отвечает Bob Johnson
Доброе время суток, Виталий!
Убери флаг SND_ASYNC, тогда функция не вернет управление до тех пор, пока файл не будет проигран полностью. Как узнать, закончилось ли воспроизведение асинхронного звука в этой функции я не знаю (это может быть вообще невозможно). Для этого можешь использовать wave-функции или DirectSound.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 06.01.2004, 02:31
Отправитель: Bob Johnson
Вопрос № 4739 |
Помогите разобраться со структурами в языке ассемблере.
как обращаться к полям объявленной структуры? Команды типа mov structura.pole,dx не работают!!
В книгах информации очень мало. очень прошу помогите. мой email: ivchencov@mail.ru
Заранее спасибо.
Вопрос отправлен: 04.01.2004, 00:12
Отправитель: Влад (ivchencov@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает never_again
Доброе время суток, Влад!
>>Команды типа mov structura.pole,dx не работают!!
простите, конечно, но то, что вы говорите - чушь несусветная!!!
если у вас правильно нписана структура и совпадают типы данных (mov word,word или mov byte,byte и не иначе), то всё прекрасно работает (физически не может не работать
Ответ отправлен: 04.01.2004, 11:21
Отправитель: never_again
Отвечает St
Привет, Влад!
Сначала вы (или кто-то до вас) в .inc файле объявляет структуру. к примеру:
UINT EQU
RECT struc
rcLeft UINT ?
rcTop UINT ?
rcRight UINT ?
rcBottom UINT ?
RECT ends
Затем вы в своем asm файле инициализируете эту структуру под неким именем в сегменте данных
MY_RECT RECT <0>
а затем в коде обращаетесь к любому полю, следя за типами данных
mov eax,MY_RECT.rcLeft
mov MY_RECT.rcBottom,25
St
Ответ отправлен: 05.01.2004, 14:25
Отправитель: St
Отвечает Евгений Иванов
Приветствую Вас, Влад!
t equ type
;------------ свойства буфера для обработки звукового файла
struc SoundBufInfo
mem dd ? ;буфер для обработки звукового файла
len dd ? ;длина всего буфера в байтах
position dd ? ;текущее смещение в буфере
present dd ? ;действительные данные в буфере
ends SoundBufInfo
Call GlobalAlloc, GPTR, size SoundBufInfo
or eax, eax
jz @@exitErr
mov [@@bi], eax
xchg edi, eax
;--
mov eax, [@@LenBuf]
mov [(t SoundBufInfo edi).len], eax
mov eax, [(t SoundBufInfo ebx).mem]
- = = = = -
t - это оператор TYPE
Бывай!
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 04.01.2004, 00:49
Отправитель: Евгений Иванов
Отвечает Ayl
Доброе время суток, Влад!
structura struc
pole1 db ?
pole2 dw ?
structura ends
...
.Data
s structura <>
...
lea bx, s
mov [bx.pole2], dx
...
Ответ отправлен: 05.01.2004, 17:54
Отправитель: Ayl
Вопрос № 4740 |
20 минут назад обратился с вопросом по структурам. За ответ спасибо но я внем ничего не понял. Я полный ламер в асме (пока). постараюсь сформулировать мой вопрос по другому.
имеем структуру
stud struc
fam db 20
im db 30
stud ends
Объявили переменнную
s1: stud <>;
как присвоить например s1.fam какоето значение (например строку 'hhh')?
В си это было просто
s1.fam:='hhh';
Я уже перепробовал все
Мне очень нужна ваша помощь!(Спросить не у кого а ехать на консультацию в институт далеко, УЧУСЬ ЗАОЧНО)
ЭЭто нужно для простейшей програмы записи структур в файл(курсовик), грубо говоря базы данных
заранее спасибо
Вопрос отправлен: 04.01.2004, 01:20
Отправитель: Влад (ivchencov@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Hangatyr
Здравствуйте, Влад!
Во-первых, место под строку в структуре надо выделить так:
fam db 20 dup (0), а у вас получается, что выделен один байт ;)
Чтобы поместить в fam строку нужно сделать так:
lea edi, sl.fam
lea esi, some_string
mov ecx, sizeof some_string
rep movsb
или так:
lea edi, some_string
lea eax, sl
mov ecx, sizeof some_string
assume eax:ptr stud
lea esi, [eax].fam
rep movsb
assume eax:nothing
P.S. Если пишете под дос, то eax, edi, esi замените на ax, di, si
Ответ отправлен: 04.01.2004, 11:25
Отправитель: Hangatyr
Отвечает never_again
Добрый день, Влад!
поверте не всё! :)
вам нужно для начала выделить место под строку. Ведь просто так и в Си не получится. Нужно в Си делать так "char fam[20],im[30];" верно? В ассемблере абсолютно тоже самое!!! (Хм, интересно почему? :) )
ваша структура должна имете вид:
stud struc
fam db 20 dup (?) ; dup - от слова duplicate (кажется)
im db 30 dup(?)
stud ends
теперь прекрасно сработает такой метод задания переменных:
s1 stud <'Пупкин','Василий'>
это если вы хотите, чтобы в структуре была именно строка, ведь можно ещё и указатель на строку использовать...
Ответ отправлен: 04.01.2004, 11:04
Отправитель: never_again
Отвечает Евгений Иванов
Приветствую Вас, Влад!
:)
я хохочу до сих пор
спасибо за понятие настроения!
выздровлю точно! (болею сейчас)
во первых, надо писать так:
stud struc
fam db 20 dup(?)
im db 30 dup(?)
stud ends
во вторых:
что Это?!
> s1: stud <>;
надо так в Ассемблере:
s1 stud <>
в терьих, чтобы записать туда что-либо, делай так:
fam0 db "Сидоров",0
im0 db "Петя",0
lea edi,[(type stud s1).fam]
mov esi,offset fam0
call copysitodi
lea edi,[(type stud s1).im]
mov esi,offset im0
call copysitodi
ну и так далее
Бывай!
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 04.01.2004, 12:14
Отправитель: Евгений Иванов
Отвечает Ayl
Здравствуйте, Влад!
См. приложение.
Приложение:
Ответ отправлен: 05.01.2004, 18:02
Отправитель: Ayl
Вопрос № 4741 |
Здравствуйте.
Как сделать, чтоб после выведения на экран текстовой строки, вторая выводимая строка выводилась бы уже с другой строки? Я догадываюсь, что скорее всего вместо $ должно стоять что-то другое... или нет?
Вопрос отправлен: 04.01.2004, 04:31
Отправитель: Torn (torn_bk_ru@bk.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Доброе время суток, Torn!
13,10
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 04.01.2004, 22:34
Отправитель: Евгений Иванов
Отвечает never_again
Доброе время суток, Torn!
ну не совсем так. ведь интеррапт должен знать когда остановится. просто перед $ нужно вставить два символа -> New Line(0ah) и Carrige return(0dh). При этом строка в сегменте данных выглядит так:
str db 'some string',0ah,0dh,'$'
Ответ отправлен: 04.01.2004, 10:41
Отправитель: never_again
Отвечает _vt
Приветствую Вас, Torn!
Надо в конец строки вставить символы перевода "каретки" - коды символов 10 и 13 - примерно так:
message db "Hello, world!",10,13,"$"
--- E-Man 1.5+ : Happy New Year!
Ответ отправлен: 04.01.2004, 05:06
Отправитель: _vt
Отвечает Dark_Lord
Доброе время суток, Torn!
0Dh, 0Ah - после вывода этих двух сиволов всё последующее выводится с новой строки.
Ответ отправлен: 04.01.2004, 12:59
Отправитель: Dark_Lord
Отвечает Ayl
Доброе время суток, Torn!
Нужно еще дописать символ перевода строки. Для ДОС он формируется из пары символов:
возврат каретки (CR) - код 13 (0Dh)
перевод чтроки (LF) - код 10 (0Ah)
Т.е. твоя строка должна выглядить так:
stroka db \'Моя строка\', 13, 10, \'$\'
или так:
stroka db 13, 10, \'Моя строка$\'
В первом случае перевод строки будет выполнен после вывода строки "Моя строка", а во втором - до.
Ответ отправлен: 05.01.2004, 18:08
Отправитель: Ayl
Отвечает SedHg
Доброе время суток, Torn!
Это делается очень просто.
Достаточно прописать твою строку таким образом:
message db "Hello World!",0Dh,0Ah,'$'
Эти два символа: "0Dh,0Ah" осуществляют перевод строки
и возврат каретки, соответственно. Проще говоря, следующая текстовая строка будет
выводится на следующей строке «экрана». И символ $ трогать совсем не надо, он тут совсем ни причем ;).
Ответ отправлен: 05.01.2004, 19:07
Отправитель: SedHg
Отвечает Bob Johnson
Добрый день, Torn!
Поставь 13, 10.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 06.01.2004, 02:31
Отправитель: Bob Johnson
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (25) C / C++ (18) Perl (4) Builder / Delphi (20) Pascal (21) Basic / VBA (3) Java / JavaScript (5) PHP (13) Криптография (7) WinAPI (13) |
Пользователю Windows 95/98/Me (42) Windows NT/2000/XP (58) "Железо" (30) Поиск информации (21) |
Администратору Windows NT/2000/XP (28) Linux / Unix (12) |
Юристу Гражданское право (12) Семейное право (8) Трудовое право (9) КоАП (8) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||