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

Асемблерный модуль и С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Решение краевой задачи для дифференциального уравнения методом сеток http://www.cyberforum.ru/cpp-beginners/thread595254.html
Мне в университете задали данную программу написать. но к сожалению на паре мы не успели пройти этот метод. не могу найти точный пример этого метода, не могли подсказать ? формулы , или прислать может ссылку на конкретный пример?
C++ Шаблон класса (параметризация класса) Нужна помощь и советы!!! Англо-русский словарь построен как список. Каждая компонента содержит английское слово, соответствующее ему русское слово и счетчик количества обращений к данной компоненте. Первоначально список формируется согласно английскому алфавиту. В процессе эксплуатации словаря при каждом обращении к компоненте в счетчик обраще¬ний добавляется единица. Составить программу,... http://www.cyberforum.ru/cpp-beginners/thread595249.html
C++ Индекс первого появления буквы в строке
Всем доброго времени суток! Есть вот такое задание: int find(char *S; char c) Найти место первого появления в строке S какой-либо буквы, если строка S не содержит этой буквы, возвращает значение –1. Задано сделать с помощью указателей и через While. Буду очень признателен за любую помощь.
String, что не так? C++
Здравствуйте! Помогите разобраться, что не так. # include <iostream> # include <cstring> using namespace std; class string { public: string (char*); void str_append(char*);
C++ Изменения массивов http://www.cyberforum.ru/cpp-beginners/thread595228.html
Здравствуйте. Подскажите пожалуйста. Вот допустим, существует 2а массива : 1:1 2 3 4 5; 2:6 7 2 4 9; как объеденить оба массива в новый ? (чтобы числа из обоих массивов не повторялись) что бы получилось так: 1 2 3 4 5 6 7 9
C++ Дан текстовый файл. Создать символьный файл Задание: Дан текстовый файл. Создать символьный файл, содержащий все символы, встретившиеся в тексте, включая пробел и знаки препинания (без повторений). Символы располагать в порядке убывания их кодов. # include <stdio.h> # include <string> #include <conio.h> # define size 80 int main() { подробнее

Показать сообщение отдельно
FinKeRosiN
3 / 2 / 0
Регистрация: 27.12.2010
Сообщений: 31

Асемблерный модуль и С++ - C++

03.06.2012, 20:30. Просмотров 382. Ответов 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
27
28
29
30
31
// lr5_book.cpp : Defines the entry point for the console application.
//
 
 
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
extern "C" int _stdcall AddTwo(int i1,int i2);
extern "C" int _stdcall Probel(char* buff);
static char buff[40];
void main()
{   
    int cnt = 0;
    cout << "Enter string: ";
    cin >> buff;
    cnt = Probel(buff);
    cout << "Cnt = " << cnt <<endl;
    getch();
}
 
    /*/
    int one,two,rez;
    cout << "enter int1: ";
    cin >> one;
    cout << "enter int2: ";
    cin >> two;
    rez = AddTwo(one,two);
    cout << "rez = " << rez <<endl;
    /*/
Assembler
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
.686
.model flat
    public _Probel@4
.data
    mlen        dw 0 ; длина самого короткого слова
    kol           dd 0 ; результат
 
.code
_Probel@4 proc
    push ebp
    mov ebp, esp
 
;------------------------------------------------------------------------------------------------
    mov ax,ds
    mov es,ax   
    cld     
    mov al,' '  
    mov cx,40
      lea di,[ebp+4]          ; [ebp+4] думаю что так надо было заменить имя буфера(строки)
    mov dx,di
 
 
contin:REPNE SCASW word ptr [ebp+4]
    je found
to_end: inc kol
    jmp exit1;    
    
found:  dec di
    cmp mlen,0
    je first
    sub di,dx
    cmp di,mlen
    jle new
    inc kol
    inc di
    add di,dx
    mov dx,di
    jmp contin
new:    mov mlen,di
    mov kol,0
    inc di
    add di,dx
    mov dx,di
    jmp contin
 
first:  
      sub di,dx
    mov mlen,di
    add di,dx
    inc di
inc di
    mov dx,di
    jmp contin  
exit1:
;-------------------------------------------------------------------------------
    mov eax,kol  ; возвращаю kol в модуль С++
    pop ebp
    ret 8
    
_Probel@4 endp
end
объект асемблерный код я компилирую через MASM 32 Editor
все вместе собирают 11й Visual Studio

Добавлено через 48 минут
может я не правильно ввожу строку?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru