Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ассемблер (массив)

30K
23 апреля 2009 года
Kraken
17 / / 03.05.2008
Проблемы с ассемблером...дали задание, ни как не спраиться...
Найти результат умножения максимального элемента массива на 25 и записать его в Rg BX, Rg CX (формат элементов массива - слово).

Исходный массив хранится в сегменте данных, результаты необходимо сохранить в РОНы.
:confused:
7
23 апреля 2009 года
@pixo $oft
3.4K / / 20.09.2006
Какие проблемы?Ищем сначала максимальный элемент,потом умножаем его на 25:
 
Код:
Mov AX,25
Mul Arr     ;I–индекс максимального элемента
Mov BX,DX
Mov CX,AX
В результате получим в DX старшую часть,в AX–младшую;соответственно,распределяем их в BX и CX.Можно наоборот,если надо

P.S.DOS,я так понимаю?
30K
23 апреля 2009 года
Kraken
17 / / 03.05.2008
ага под дос)
проблема то в том, что я ваобще мало смыслю в ассемблере, и не знаю как обявить массив инайти его макс элемент(
7
23 апреля 2009 года
@pixo $oft
3.4K / / 20.09.2006
Что ж ты,не зная ассемблера,за такую задачу взялся?Хотя бы подучил его до уровня задачи

Объявляется массив,например,так:
 
Код:
Arr DW 25 Dup(0)
(этот код создаст массив из 25 инициализированных нулём значений).Или так:
 
Код:
Arr DW <значение 1>,<значение 2>,<значение 3>,…,<значение N>
(в этом случае получишь массив с нужным тебе количеством инициализированных слов)

А вообще,рекомендую тебе сначала изучить ассемблер,дабы хотя б такие простые задачи решить самому
30K
23 апреля 2009 года
Kraken
17 / / 03.05.2008
Да вот именно сейчас я его и изучаю...
Просто первое задание я сам осилил, а на массивах застопорился.
Я сейчас то что получилось выложу посмотриш на предмет ошибок, если не затруднит?
А за подсказки спасибо)
PS
Совсем забыл спрасить, а как найти макс элемент массива?
или подразумеваеццо что это нужно делать в ручную?
7
24 апреля 2009 года
@pixo $oft
3.4K / / 20.09.2006
Выкладывай,проверю…Только под DOS у меня особо не раскомпилишься:)
А максимальный элемент массива ищется любым из возможных способов.Как вариант,присваиваешь некой переменной значение 1го элемента,а затем сравниваешь поочерёдно со всеми последующими.Если больше,то запоминаешь
Вот вариант(не буду делить по секциям):
Код:
Arr DW 1,5,2,4,7,34,23,7
Mov AX,Arr
XOr DX,DX
Mov BX,7
FindMax:
Cmp Arr[BX*2],AX
JBE @F
    Mov AX,Arr[BX*2]
    Mov DX,BX
@@:
Dec BX
JNZ FindMax
Что-то я,видимо,подзабыл,как сравнивать числа на низком уровне…:rolleyes:
Отлаживал в 32-битной среде,соответственно,регистры тоже были такой же разрядности.Не знаю,как они отреагируют на то,что я в коде изменил их на 16 разрядов.Пробуй:)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог