![]() |
|
![]() ![]() ![]() |
|
dimas_sceen |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 8.1.2008 Репутация: нет Всего: нет |
Здравствуйте!
Помогите решить задачу. Заданы два массива А и В по 20 элементов. Создать массив С, элемент С[i] которого равен А[i]-B[i] при A[i]>B[i] и B[i]-A[i] при A[i]<B[i]. Это должна быть функция на ассемблере, которая будет вызивытся с программы на С++.
и код на ассемблере
Сейчас врезультате функция записует чтото в А и B масив C отсается пустым. Помогите найти ошибки. Спасибо! |
||||
|
|||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
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:06 |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
dimas_sceen,
добавь после mov ds,ax строку mov es,ax |
|||
|
||||
dimas_sceen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 8.1.2008 Репутация: нет Всего: нет |
Mikl_,
В массив С записует только результат при B[i]>A[i]. A при A[i]>B[i] не записует.
Немного не так. Нужно if a>=b then a-b>=0 if a<b then b-a>0 Это сообщение отредактировал(а) dimas_sceen - 19.6.2009, 11:12 |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
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 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 8.1.2008 Репутация: нет Всего: нет |
Извини, я нетак понял. Техзадание тоже. От 2 результата функции. 1-й ![]() 2-й ![]() Масив С инициализирован значениями "-1" |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
dimas_sceen,
внимательно просмотри текст программы -- у тебя ошибка ![]() |
|||
|
||||
turbanoff |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 6.4.2009 Репутация: нет Всего: 1 |
есть предложение, вместо мудреных операций нахождения модуля числа просто, сравнить ax с 0
и если надо применить neg так я считаю, хотя бы понятней.... Это сообщение отредактировал(а) turbanoff - 19.6.2009, 15:11 |
|||
|
||||
dimas_sceen |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 8.1.2008 Репутация: нет Всего: нет |
Вроде все правельно, но не работает так как нада ![]() Это сообщение отредактировал(а) dimas_sceen - 19.6.2009, 16:02 |
||||||
|
|||||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
dimas_sceen,
убери 16 строку shr cx,1 и будет тебе счатье! |
|||
|
||||
dimas_sceen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 8.1.2008 Репутация: нет Всего: нет |
Mikl_,
Спасибо за помощь, все работает как нада ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |