Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите решить задачку на Ассемблере, (A * X2 + B * X)*Y + C div (D * X + E) 
:(
    Опции темы
gepard88_88
  Дата 24.12.2006, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 24.12.2006

Репутация: нет
Всего: нет




(A * X^2 + B * X)*Y + C div (D * X + E)


Примечания к заданиям:
-    Реализовать вычисление заданного выражения как ассемблерную вставку в программе на языке Паскаль.
-    Программа на Паскале должна запрашивать значения переменных и выводить результат на экран.
-    Все переменные являются целочисленными.


Это сообщение отредактировал(а) gepard88_88 - 25.12.2006, 18:52
PM MAIL   Вверх
anwe
Дата 25.12.2006, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



gepard88_88, а ты и b44 не одно и тоже?
http://forum.vingrad.ru/index.php?showtopi...st&p=972809
PM MAIL   Вверх
Konstantinopol
Дата 10.2.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 10.2.2007

Репутация: -1
Всего: нет



Помогите написать на Cи со вставками Ассеблера под DOS
1.Отсорировать пять чисел по возрастанию.
2.Дан массив размерности n.Найти первый отрицательный элемент.
3.В строке заменить все символы '1' символом '0', а символы '0' символом '11'
PM MAIL   Вверх
JAPH
Дата 10.2.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 5
Всего: 23



Да, господа, кросс-постинг 4ever... А Konstantinopol (G44) ещё и на русфак написал. smile

To gepard88_88:
Код

var a,b,c,d,e,x,y,res:integer;
begin
  write('A = '); readln(a);
  write('B = '); readln(b);
  write('C = '); readln(c);
  write('D = '); readln(d);
  write('E = '); readln(e);
  write('X = '); readln(x);
  write('Y = '); readln(y);
  asm
    mov  bx, x
    mov  ax, b
    imul bx
    xchg bx, ax
    imul ax
    imul a
    add  ax, bx
    imul y
    mov  res, ax
    mov  ax, d
    imul x
    add  ax, e
    mov  bx, ax
    mov  ax, c
    idiv bx
    add  res, ax
  end;
  write('(A * X^2 + B * X) * Y + C div (D * X + E) = ', res); readln
end.


To Konstantinopol первые две задачи:
Код

#include <iostream>
using namespace std;
int main() {
    int a[5] = {4, 7, -1, 0, 3};
    asm {
       pusha
       lea  esi, a
       mov  ecx, 4
@1:    mov  edi, esi
       push ecx
@2:    mov  eax, [edi]
       cmp  eax, [edi + 4]
       jl   @3
       xchg [edi + 4], eax
       mov  [edi], eax
@3:    add  edi, 4
       loop @2
       pop  ecx
       loop @1
       popa
    }
    for (int i = 0; i < 5; i++) cout<<a[i]<<" ";
    cout<<"\n";
    const int n = 10;
    int ar[n] = {4, 0, 2, 4, 3, 3, -5, 3, 7, 5};
    int r;
    asm {
       pusha
       push es
       push ds
       pop  es
       lea  edi, ar
       lea  esi, [edi + 4]
       xor  eax, eax
       mov  ecx, n
@4:    scasd
       jg   @5
       loop @4
       mov  r, -1
       jmp  @6
@5:    sub  edi, esi
       shr  edi, 2
       mov  r, edi
@6:    pop  es
       popa
    }
    (r < 0) ? cout<<"No negative elements" : cout<<ar[r];
    return 0;
}


И третья вдогонку.
Код

#include <iostream>
using namespace std;
int main() {
    char s[] = "234105431591045\0";
    char buf[30];
    asm {
       pusha
       push es
       push ds
       pop  es
       lea  esi, s
       lea  edi, buf
@1:    lodsb
       cmp  al, '0'
       jne  @2
       mov  al, '1'
       stosb
       jmp  @3
@2:    cmp  al, '1'
       jne  @3
       mov  al, '0'
@3:    stosb
       test al, al
       jne  @1
       pop  es
       popa
    }
    cout<<buf;
    return 0;
}


Если что не так, сильно не бить - официально мы такого не проходили smile

Это сообщение отредактировал(а) JAPH - 10.2.2007, 15:24


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0796 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.