Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Asm для начинающих > [MASM] арифметика элементов масcивов |
Автор: dimas_sceen 18.6.2009, 17:59 | ||||
Здравствуйте! Помогите решить задачу. Заданы два массива А и В по 20 элементов. Создать массив С, элемент С[i] которого равен А[i]-B[i] при A[i]>B[i] и B[i]-A[i] при A[i]<B[i]. Это должна быть функция на ассемблере, которая будет вызивытся с программы на С++.
и код на ассемблере
Сейчас врезультате функция записует чтото в А и B масив C отсается пустым. Помогите найти ошибки. Спасибо! |
Автор: Mikl_ 19.6.2009, 03:41 | ||
dimas_sceen, Заданы два массива А и В по 20 элементов. Создать массив С, элемент С[i] которого равен А[i]-B[i] при A[i]>B[i] и B[i]-A[i] при A[i]<B[i]. Перефорулирую твою задачу if a>=b then a-b>=0 if a<b then a-b<0 отсюда c[i]:=abs(a[i]-b[i])
![]() |
Автор: Mikl_ 19.6.2009, 06:20 |
dimas_sceen, добавь после mov ds,ax строку mov es,ax |
Автор: dimas_sceen 19.6.2009, 11:05 | ||
Mikl_, В массив С записует только результат при B[i]>A[i]. A при A[i]>B[i] не записует.
Немного не так. Нужно if a>=b then a-b>=0 if a<b then b-a>0 |
Автор: Mikl_ 19.6.2009, 12:28 |
dimas_sceen, Я не понял -- моя программа не работает, или ты техзадание меняешь? Что значит "Нужно if a>=b then a-b>=0 if a<b then b-a>0 if a>=b then с = a-b = |a - b| if a<b then c= b-a = -(a-b) = |a - b| ![]() |
Автор: dimas_sceen 19.6.2009, 13:35 | ||
Извини, я нетак понял. Техзадание тоже. От 2 результата функции. 1-й http://img40.imageshack.us/i/img1s.jpg/ 2-й http://img40.imageshack.us/i/img2h.jpg/ Масив С инициализирован значениями "-1" |
Автор: Mikl_ 19.6.2009, 15:01 |
dimas_sceen, внимательно просмотри текст программы -- у тебя ошибка ![]() |
Автор: turbanoff 19.6.2009, 15:10 | ||
есть предложение, вместо мудреных операций нахождения модуля числа просто, сравнить ax с 0
и если надо применить neg так я считаю, хотя бы понятней.... |
Автор: dimas_sceen 19.6.2009, 15:55 | ||||||
Вроде все правельно, но не работает так как нада ![]() |
Автор: Mikl_ 22.6.2009, 08:26 |
dimas_sceen, убери 16 строку shr cx,1 и будет тебе счатье! |
Автор: dimas_sceen 23.6.2009, 13:24 |
Mikl_, Спасибо за помощь, все работает как нада ![]() |