Вопрос по поводу встроенного ассемблера
От: Аноним  
Дата: 06.09.11 17:16
Оценка:
Здравствуйте, уважаемые господа.

Только что занялся изучением ассемблера, который захотел попробовать использовать при помощи _asm в C++, используя при этом Visual Studio.

_asm
{
mov eax, 4
mov ecx, 5
}

Примеры наподобие вот этого, разумеется, получаются, однако проблема возникла уже тогда, когда я попытался вывести на экран MessageBox с любым сообщением.

_asm
{
.386
.flat

extrn ExitProcess:PROC
extrn MessageBoxA:PROC

.data

Ttl db "aaaaa", 0h
Msg db "aaaaa", 0h

.code

start:
push 0h
push offset Msg
push offset Ttl
push 0h
call MessageBoxA
push 0h
call ExitProcess
end start
}

Разумеется, куча ошибок.

Насколько я понял, возникают они из-за неск. ошибок:

— Явно указывать тип процессора, модель памяти и вызова функций не надо.

— Т.к. я подключаю заголовочный файл windows.h через препроцессорную директиву в C++, то указывать отдельно extrn ExitProcess:PROC и extrn MessageBoxA:PROC также не надо.

— Поле .data использовать также не стоит, вместо него сделал
char *Msg = "aaaaa";
char *Ttl = "aaaaa";

— Явно указывать .code также не стоит.

Однако ошибки всё равно остались. Почему? Что не так? О каких ещё особенностях встроенного ассемблера мне стоит знать?

Заранее извиняюсь за глупые вопросы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.