Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 683
от 05.01.2004, 14:00
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 4749 Отправлено ответов: 13442 Активность: 283.0 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Bob Johnson Статус: Профессиональный Общий рейтинг: 146.9 URL: Программирование [Подробней >>] |
never_again Статус: Опытный Общий рейтинг: 127.51 [Подробней >>] |
Artemy Статус: Опытный Общий рейтинг: 119.15 Телефон: 8 905 549 38 66 [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 110.38 [Подробней >>] |
dr_dolphin Статус: Опытный Общий рейтинг: 114.4 [Подробней >>] |
Евгений Иванов Статус: Профессиональный Общий рейтинг: 137.94 URL: Super Assembler Software Телефон: Пчёлка +7 905 6601206 [Подробней >>] |
SedHg Статус: Доверительный Общий рейтинг: 112.23 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 4718. Люди добрые помогите ламоте несусветной или укажите направление правильное, что мне делать. Немогу н... (ответов: 1)
Вопрос № 4719. Здраствуйте. Изучаю я ассемблер Только вот проблемка Очень сложно мне понять Что,зачем и как все ест... (ответов: 1)
Вопрос № 4720. Уважемые эксперты! Подскажите, пожалуйста, алгоритм преобразования hex числа в dec... Очень нужно! ... (ответов: 5)
Вопрос № 4721. Здравствуйте уважаемые эксперты! Столкнулся с проблемой написания патча для программы, исправляющего... (ответов: 4)
Вопрос № 4722. Добрый вечер! Дайте ,пожалуйста, у кого есть или нарисуйте ,если не сложно, исходник кода, измен... (ответов: 3)
Вопрос № 4723. всем привет! мне нужно прочитать файл(ы) с FDD, без использования прерываний DOS, RealMede.... (ответов: 1)
Вопрос № 4724. Здавствуйте эксперты, всех с Новым Годом, у меня такой вопрос. Возможно ли вызвать API функцию из DO... (ответов: 3)
Вопрос № 4725. Где можно скачать Masm 6.11? В поисковике не нашел, там ссылки все битые какие-то.... (ответов: 1)
Вопрос № 4726. Добрый день, уважаемые эксперты! Поздравляю Всех с Новым годом! Благодарен за ответ на вопрос №4708 ... (ответов: 2)
Вопрос № 4727. Как оставить программу в памяти под BIOS, т.е. когда ОС еще не загружена? Допустим, программа запи... (ответов: 1)
Вопрос № 4728. Здравствуйте эксперты. Можно ли найти документацию (rus) для Fasm 1.49, видел только 1.20. Как в Fas... (ответов: 3)
Вопросов: 11, ответов: 25
Вопрос № 4718 |
Люди добрые помогите ламоте несусветной или укажите направление правильное, что мне делать. Немогу на ASM Dll-ку сделать, чтоб из неё вызывать функции программой на Visual C++6 . Link-кер ругается, нехочет видеть и всё!
Если есть доки, или готовые решения прошу мне незамедлительно выслать, за мной не заржавеет. Документации валом, а той что нужно нет.
Вопрос отправлен: 30.12.2003, 08:32
Отправитель: Sandr
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, Sandr!
В С++ имена могут изменяться (манглинг). Для начала попробуй динамическое связывание - т.е. ты загружаешь dll сам (LoadLibrary), получаешь адрес нужной функции (GetProcAddress) и вызываешь ее.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 31.12.2003, 15:43
Отправитель: Bob Johnson
Вопрос № 4719 |
Здраствуйте.
Изучаю я ассемблер
Только вот проблемка
Очень сложно мне понять
Что,зачем и как все есть.
А конкретнее - отладчик
Не могу его понять,
Киньте ссылку -
К нашим,к русским
Где описан AFD(AFDPRO)!
Вопрос отправлен: 30.12.2003, 12:19
Отправитель: Семен
[Следующий вопрос >>] [Список вопросов]
Отвечает never_again
Здравствуйте, Семен!
Что ж, Семён, скажу открыто -
Никудышний вы поет.
Слог не ровный, темп размытый
Да ещё и рифмы нет...
Вы просили, значит, ссылку.
про отладчик почитать...
Натянув на фейс ухмылку
Ссылку Вам иду искать.
БЫСТРО ссылку обнаружив
я вписал её в сюда
этим Вас обезоружив
доказав, что Вы - БАЛДА!!!
http://kis-kiev.narod.ru/lab/tasm/tsm1.htm
P.S. Слово "Балда" было употребленно только из интересов рифмы. Любое совпадение абсолютно случайно...
Ответ отправлен: 30.12.2003, 12:55
Отправитель: never_again
Вопрос № 4720 |
Уважемые эксперты! Подскажите, пожалуйста, алгоритм преобразования hex числа в dec... Очень нужно! И еще как обратиться к младшей или старшей тетраде байта, то есть как загрузить пол-байта в другой регистр.
типа mov al,25h
...
bl=2 или чтобы bl=5
Это я сам пытаюсь дойти до алгоритма пребразования hex->dec
P.S. C НАСТУПАЮЩИМ!
Best coding, shining browsing and cool hacking/cracking forever!!!
Вопрос отправлен: 30.12.2003, 21:03
Отправитель: Dark Osmantus
[Следующий вопрос >>] [Список вопросов]
Отвечает Artemy
Здравствуйте, Dark Osmantus!
Алгоритм преобразования HEX в DEC...
0x1234ABC = 0xC*16^0+0xB*16^1+0xA*16^2+0x4*16^3*0x3*16^4+0x2*16^5*0x1*16^6 = 12*1+11*16+10*256+4*4096+3*65536+2*1048576+1*16777216 = 12+176+2560+16384+196608+2097152+16777216 = 19090108
...надеюсь понятно.
Ответ отправлен: 31.12.2003, 10:08
Отправитель: Artemy
Отвечает Dark_Lord
Доброе время суток, Dark Osmantus!
Если FPU есть, то:
HexToDecDword proc
enter 0ch, 0
fild dword ptr [ebp+08h]
fbstp [ebp-0ch]
mov eax,[ebp-0ch]
leave
ret 4
HexToDecDword endp
Если нет, то:
_HexWordToDec@4 proc
push ebp
mov ebp,esp
push ecx
push ebx
mov eax,[ebp+08h]
and eax,0FFFFh
mov ebx,offset decs
push eax
and al,0fh
mov [ebx+4],al
pop eax
push eax
shr al,4
mov [ebx+3],al
and eax,0fh
shl eax,1
lea eax,[eax+eax*2]
add [ebx+4],ax
pop eax
push eax
and eax,0f00h
shr eax,8
push eax
shl eax,1
mov [ebx+2],al
lea eax,[eax+eax*2]
add [ebx+4],ax
pop eax
lea eax,[eax+eax*4]
add [ebx+3],al
pop eax
shr eax,12
push eax
shl eax,2
mov [ebx+1],al
shr eax,1
lea eax,[eax+eax*2]
add [ebx+4],ax
pop eax
lea eax,[eax+eax*8]
add [ebx+3],al
mov eax,0ah
first:
cmp [ebx+4],ax
jb not_1
sub [ebx+4],ax
inc byte ptr [ebx+3]
jmp short first
not_1:
cmp [ebx+3],al
jb not_2
sub [ebx+3],al
inc byte ptr [ebx+2]
jmp short not_1
not_2:
cmp [ebx+2],al
jb not_3
sub [ebx+2],al
inc byte ptr [ebx+1]
jmp short not_2
not_3:
cmp [ebx+1],al
jb not_4
sub [ebx+1],al
inc byte ptr [ebx]
jmp short not_3
not_4:
mov cl,4
mov al,[ebx]
shl eax,cl
add al,[ebx+1]
shl eax,cl
add al,[ebx+2]
shl eax,cl
add al,[ebx+3]
shl eax,cl
add al,[ebx+4]
pop ebx
pop ecx
pop ebp
ret 4
.data
Decs db 0,0,0,0, 0,0
.code
_HexWordToDec@4 endp
Удачи.
Dark_Lord(Dark_Lord@RusFAQ.ru)
Ответ отправлен: 31.12.2003, 17:50
Отправитель: Dark_Lord
Отвечает never_again
Здравствуйте, Dark Osmantus!
>> алгоритм преобразования hex числа в dec
почитай архив. эта тема много раз поднималась.
>>как загрузить пол-байта в другой регистр
да простые сдвиги ничего сложного. Смотри:
push ax ; сохраним АХ (просто АН портить неохота)
push cx ; сохраним СХ (а зачем его портить?)
mov al,25h ; 25Н положим в al
xor ah,ah ; обнулим АН
mov cl,4 ; двигать будем 4 раза
shl ax,cl ; сдвинуть АХ 4 раза влево (АН=02h AL=50h)
shr al,cl ; сдвинуть AL 4 раза вправо (AH=02h AL=05h)
mov bx,ax ; сохранить АХ в ВХ
pop cx ; восстановить СХ
pop ax ; восстановить АХ
P.S. АХ можно и не использовать, а напрямю работать с ВХ. просто я решил написать так ка у тебя в вопросе...
Ответ отправлен: 31.12.2003, 17:35
Отправитель: never_again
Отвечает dr_dolphin
Добрый день, Dark Osmantus!
1) Например: Hex=0xE7A4, тогда Dec=14*16^3+7*16^2+10*16+4*1
получаем 59300
2) Пример:
mov al,25h
mov bl,al
and bl,0f0h
shr bl,4 ;bl=2
and al,0fh
mov bh,al ;bh=5
Спасибо за поздравление . Пока ...
Ответ отправлен: 31.12.2003, 11:48
Отправитель: dr_dolphin
Отвечает Евгений Иванов
Здравствуйте, Dark Osmantus!
mov al,25h
mov bl,al
and bl,15
mov bh,al
shr bh,4
А все числа двоичные.
Тебе надо просто вывести на экран?
Тогда дели на 10 .. (см. архив)
Бывай!
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 31.12.2003, 12:52
Отправитель: Евгений Иванов
Вопрос № 4721 |
Здравствуйте уважаемые эксперты! Столкнулся с проблемой написания
патча для программы, исправляющего несколько байт. Такие продукты как
Process Patcher,CodeFusion использовать не хочется - хотелось бы
полностью написать его на ASM. Вопрос возможно больше по API, но
все-таки ж с ассемблером связано... Какие функции API мне необходимо
использовать? С уважением Mafia32
Вопрос отправлен: 30.12.2003, 23:15
Отправитель: Mafia32
[Следующий вопрос >>] [Список вопросов]
Отвечает Artemy
Приветствую Вас, Mafia32!
А что ты конкретно собираешься делать?
Ответ отправлен: 31.12.2003, 10:10
Отправитель: Artemy
Отвечает dr_dolphin
Добрый день, Mafia32!
OpenFile, ReadFile, WriteFile,CloseFile для исправления файла. ReadProcessMemory, WriteProcessMemory для исправления программы в памяти...
Пока !
Ответ отправлен: 31.12.2003, 11:48
Отправитель: dr_dolphin
Отвечает Евгений Иванов
Добрый день, Mafia32!
Используй мою программу, удобно:
superforest.narod.ruesearch_shortline.htm
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 31.12.2003, 12:53
Отправитель: Евгений Иванов
Отвечает Bob Johnson
Приветствую Вас, Mafia32!
Патча в памяти или на диске? Если в памяти, то WriteProcessMemory, VirtualProtectEx. Если на диске - то просто CreateFile, WriteFile.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 31.12.2003, 15:44
Отправитель: Bob Johnson
Вопрос № 4722 |
Добрый вечер!
Дайте ,пожалуйста, у кого есть или нарисуйте ,если не сложно, исходник кода, изменяющий состояние светодиодов клавиатуры. Если вдруг есть желание поделиться этим кодом то проверьте его на работоспособность. А то я не смог заставить переключиться лампочки 6ю строками своего кода во всех возможных комбинация управляущих команд этого i8042. Кстати есть ли у кого ссылка на его описание от INTEL. (НА intel.com нет).
Вопрос отправлен: 31.12.2003, 01:15
Отправитель: Alexej
[Следующий вопрос >>] [Список вопросов]
Отвечает SedHg
Добрый день, Alexej!
Этот пример выдран из книги Зубкова.
; mig.asm
; циклически переключает светодиоды клавиатуры
.model tiny
.code
org 100h ; СОМ-программа
start proc near
mov ah,2 ; функция 02 прерывания 1Ah
int 1Ah ; получить текущее время
mov ch,dh ; сохранить текущую секунду в СН
mov cl,0100b ; CL = состояние светодиодов клавиатуры
main_loop:
call change_LEDs ; установить светодиоды в соответствии с CL
shl cl,1 ; следующий светодиод,
test cl,1000b ; если единица вышла в бит 3,
jz continue
mov cl,0001b ; вернуть ее в бит 0,
continue:
mov ah,1 ; проверить, не была ли нажата клавиша,
int 16h
jnz exit_loop ; если да - выйти из программы
push cx
mov ah,2 ; функция 02 прерывания 1Ah
int 1Ah ; получить текущее время
pop сх
cmp ch,dh ; сравнить текущую секунду в DH с СН,
mov ch,dh ; скопировать ее в любом случае,
je continue ; если это была та же самая секунда - не
; переключать светодиоды,
jmp short main_loop ; иначе - переключить светодиоды
exit_loop:
mov ah,0 ; выход из цикла - была нажата клавиша,
int 16h ; считать ее
ret ; и завершить программу
start endp
; процедура change_LEDs
; устанавливает состояние светодиодов клавиатуры в соответствии с числом в CL
change_LEDs proc near
call wait_KBin ; ожидание возможности посылки команды
mov al,0EDh
out 60h,al ; команда клавиатуры EDh
call wait_KBin ; ожидание возможности посылки команды
mov al,cl
out 60h,al ; новое состояние светодиодов
ret
change_LEDs endp
; процедура wait_KBin
; ожидание возможности ввода команды для клавиатуры
wait_KBin proc near
in al,64h ; прочитать слово состояния
test al,0010b ; бит 1 равен 1?
jnz wait_KBin ; если нет - ждать,
ret ; если да - выйти
wait_KBin endp
end start
Ответ отправлен: 01.01.2004, 14:53
Отправитель: SedHg
Отвечает dr_dolphin
Доброе время суток, Alexej!
Смотри архив рассылки... Я на этот вопрос уже отвечал где-то месяц назад... Пользуйся портами клавистуры 0x60, 0x62///
Пока !
Ответ отправлен: 31.12.2003, 11:48
Отправитель: dr_dolphin
Отвечает never_again
Здравствуйте, Alexej!
В очередной раз процитирую тов. Зубкова.
; mig.asm
; циклически переключает светодиоды клавиатуры
;
; Компиляция:
; TASM:
; tasm /m mig.asm
; tlink /t /x mig.obj
; MASM:
; ml /c mig.asm
; link mig.obj,,NUL,,,
; exe2bin mig.exe mig.com
; WASM:
; wasm mig.asm
; wlink file mig.obj form DOS COM
;
.model tiny
.code
org 100h ; COM-программа
start proc near
mov ah,2 ; функция 02 прерывания 1Ah
int 1Ah ; получить текущее время
mov ch,dh ; сохранить текущую секунду в CH
mov cl,0100b ; CL = состояние светодиодов клавиатуры
main_loop:
call change_LEDs ; установить светодиоды в соответствии с CL
shl cl,1 ; следующий светодиод,
test cl,1000b ; если единица вышла в бит 3,
jz continue
mov cl,0001b ; вернуть ее в бит 0,
continue:
mov ah,1 ; проверить, не была ли нажата клавиша,
int 16h
jnz exit_loop ; если да - выйти из программы
push cx
mov ah,2 ; функция 02 прерывания 1Ah
int 1Ah ; получить текущее время
pop cx
cmp ch,dh ; сравнить текущую секунду в DH с CH
mov ch,dh ; скопировать ее в любом случае,
je continue ; если это была та же самая секунда - не
; переключать светодиоды,
jmp short main_loop ; иначе - переключить светодиоды
exit_loop:
mov ah,0 ; выход из цикла - была нажата клавиша
int 16h ; считать ее
ret ; и завершить программу
start endp
; процедура change_LEDs
; устанавливает состояние светодиодов клавиатуры в соответствии с числом в CL
change_LEDs proc near
call wait_KBin ; ожидание возможности посылки команды
mov al,0EDh
out 60h,al ; команда клавиатуры EDh
call wait_KBin ; ожидание возможности посылки команды
mov al,cl
out 60h,al ; новое состояние светодиодов
ret
change_LEDs endp
; процедура wait_KBin
; ожидание возможности ввода команды для клавиатуры
wait_KBin proc near
in al,64h ; прочитать слово состояния
test al,0010b ; бит 1 равен 1?
jnz wait_KBin ; если нет - ждать,
ret ; если да - выйти
wait_KBin endp
end start
Ответ отправлен: 31.12.2003, 17:20
Отправитель: never_again
Вопрос № 4723 |
всем привет!
мне нужно прочитать файл(ы) с FDD,
без использования прерываний DOS, RealMede.
Вопрос отправлен: 31.12.2003, 09:44
Отправитель: Zensor (ZASM@MAIL.RU)
[Следующий вопрос >>] [Список вопросов]
Отвечает dr_dolphin
Добрый день, Zensor!
Ну воспользуйся тогда функциями BIOS Int 0x10
Пока !
Ответ отправлен: 31.12.2003, 11:49
Отправитель: dr_dolphin
Вопрос № 4724 |
Здавствуйте эксперты, всех с Новым Годом, у меня такой вопрос. Возможно ли вызвать API функцию из DOS программы, если возможно, то как. Заранее спасибо.
Вопрос отправлен: 31.12.2003, 10:10
Отправитель: Виталий (ZAVitaliY@yandex.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Artemy
Приветствую Вас, Виталий!
Выполняй rundll.exe или rundll32.exe с соответствующими параметрами.
Ответ отправлен: 31.12.2003, 10:37
Отправитель: Artemy
Отвечает dr_dolphin
Приветствую Вас, Виталий!
Практически это неприемлимое решение...
До встречи...
Ответ отправлен: 31.12.2003, 11:49
Отправитель: dr_dolphin
Отвечает Bob Johnson
Здравствуйте, Виталий!
> Возможно ли вызвать API функцию из DOS программы
Нет.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 31.12.2003, 15:44
Отправитель: Bob Johnson
Вопрос № 4725 |
Где можно скачать Masm 6.11? В поисковике не нашел, там ссылки все битые какие-то.
Вопрос отправлен: 31.12.2003, 12:56
Отправитель: Котофей
[Следующий вопрос >>] [Список вопросов]
Отвечает dr_dolphin
Доброе время суток, Котофей!
Попробуй ftp.exetools.com
Всего !
Ответ отправлен: 31.12.2003, 22:13
Отправитель: dr_dolphin
Вопрос № 4726 |
Добрый день, уважаемые эксперты!
Поздравляю Всех с Новым годом!
Благодарен за ответ на вопрос №4708 Евгению Иванову и Bob Johnson.
Прошу ответить на следующий вопрос:
Как преобразовать число в строку и обратно?
Заранее благодарен.
Вопрос отправлен: 31.12.2003, 13:29
Отправитель: Valentin (neofit@swn.boyarka.kiev.ua)
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Приветствую Вас, Valentin!
wsprintf
Поищи исходники HLA, там много чего полезного.
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 01.01.2004, 19:46
Отправитель: Евгений Иванов
Отвечает Bob Johnson
Доброе время суток, Valentin!
Число в строку - wwsprintf:
call wsprintf, offset buffer, offset format, [number]
...
buffer db 128 dup ?
format db '%i', 0
number dd ...
Обратно - нужно написать свою функцию. Примеры неоднократно здесь были.
> Поздравляю Всех с Новым годом!
Присоединяюсь!
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 31.12.2003, 15:44
Отправитель: Bob Johnson
Вопрос № 4727 |
Как оставить программу в памяти под BIOS, т.е. когда ОС еще не загружена?
Допустим, программа записана по всем правилам на отдельный ПЗУ. BIOS его обнаруживает и передает ей управление. Как сделать так, чтобы программа осталась в памяти и при этом не конфликтовала с ОС?
З. Ы. Посоветуйте материалы по теме?
Вопрос отправлен: 01.01.2004, 13:29
Отправитель: NeuroMancer
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Добрый день, NeuroMancer!
Делай всё по правилам ПЗУ и она останется в памяти.
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 01.01.2004, 19:47
Отправитель: Евгений Иванов
Вопрос № 4728 |
Здравствуйте эксперты.
Можно ли найти документацию (rus) для Fasm 1.49, видел только 1.20.
Как в Fasm выполнить выражение типа mov адрес, адрес (mov [$+1], [$])
Вопрос отправлен: 01.01.2004, 13:56
Отправитель: Pawel (ProgramMan@list.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Здравствуйте, Pawel!
Нет такой команды.
Применяй стек или промежуточные регистры.
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 01.01.2004, 19:48
Отправитель: Евгений Иванов
Отвечает never_again
Добрый день, Pawel!
>>Как в Fasm выполнить выражение типа mov адрес, адрес
>>(mov [$+1], [$])
я вообще-то с Fasm не работал, но ты пытаешься сделать illigal memory reference и ассемблер, будь то MASM, TASM или FASM, пойти против этого не может...
Ответ отправлен: 01.01.2004, 14:22
Отправитель: never_again
Отвечает Bob Johnson
Приветствую Вас, Pawel!
> mov [$+1], [$]
Невозможно одной командой передать содержимое одной ячейки памяти в другую. Делай так:
mov eax, [...]
mov [...], eax
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 02.01.2004, 01:50
Отправитель: 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 (21) Pascal (22) Basic / VBA (3) Java / JavaScript (5) PHP (11) Криптография (7) WinAPI (13) |
Пользователю Windows 95/98/Me (42) Windows NT/2000/XP (55) "Железо" (28) Поиск информации (19) |
Администратору Windows NT/2000/XP (29) Linux / Unix (14) |
Юристу Гражданское право (15) Семейное право (9) Трудовое право (10) КоАП (9) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||