Aссемблерные вставки в Cpp

Тема в разделе "Другие", создана пользователем ge4r, 17 окт 2010.

Статус темы:
Закрыта.
  1. ge4r

    ge4r Гость

    Приветствую,нужен направляющий пинок по решению задачки)
    задача в следующем
    Разделить массив на две части, поместив в первую эле-менты, большие среднего арифметического их суммы, а во вторую - меньшие (части не сортировать).Обязательно использовать адресную арифметику

    На языке высокого уровня естественно пишется за 5 строк кода,но тут надо на асме.

    то есть есть метод,в который я передаю массив,предварительно введенный пользователем. далее начинается вставка и вот тут загвоздка. как в асме создать массив и крутить-вертеть его элементами?

    пока получилось вот что
    Код (Text):
    #include "stdafx.h"
    #include <iostream>

    using namespace std;


    void task1(){
    int arr[500],narr[500],k1=0,k2=0;
    int len;
    cout << "Enter array's length" << endl;
    cin >> len;
    cout << "Enter the elements" << endl;
    for(int i = 0; i < len; ++i)
    cin >> arr[i];
    k2=len;

    __asm{
    mov ecx,len //длинну храним в ecx
    xor eax,eax //обнуление регистров eax,ebx
    xor ebx,ebx

    cycle1:
    add eax,arr[ebx] //накапливаем сумму в eax
    add ebx,4 //увеличиваем счетчик
    loop cycle1;

    idiv eax,ecx
    mov edx,eax //помещаем среднее арифметическое в edx
    cycle2:
    xor ebx,ebx
    mov eax,arr[ebx]
    add ebx,4
    cmp eax,edx //сравниваем ср.арифм. и текущий элемент

    JG  point1 // если текущий элемент больше идем на метку 1
    JLE point2 // если текущий элемент меньше идем на метку 2
    endcycle2:
    loop cycle2

    jmp quit
    point1:
    mov narr[k1],eax //помещаем элемент в левую половину массива
    inc(k1) //смещаем индекс свободной позиции слева
    jmp endcycle2
    point2:
    mov narr[k2],eax // помещаем элемент в правую половину массива
    dec(k2) // смещаем индекс свободной позиции спарава
    jmp endcycle2

    quit:

    }
    }
     
  2. ge4r

    ge4r Гость

    вопрос решен
     
Загрузка...
Похожие Темы - Aссемблерные вставки Cpp
  1. acorn
    Ответов:
    1
    Просмотров:
    7.517
Статус темы:
Закрыта.

Поделиться этой страницей