Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ассемблерные вставки


Berkut ©   (2008-05-04 22:42:00) 

Помогите написать две asm вставки(в Паскаль, Делфи), которые :
1) Преобразуют целое десятичное число в 16-ричное символьное представление
2) Выводит "да"( если встречаются в введёной строке две единицы подряд)... или "нет"( если нету двух или более подряд идущих единиц). Строка представляет собой только символы "1" или "0".
П.С. никакой связи между пунктом 1) и 2) нет - это две разные "проги"


Тыщ   (2008-05-05 10:27:00) [1]

> 1) Преобразуют целое десятичное число в 16-ричное символьное представление

Вот тут я писал:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1209133881&n=5


Rouse_   (2008-05-05 10:12:00) [2]

1. Смотри реализацию IntToHex()
2. Что-то типа такого:

function HasDualBitChar(const Value: String): Boolean;
asm
 xor   edx, edx
 mov   edi, eax
 sub   eax, 4
 mov   ecx, [eax]
 mov   al, 31h
@next:
 repne scasb
 test  ecx, ecx
 jz    @exit
 cmp   al, byte ptr [edi]
 jne   @next
 inc   edx
@exit:
 mov   eax, edx
end;


Германн   (2008-05-05 01:01:00) [3]


> Всё равно спасибо всем за участие...

Да не за что.
Ты вполне адекватный "вопрошающий".


Berkut   (2008-05-05 00:50:00) [4]

2Германн:
Да я понимаю... но вдруг зайдёт как раз "тот" и поможет :)
Просто не думал, что мой вопрос поднимет такой "шумок")

Всё равно спасибо всем за участие...


Германн   (2008-05-05 00:44:00) [5]


> Berkut ©   (05.05.08 00:21) [10]
>
> 2Palladin:
> > ты предлагаешь кому то сделать то, что написал я и потом
> тут напечатать?
> Вроде я уже переформулировал вопрос: [2], имхо - это ветвь
> для "начинающих"... тебе что в падлу ответить если знаешь
> - там строчек на 9 максимум вставка должна быть...
> > да и между TurboPascal'евским asm'ом и BASM разница ощутимая
> ты точно прочитал, что я писал в теме и [2]? Мож мы друг
> друг не понимаем?))
> А [6] я почитаю, посмотрю, спасибо...
>

Ты полагаешь, что обитатели сего форума ежедневно пишут ассемблерные вставки и поэтому легко (не прибегая к справочникам) дадут те самые "9 строчек"? Уверяю тебя. Ты ошибаешься! На сём форуме есть очень много участников, которые могут сравнительно легко понять АСМ-код или сравнительно легко его "модернизировать" под конкретные нужды.
Но написать на лету решение произвольной "задачи 9 строчек"!  Таких тут нет. И не потому, что тут все ламеры. А потому, что форум не тот.


Berkut   (2008-05-05 00:43:00) [6]

Спасибо за помощь - уже нашёл...


Berkut   (2008-05-05 00:21:00) [7]

2Palladin:
> ты предлагаешь кому то сделать то, что написал я и потом тут напечатать?
Вроде я уже переформулировал вопрос: [2], имхо - это ветвь для "начинающих"... тебе что в падлу ответить если знаешь - там строчек на 9 максимум вставка должна быть...
> да и между TurboPascal'евским asm'ом и BASM разница ощутимая
ты точно прочитал, что я писал в теме и [2]? Мож мы друг друг не понимаем?))
А [6] я почитаю, посмотрю, спасибо...


Palladin   (2008-05-05 00:07:00) [8]

нет, ты интересный... на принцип пошел чтоли? ты предлагаешь кому то сделать то, что написал я и потом тут напечатать? да и между TurboPascal'евским asm'ом и BASM разница ощутимая... одна только разрядность влияет на многое... то что сейчас укладывается в 2 регистра раньше помещалось в стек... ты уж определись чего тебе нужно... я тоже не великий гуру, но разницу между 16 и 32 разрядами вижу...


Berkut   (2008-05-04 23:57:00) [9]

>Palladin ©   (04.05.08 23:54) [6]
Пока не хочу углубляться...да интересует только одно(на данный момент) - см [7]


Berkut   (2008-05-04 23:55:00) [10]


> Palladin ©   (04.05.08 23:51) [4]
> пишешь аналогичные процедуры на делфи, устанавливаешь точку
> останова на первой строчке, запускаешь, после останова жмешь
> ctrl alt c и смотришь чего делается )

Попробовать надо ...
Мож кто знает всё-же:
как пройтись на асме по всем эл-там "паскалевской" строки?


Palladin   (2008-05-04 23:54:00) [11]

а еще можно сходить в system.pas, а еще нужно сходить Анатолю на сайт и найти трактат BASM для начинающих, по моему так...


{RASkov}   (2008-05-04 23:52:00) [12]

Супер.... я уже начинаю знать асм :)


Palladin   (2008-05-04 23:51:00) [13]

пишешь аналогичные процедуры на делфи, устанавливаешь точку останова на первой строчке, запускаешь, после останова жмешь ctrl alt c и смотришь чего делается )


{RASkov}   (2008-05-04 23:50:00) [14]

> [2] Berkut ©   (04.05.08 23:46)

Вот это уже другой разговор, но к сожалению я в асме точно так же "не рублю" как и ты :(
:) Сорри...


Berkut   (2008-05-04 23:46:00) [15]

просто не работал я со вставками...
Вобщем не ясно только это:
как там можно получить доступ к эл-ту строки, для обработки в цикле?

Допустим есть строка s: string; там текст... как пройтись на асме по всем эл-там "паскалевской" строки?


{RASkov}   (2008-05-04 23:42:00) [16]

> [0] Berkut ©   (04.05.08 22:42)
> Помогите написатьдве asm вставки(в Паскаль, Делфи), которые:

Как? Твоими пальцами на кнопки понажимать?
Что не получается у тебя? Или ты хочешь озадачить кого-нибудь? ...куря в сторонке.


Наверх

Титульная страница Поиск, карта сайта Написать письмо