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

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


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

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

Выпуск № 762
от 28.08.2004, 22:30

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


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

SackTap
Статус: Доверительный
Общий рейтинг: 111.2
[Подробней >>]
Tigran K. Kalaidjian
Статус: Профессиональный
Общий рейтинг: 187.59
URL: Персональная страничка
[Подробней >>]
Стас
Статус: Опытный
Общий рейтинг: 122.28
[Подробней >>]
 
Алексей
Статус: Доверительный
Общий рейтинг: 140.98
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.46
[Подробней >>]
Coddie
Статус: Начальный
Общий рейтинг: 105.17
[Подробней >>]
 
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 109.29
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 133.02
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 118.12
[Подробней >>]
 
Горячев Игорь
Статус: Доверительный
Общий рейтинг: 118.14
[Подробней >>]


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

Вопрос № 5755. "дизассемблированиe"-Ob\'yasnite plz chto eto takoe.Videl v milione mest no ne znau chto e... (ответов: 6)
Вопрос № 5756. Здорово Всем!!! С прошлым вопросом разобраося сам (с горем по-полам). Теперь возникли новые вопросы.... (ответов: 5)
Вопрос № 5757. Вопрос ко всем. Кто знает где можно найти вторую и третию часть книги: "Знакомтесь.Ассемблер&qu... (ответов: 1)
Вопрос № 5758. Народ запарился я писать на аппаратном уровне для дос хателосбы научится писат под windows с чего на... (ответов: 3)
Вопрос № 5760. Здраствуйте. Может кто знает есть ли отладчики или hex-редакторы для правки прошивок siemens'ов(а55 ... (ответов: 2)
Вопрос № 5761. Здравствуйте, Уважаемы эксперты! Спасибо за подробные ответы на предыдущий вопрос... Вот тут у меня ... (ответов: 2)
Вопрос № 5762. Здравствуйте. Замучил ребар, точнее разница между "новым" (XP) и "старым" визуа... (ответов: 1)
Вопрос № 5763. Прив выходе из обработчика прерываний используется оператор IRET адресс смещения он(оператор) берет... (ответов: 5)

Вопросов: 8, ответов: 25


 Вопрос № 5755

"дизассемблированиe"-Ob\'yasnite plz chto eto takoe.Videl v milione mest no ne znau chto eto i s chem ego edyat.
Zaranee spasibo



Вопрос отправлен: 23.08.2004, 13:25
Отправитель: rapa

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

Отвечает SackTap

Добрый день, rapa!
ну это когда программу (исполняемую) переводят в файл asm (исходный код). если переводят com или exe досовский, то еще можно чето разглядеть, а win-exe или там elf всякий уже не разгляишь, слишком шняги много.

Ответ отправлен: 24.08.2004, 11:48
Отправитель: SackTap


Отвечает Tigran K. Kalaidjian

Доброе время суток, rapa!
Операция, обратная компиляции исходного текста на ассемблере.

Ответ отправлен: 23.08.2004, 15:21
Отправитель: Tigran K. Kalaidjian


Отвечает Стас

Здравствуйте, rapa!
Дизассемблирование - процесс обратный ассемблированию.
Т.е. получение из готовой программы её исходного текста.
Надо сказать, что получить, работоспособный текст не получается практически никогда. Всегда приходится его его "доводить". И чем больше программа тем сложнее. А если она к тому-же и зашифрована или запакована... Тут и говорить не о чем.

Ответ отправлен: 23.08.2004, 14:31
Отправитель: Стас


Отвечает Алексей

Приветствую Вас, rapa!
Если когда-нибудь писал на ассемблере, то знаешь, что каждой команде ассемблера соответствует какой-то машинный код (боследовательность битбайт). если заглянуть в .exe файл, то никакого ассемблера ты там не увидишь... а на программу иногда посмотреть хочется... вот и делаешь дизассемблирование: перевод машинных кодов (беспорядочного набора битов (в .exe файле, например)) в команды ассемблера.

Ответ отправлен: 23.08.2004, 16:23
Отправитель: Алексей


Отвечает Ayl

Здравствуйте, rapa!
Дизассемблирование - получение исходного кода на ассемблере из выполняемой программы. Т.е. операция, обратная компиляции. Но не всегда выполнимая (особенно на автомате).


Ответ отправлен: 23.08.2004, 16:42
Отправитель: Ayl


Отвечает Coddie

Добрый день, rapa!
Дизассемблирование - это процесс, обратный компиляции
Если компиляция - это создание бинарного кода из исходного,
то дизассемблирование - это генерация ассемблерного листинга
из бинарного файла. Т.е имеем EXE файл, а в результате дизассемблирования получаем ASM файл

Ответ отправлен: 23.08.2004, 17:34
Отправитель: Coddie


 Вопрос № 5756

Здорово Всем!!!
С прошлым вопросом разобраося сам (с горем по-полам).
Теперь возникли новые вопросы.
Что самое интересное, когда читаешь все понятно. Но когда сам пробуешь писать почему-то всегда возникают разные проблемы, о которых даже и "не мечтал".
Да и вопросы-то возникают посложнее, чем с другими языками. В свое время в 12-13 лет начинал учить Паскаль, так проблем с его изучением было меньше. (То ли такой паскаль простой, то ли я потупел с тех времен).
Короче хватит философствовать, вопросы такие:
1. Решил попробовать написать что-то вроде склада нужных процедур. Так с процедурой вывода числа в 10-й форме просто куча проблемностей.
Может кто-то подскажет как разделить число на 10 без DIV или FPU.
2. То, что набросал не работает. Но!!! Запускаю под отладчиком (TD) и все работает, но без него никак.
Вот текст
.386
.model large
stak segment stack use16
db 1000h dup(0)
stak ends

data segment use16
include data.inc
data ends

code segment use16
assume cs:code,ds:data,ss:stak;
Start:
jmp beg
include procedur.inc
beg:
mov ax,data
mov ds,ax
mov es,ax
print mess1
call paus
call clear_screen
call print_dec
call paus
call exit
code ends
end start
============================
data.inc
mess1 db 4 dup ('Abcd !'),'$'
sourse dt 0
decimal dt 0
chis dd 1234567

============================
procedure.inc
print_dec proc
pusha
mov cx,0
push ds
pop es
lea di,decimal
mov al,'$'
stosb
mov eax,chis
next_sym:
inc cx
mov bp,10
div ebp
push eax
mov al,dl
xor edx,edx
add al,30h
stosb
pop eax
cmp eax,0
jne next_sym
;меняем порядок бай тов
inc cx
lea si,decimal
lea di,sourse
add di,cx
dec di
@@loop:
cld
lodsb
std
stosb
loop @@loop
cld
mov ah, 9
lea dx,sourse
int 21h
popa
ret
print_dec endp
Все остальные процедуры работают



Вопрос отправлен: 23.08.2004, 22:43
Отправитель: demon2030 (demon2030@nursat.kz)

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

Отвечает Dark_Lord

Приветствую Вас, demon2030!
1) разделить на 10 можно следующим образом: для 16-бит:
mov dx,6554
mul dx
для 32 бит:
mov edx,42949673
mul edx
Причем результат окажется в edx а не eax!!
2)Чесно говоря не совсем понял, что хотелось бы получить в этой процедуре, но:
- ebp/bp лучше не использовать для умножения
- если ты пишешь в source в сторону уменьшения адресов, то в di разумно загрузить сразу конец буфара (lea edi,[offset source+ecx])/ Просто быстрее выполняться будет...


Ответ отправлен: 24.08.2004, 10:36
Отправитель: Dark_Lord


Отвечает Стас

Доброе время суток, demon2030!
Все очень просто: ты делишь EDX:EAX на EBP, при этом:
1) Что у тебя в EBP? может быть все что угодно, ведь
mov bp,10 загружает только младшую часть BP.
Пиши: mov ebp,10.
2) Что у тебя в EDX? Вообще неизвестно!
Добавь после mov eax,chis; xor edx,edx. И все заработает.
А под дебаггером работает, потому что он очищает и EBP и EDX за тебя.
Вообще, странная манера писать данные в отдельную INC.
А насчет деления на 10 без DIV.
Ну можно это сделать, только зачем оно тебе?
Так же проще и понятнее.

Ответ отправлен: 24.08.2004, 03:20
Отправитель: Стас


Отвечает Ayl

Доброе время суток, demon2030!
1. Чтобы разделить байтовое число в регистре AL на 10 можно использовать команду aam. См. в приложении программу перевода чмсла в регистре AL в строку. Ее несложно переделать для перевода любого числа.

2. Хоть бы написал, что именно не работает. На первый взгляд, не работать должна вот эта конструкция в процедуре print_dec:
mov bp, 10
div ebp
Дело в том, что команда div ebp в качестве делисого берет пару регистров edx:eax. При этом под отладчиком действительно все будет хорошо, потому что он при старте обнуляет регистры. Но при запуске программы "напрямую" эта конструкция может отработать неправильно, т.к. при старте программы значение регистра DX не равно 0. Т.ч. поставь после команды pusha команду xor edx, edx и все должно заработать. Или перенеси свой xor в начало цикла.

Приложение:

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


Отвечает Евгений Иванов

Добрый день, demon2030!
Разделить число на 10 можно с помощью команды AAM.
* EMan: -=- И легко перо, да на крышу не закинешь. =-=


Ответ отправлен: 25.08.2004, 06:10
Отправитель: Евгений Иванов


Отвечает Tigran K. Kalaidjian

Здравствуйте, demon2030!
А сколько тебе сейчас? Ровесник ;)
Насчёт деления без DIV (на остальное, уверен, эксперты ответили):
ВАРИАНТ 1: вычитанием: вычитаем из делимого делитель до тех пор, пока не делимое не станет меньше делителя. Результатом будет значение счётчика делений.
ВАРИАНТ 2: «в столбик». Это уже сложнее, но эффективнее, чем первый вариант. В приложении – самопал по теме. Да, и учтите, что битовый сдвиг вправо на один разряд – деление числа на 2.


Приложение:

Ответ отправлен: 25.08.2004, 17:53
Отправитель: Tigran K. Kalaidjian


 Вопрос № 5757

Вопрос ко всем. Кто знает где можно найти
вторую и третию часть книги: "Знакомтесь.Ассемблер".
Вторая часть называется "от знакомства- к дружбе"



Вопрос отправлен: 23.08.2004, 23:56
Отправитель: Кирилл

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

Отвечает _vt

Доброе время суток, Кирилл!
"А мужики-то не знают!"(с) :-)
Ты где такую чушь услышал?
* Origin : Life begins at 1000Mhz!


Ответ отправлен: 25.08.2004, 22:30
Отправитель: _vt


 Вопрос № 5758

Народ запарился я писать на аппаратном уровне для дос
хателосбы научится писат под windows
с чего начать
и просба где можно найти подробное описание WinAip функций
для асама
желательно на русском
еслу у кого есть скинте на мыло
с уважением Dark_Monarh



Вопрос отправлен: 24.08.2004, 08:38
Отправитель: Dark_Monarh

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

Отвечает Горячев Игорь

Здравствуйте, Dark_Monarh!
WinAPI и для assembler'a и для с++ одинаковы. Подробнее чем в MSDN нигде нет!

Ответ отправлен: 24.08.2004, 22:35
Отправитель: Горячев Игорь


Отвечает Dark_Lord

Приветствую Вас, Dark_Monarh!
Смотри на http://learnasm.narod.ru

Ответ отправлен: 24.08.2004, 10:38
Отправитель: Dark_Lord


Отвечает Tigran K. Kalaidjian

Доброе время суток, Dark_Monarh!
Для программирования под Win32 часто советуют изучить «туториалы Iczelion'а»
Скачать туториалы (с подробным разбором и комментариями) можно здесь:
http://www.wasm.ru/publist.php?list=1 (Уроки Win32API)
http://www.wasm.ru/publist.php?list=2 (Уроки PE)
http://www.wasm.ru/publist.php?list=3 (Уроки VXD)
http://www.wasm.ru/publist.php?list=4 (Уроки ODBC)
Справочники по WinAPI можно взять из MSDN, RSDN.
Или скачать: http://learnasm.narod.ru/download/win32.rar
Если у Вас установлен пакет Delpi или C++ Builder, то справочник можно найти в папке C:Program FilesCommon FilesBorland SharedMSHelp. Правда все эти варианты только на английском. На русском можно прочитать только обрывки:
http://www.bcbdev.ru/winapi.htm, также можно зайти на subscribe.ru и подписаться на рассылку "Win API на русском"
Естественно, что Вам потребуется компилятор. Начните с MASM32
http://www.wasm.ru/tools/ 7/masm32v8.zip
В этот пакет входит практически всё, что может понадобиться для программирования под Win, в том числе туториалы Iczelion’a, различные полезные примеры программ для Win32 и многое другое.
Если даже кто-то захочет Вам это скинуть, то не сможет, ибо мыло Вы не указали.

Ответ отправлен: 24.08.2004, 10:13
Отправитель: Tigran K. Kalaidjian


 Вопрос № 5760

Здраствуйте.
Может кто знает есть ли отладчики или hex-редакторы для правки прошивок siemens'ов(а55 или с55)?(Прошивки в формате *.bin)



Вопрос отправлен: 24.08.2004, 10:38
Отправитель: Семен

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

Отвечает _vt

Приветствую Вас, Семен!
Интересно, а чем отличается обычный hex-редактор от hex-редактора прошивок? :-0 Существуют эмуляторы телефонов Siemens и отладчики Java-приложений, написанных для этих телефонов. Это есть на http://www.siemens-club.ru
* Origin : Life begins at 1000Mhz!


Ответ отправлен: 25.08.2004, 22:31
Отправитель: _vt


Отвечает Tigran K. Kalaidjian

Доброе время суток, Семен!
HEX-редакторы стандартные, смотрите в левом столбике:
http://wasm.ru/toollist.php
Чего-то я видел вроде руководства по перепрошивке a55->c55 может там чего найдёте:
http://www.siemensgsm.ru/stat_a55_2_c55.htm
и тут
http://forum.siemens-club.ru/viewtopic.php?TopicID=26467&page=12

Ответ отправлен: 25.08.2004, 10:08
Отправитель: Tigran K. Kalaidjian


 Вопрос № 5761

Здравствуйте, Уважаемы эксперты!
Спасибо за подробные ответы на предыдущий вопрос...
Вот тут у меня возник следующий ;).
Я пишу программку связи по LPT порту и получилось так, что как ни старался, а данные менять в порту со скоростью больше 900кГц не получается (зимерил на внешнем разьеме).
То есть на каждую команду out(outsb) процессор простаивает около 2000 тактов...
1. Почему? От чего зависит скорость вывода?
2. И можно ли достичь скорости вывода на LPT порт хотя бы 2МГц (На каких машинах)?
Заранее благодарен!



Вопрос отправлен: 24.08.2004, 12:41
Отправитель: D'Sota (ff4a@mail.ru)

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

Отвечает Tigran K. Kalaidjian

Добрый день, D'Sota!
У Вас странные показатели – у меня больше 300КГц (т.е. 600 Кбит/сек на 1 канал) ну никак не получается (Процессор – Duron 800, погрешность 60КГц).
1. А чёрт его знает. ИМХО ни от чего – протокол, он и есть протокол. Но разность в наших замерах меня сильно смущает. Программка, которой я пользовался в приложении, запускал под голым ДОСом. Вы, конечно, могли сделать еще проще, но от этого значения не увеличатся в 3 раза, ибо частоты при которых работает процессор – это совсем другие порядки – они не должны были повлиять. Может Вы считали за период время, отводимое на 1 бит ? Но и в этом случае мои результаты должны быть около 660, но никак не 900. А может Вы ориентировались на ВЧ помехи, которых, вообще говоря, полно. В общем, если хотите и дальше разбираться в этом вопросе, пишите на kalaidjian@pochtamt.ru , укажите чем и как Вы меряли, какая машина и какая ОС.
2. ИМХО нет: для таких внешних кабелей это невозможно – антенна получается. А вот 2.4 Мбит/с (Не МГц !) – запросто (предыдущие данные надо умножить на 8 – восемь каналов). По стандарту это и есть предел, однако по Вашим данным получается 7.2 Мбит/с, т.е. Вы, видимо, меряли неправильно.
P.S. интересная штука: если сменить протокол с ECP на EPP, чёткость линий на оссцилке увеличивается раз в 10-20 =) Интересно, с чем это связано... Причём это не случайность – пробовал несколько раз.


Приложение:

Ответ отправлен: 25.08.2004, 13:03
Отправитель: Tigran K. Kalaidjian


Отвечает Горячев Игорь

Здравствуйте, D'Sota!
LPT от машины к машине не меняется - это стандарт. И больше чем в него заложено не выжать!

Ответ отправлен: 24.08.2004, 22:38
Отправитель: Горячев Игорь


 Вопрос № 5762

Здравствуйте.
Замучил ребар, точнее разница между "новым" (XP) и "старым" визуальными стилями. Если кто знает как это решает VS прошу сообщить, думаю искоренить вопрос радикально: если программа стартует в системе с "новым" стилем то делать одно, если нет то другое. Короче, вопрос в том, как узнать какой визуальный стиль (XP или "старый") в системе. Не предлагайте узнать версию Windows так как в Windows XP с классической темой действует "старый" стиль.



Вопрос отправлен: 24.08.2004, 21:00
Отправитель: Vadim

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

Отвечает Dark_Lord

Добрый день, Vadim!
Можно использовать функцию GetThemeAppProperties(VOID), но для этого нужно создать манифест использования comctl v6. Подробнее смотри на http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/userex/cookbook.asp

Ответ отправлен: 25.08.2004, 09:29
Отправитель: Dark_Lord


 Вопрос № 5763

Прив выходе из обработчика прерываний используется
оператор IRET адресс смещения он(оператор) берет из стека
но я не могу понять откуда он узнает адрес сегмента.
Кто знает помогите.



Вопрос отправлен: 24.08.2004, 22:25
Отправитель: Кирилл

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

Отвечает Tigran K. Kalaidjian

Добрый день, Кирилл!
Оттуда же - из стека. Мало того, он ещё и флаги восстанавливает.

Ответ отправлен: 25.08.2004, 08:35
Отправитель: Tigran K. Kalaidjian


Отвечает Ayl

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


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


Отвечает Евгений Иванов

Доброе время суток, Кирилл!
оттуда же, как и флаги.
* EMan: -=- И легко перо, да на крышу не закинешь. =-=


Ответ отправлен: 25.08.2004, 06:11
Отправитель: Евгений Иванов


Отвечает Стас

Добрый день, Кирилл!
Int xx кладет в стек и IP и CS и флаги.
IRet соотвественно из стека извлекает теже IP, CS и флаги.

Ответ отправлен: 25.08.2004, 03:12
Отправитель: Стас


Отвечает Алексей

Здравствуйте, Кирилл!
Оттуда же, ИЗ СТЕКА!
iret это как дальний retf (почти).

Ответ отправлен: 25.08.2004, 12:30
Отправитель: Алексей



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

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (26)
C / C++ (16)
Perl (6)
Builder / Delphi (13)
Pascal (25)
Basic / VBA (5)
Java / JavaScript (7)
PHP (11)
Криптография (7)
WinAPI (11)
Радиоэлектроника (11)
Пользователю
Windows 95/98/Me (49)
Windows NT/2000/XP (61)
"Железо" (41)
Поиск информации (19)
Администратору
Windows NT/2000/XP (39)
Linux / Unix (16)
Юристу
Гражданское право (10)
Семейное право (7)
Трудовое право (9)
КоАП (6)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
http://subscribe.ru/feedback/
Адрес подписки
Отписаться

В избранное