![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Assembler & Delphi [D6, D7, WinXP]
Wolfheart © (2006-10-18 03:12:00)Доброго времени суток!
Вопрос мой достаточно тривиален, связан он с использованием Делфийского BASM (Buit-in Assembler).
Как поместить строковую константу (положим, "Hello, world!") в стёк и (или) регистр, после чего произвести какое-либо действие со стокой (например, к первоначальным данным добавить " Bye, world :)")?
Далее: необходимо вызвать ShowMessage и передать ей в качестве параметра занесённую в стёк, строку.
Заранее благодарен за помощь.
Сергей М. (2006-10-18 10:05:00) [21]
> Чапаев © (18.10.06 09:59) [9]
Открытые массивы в Делфи толкаются компилятором именно в стек)
Чапаев (2006-10-18 09:59:00) [22]> в стёк
Не называй stack так, он может обидеться и отказаться помещать с себя что бы то ни было. ;-)
> Как поместить строковую константу
Лучше поместить её адрес.
> Далее: необходимо вызвать ShowMessage и передать ей в качестве
> параметра занесённую в стёк, строку.
Таки адрес нужен. А вообще -- вызови ShowMessage() "традиционно", а потом посмотри сгенерированный ассемблерный код.
> [2] Wolfheart (18.10.06 03:21)
С чего ты решил, что это будет в стеке?
> Во первых 0A лишнее
Неправда. Перевод строки в ДОС/Вин -- #13#10.
> во вторых строка будет не в стеке, а в сегменте данных
Ну да? Если я в потоке кода между asm end помещу некоторые байты, они окажутся в сегменте данных? С чего бы? В сегменте кода это Hello world будет.
> Работа со строковыми данными именно в стеке - это что, блажь
> ?
Неопытность.
Автор, ищи и читай книгу Зубкова. Там и не такие извращения есть наряду с объяснением, почему извращаться не стоит. ;-)
Anatoly Podgoretsky (2006-10-18 09:57:00) [23]
> DB 'Hello, world', 0A, 0D
Потому что сплошной бред.
Сергей М. (2006-10-18 08:52:00) [24]
> Wolfheart (18.10.06 03:12)
Работа со строковыми данными именно в стеке - это что, блажь ? Или учебное задание ? Или чем-то обоснованная необходимость ?
atruhin (2006-10-18 05:08:00) [25]> Судя по документации, следует проделать нечто вроде:
> DB 'Hello, world', 0A, 0D
Во первых 0A лишнее, во вторых строка будет не в стеке, а в сегменте данных. Поместить в стек только побайтно например pop. Зачем вообще это нужно?
Германн (2006-10-18 03:43:00) [26]
> Wolfheart (18.10.06 03:33) [4]
Прочитал. Ничем не могу помочь. Если только завтра, "на свежую голову". :-(
Wolfheart (2006-10-18 03:33:00) [27]Обыкновенное Справочное Руководство Delphi... Информацию находил по предметному указателю запросом "DB directive".
Германн (2006-10-18 03:29:00) [28]
> Wolfheart (18.10.06 03:21) [2]
>
> Судя по документации, следует проделать нечто вроде:
>
Позволь поинтересоваться, какую документацию ты имеешь в виду?
Wolfheart (2006-10-18 03:21:00) [29]Судя по документации, следует проделать нечто вроде:
DB 'Hello, world', 0A, 0D
К сожалению, компилятор при этом жутко ругается...
Германн (2006-10-18 03:15:00) [30]
> Wolfheart (18.10.06 03:12)
>
> Доброго времени суток!
> Вопрос мой достаточно тривиален, связан он с использованием
> Делфийского BASM (Buit-in Assembler).
> Как поместить строковую константу
Имхо, он не очень тривиален. Строка в Дельфи - не просто набор байт записанных в некоторые ячейки.