Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Анд_Рей
2 / 2 / 0
Регистрация: 27.12.2009
Сообщений: 145
#1

c++ и ассемблер - C++

27.09.2013, 22:18. Просмотров 589. Ответов 3
Метки нет (Все метки)

есть процедура на ассемблер

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.model small
 
.code
 
_count proc
    push bp
    xor ebp, ebp
    mov bp, sp
    mov eax, [bp+4]
    add eax, 15D
    pop bp
    ret
_count endp
 
end
а вот ее вызов
C++
1
2
3
4
5
6
7
8
9
#include<iostream>
 
extern "C" int count(int x);
 
void main()
{
    std::cout << count(10) << std::endl;
    getchar();
}
вместо 25(10+15) выводится,что-то типа 1699151887
Что я сделал не так??
Спасибо!

Добавлено через 1 час 15 минут
ошибку исправил
проблема была тут
Assembler
1
pop ebp ; вместо pop bp
но программа выводит 15 вместо 25...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2013, 22:18     c++ и ассемблер
Посмотрите здесь:

C++ + Ассемблер = проблема C++
C++ Разработать простой двухпросмотровый ассемблер
C++ Разработать простой двухпросмотровый ассемблер
C++ Ассемблер.Вложенные циклы, обработка массивов.
C++ Вопрос к знатокам (ООП + ассемблер)
Формула , ассемблер. C++
Ассемблер , сопроцессор .(fld) C++
C++ немогу всавить ассемблер в код
Компилятор с С++ на Ассемблер C++
C++ Си VS Ассемблер
Работа с файлами. С++ и Ассемблер C++
C++ как перевести код c++ на ассемблер

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ab
75 / 75 / 1
Регистрация: 03.05.2012
Сообщений: 161
28.09.2013, 01:38     c++ и ассемблер #2
1. Если среда 32-битная, то не должно быть никаких BP, SP. Только EBP и ESP.
2. Первый параметр функции доступен через
Assembler
1
mov eax, [ebp+8]
Анд_Рей
2 / 2 / 0
Регистрация: 27.12.2009
Сообщений: 145
28.09.2013, 03:47  [ТС]     c++ и ассемблер #3
Цитата Сообщение от Ab Посмотреть сообщение
1. Если среда 32-битная, то не должно быть никаких BP, SP. Только EBP и ESP.
2. Первый параметр функции доступен через
Assembler
1
mov eax, [ebp+8]
теперь я получаю ошибку:
Unhandled exception at 0x00d81450 in asm.exe: 0xC0000005: Access violation reading location 0x0000f810.
Ab
75 / 75 / 1
Регистрация: 03.05.2012
Сообщений: 161
28.09.2013, 08:06     c++ и ассемблер #4
Еще модель должна быть flat, конечно же.
Yandex
Объявления
28.09.2013, 08:06     c++ и ассемблер
Ответ Создать тему
Опции темы

Текущее время: 15:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru