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

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

Войти
Регистрация
Восстановить пароль
 
agusikdeon
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 9
#1

asm вставка в C++ - C++

22.11.2010, 16:29. Просмотров 763. Ответов 1
Метки нет (Все метки)

есть код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "stdafx.h"
#include <iostream>
#include <fstream>
 
using namespace std;
 
slozh(int* pi1, int si1);
 
int _tmain(int argc, _TCHAR* argv[])
{int massiv[]={1,3,8,16,6,7,11,4,6};
int abc=sizeof(massiv)/4;
slozh (massiv,abc);
 
cout<<abc<<endl;
return 0;}
slozh(int* pi1, int abc)
{int sizea=abc;
 
_asm{
    mov ECX,dword ptr sizea
    push EBX
    mov EBX,EDI
    mov EDI,dword ptr pi1
    mov Eax,0
    mov abc,Eax
k:  mov AX, word ptr [EDI]
    add word ptr abc, AX
    mov AX, word ptr [EDI+2]
    adc word ptr abc+2, AX
    add EDI, 12
    loop k
    mov EDI,EBX
    pop EBX
}
 
return abc;}
функция должна складывать каждый третий элемент массива
а потом нужно вывести это число на экран
но программа постоянно выводит 9
как будто с переменной abc ничего не происходит
помогите пожалуйста сделать!
Заранее Спасибо)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2010, 16:29     asm вставка в C++
Посмотрите здесь:

C++ c++ и ASM
Asm + C++ C++
asm вставка в C++ C++
asm вставка в C++ часть 2 C++
C++ и ASM C++
C++ C++ И ASM
asm в VS C++
c++ asm C++
C++ Вставка asm, адрес члена локального объекта
Вставка asm в С++ C++
Asm вставка и возвращаемое системе значение C++
Asm вставка в С++ возвести число в степень C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4262 / 2794 / 219
Регистрация: 12.12.2009
Сообщений: 7,122
Записей в блоге: 1
Завершенные тесты: 1
22.11.2010, 19:29     asm вставка в C++ #2
А вам не кажется, что вы перемудрили с АСМом? Вот, все работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <fstream>
 
using namespace std;
 
int slozh(int* pi1, int si1);
 
int main()
{int massiv[]={1,3,8,16,6,7,11,4,6};
int abc=sizeof(massiv)/4;
abc=slozh (massiv,abc/3);
 
cout<<abc<<endl;
cin.peek();
return 0;}
int slozh(int* pi1, int abc)
{
_asm{
   mov ebx,pi1
   mov ecx,abc
   xor eax,eax
L: add eax,[ebx]
   add ebx,12
   loop L
    }
}
Добавлено через 3 минуты
и еще, ваш код вообще компилится?
Yandex
Объявления
22.11.2010, 19:29     asm вставка в C++
Ответ Создать тему
Опции темы

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