Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обработка одномерных массивов 
:(
    Опции темы
Margaritka
Дата 16.12.2008, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте!
мне нужна программа для обработки одномерных массивов.
задача:
 Дана массив V1,..,V10.
Если среди первых пяти элементов есть отрицательный, то заменить элементы с шестого по десятый на среднее арифметическое всего ряда.

Код

program lab9;
uses crt;
label
 menu,zadacha,vopros,exit;
var
 v:array[1..10] of byte;
i:byte;
begin
  for i:=1 to 10 do
  begin
  gotoxy (2+i*4,3);
  read (f[i]);
  end;
asm
mov bx,10
lea bp,v
mov dx,v[0+1*2]
cmp dx,0005
je m1
m1: cmp v[0+1*2],0
jl m2
m2: add dx,v[5+1*2]
mov ax,dx
xor dx,dx
div bx
end;
  for i:=1 to 10 do
  begin
  gotoxy (2+i*4,3);
  write (v[i]);
  end;
end


Добавлено через 49 секунд
Вот.
Совсем не представляю, как это делать.
Помогите пожалуйста!!!
PM MAIL   Вверх
Mikl_
Дата 17.12.2008, 04:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Margaritka, судя по всему -- программа на паскале со вставкой на ассемблере -- вопрос, чего ты хочешь? Аналогичную программу целиком на ассемблере (ветка форума посвящена всетаки ассемблеру) или ассемблерную вставку в твою программу? Тогда, где должен заканчиваться паскаль и начинаться ассемблер и где, ассемблер должен закончится?
Прежде чем писать программу на ассемблере попробуй полностью написать ее на Паскале -- тебе самой будет понятнее. Ассемблер не самый легкий язык для обучения (в сравнении с тем же паскалем или бейсиком) 
PM MAIL   Вверх
Margaritka
Дата 17.12.2008, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



мне нужно прописать эту задачу с помощью вставки на ассемблере, а на паскале должен производиться только ввод и вывод
PM MAIL   Вверх
Mikl_
Дата 18.12.2008, 06:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Margaritka, мне необходимо для статистики: укажи пожалуйста название своего ВУЗа и факультета.
Лови код!
Код
program abc;
uses wincrt;
var v: array [1..10] of shortint;
i:byte;
label a1, a2, a3, a4, a5, a6;
begin
for i:=1 to 10 do begin
write('введите очередное число не меньше -128 и не больше 127 ');
readln(v[i]); {заполняем с клавиатуры массив v десятью элементами}
end;
asm
    xor dx,dx {очищаю регистр dx, чтобы там хранить сумму элементов для расчета среднего арифметического}
    mov bx,9 {десять элементов -- в ассемблере счет с 0 до 9}
    mov di,offset v {передаем адрес массива}
a1: mov al,[di][bx]  {начинаем считать среднее арифметическое}
    cbw          {расширяем содержимое AL с учетом знака до слова}
    add dx,ax    {получаем в dx сумму элементов}
    dec bx       {переходим к очередному элементу и уменьшаем счетчик}
    jns a1       {обработали все 10 элементов?}
    xchg ax,dx    {меняем местами содержимое dx и ax чтобы выполнить деление}
    mov bl,10     {делитель в bl}
    idiv bl       {делим с учетом знака, в al частное, в ah остаток}
    mov bx,4      {проверяем с 5-го по 1-ый элемент}
a2: test byte ptr [di][bx],80h  
    jnz a3 {если какойто элемент отрицательный перейдем на метку a3}
    dec bx {переходим к очередному элементу и уменьшаем счетчик}
    jns a2  {проверили все 5 элементов?}
    jmp a4         {если отрицательных элементов среди первых пяти нет -- уйдем на a4 и выйдем из ассемблерной вставки}
a3: mov bx,5        {заполняем с 10-го по 6-ой элемент средним арифметическим}
a6: mov [di][bx+4],al {в al среднее арифметическое}
    dec bx  {переходим к очередному элементу и уменьшаем счетчик}
    jns a6 {заполнили все 5 элементов?}
a4: end;
for i:=1 to 10 do write(v[i],' ');{выводим массив на экран}
end.


Это сообщение отредактировал(а) Mikl_ - 18.12.2008, 09:49
PM MAIL   Вверх
Margaritka
Дата 18.12.2008, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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


 




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


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

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