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

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

Assembler & Delphi [D6, D7, WinXP]


Страницы:   1 2

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).
> Как поместить строковую константу

Имхо, он не очень тривиален. Строка в Дельфи - не просто набор байт записанных в некоторые ячейки.


Страницы:   1 2

Наверх

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