Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с массивами 
:(
    Опции темы
boobie
Дата 19.5.2012, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Есть задачка: ввести число n, затем вести n трехзначных десятичных чисел, вывести их в порядке убывания в шестнадцатеричном виде.

С вводом\выводом\переводом из разных с.счислен. проблем нет, а с массивами есть.

Как объявить массив? Как ввести элементы массива (и вообще как работать с элементами массива)? Как вывести массив?

Было бы очень хорошо, если бы кто-нибудь сделал вот такую статью, только про массивы на ассемблере: 
http://forum.vingrad.ru/faq/topic-158522.html

Работаю в ТАСМе.
PM   Вверх
iff
Дата 19.5.2012, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Цитата(boobie @  19.5.2012,  08:29 Найти цитируемый пост)
Как объявить массив?

Код

.data
; ...
n dw ?
arr dw 1000 dup (?)

максимальное количество элементов - 1000.


Цитата(boobie @  19.5.2012,  08:29 Найти цитируемый пост)
Как ввести элементы массива (и вообще как работать с элементами массива)? 

Код

.code
; ...
mov di, offset arr
cld
mov cx, n
c1:
call inint
stosw
loop c1

(es должен указывать на сегмент данных)

Цитата(boobie @  19.5.2012,  08:29 Найти цитируемый пост)
Как вывести массив?

Код

.code
; ...
mov si, offset arr
cld
mov cx, n
c1:
lodsw
call outhex
loop c1

(в подрограмму outhex добавте переход на новую строку).


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
boobie
Дата 19.5.2012, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



 smile  smile  smile 
Эээээ... А как обратится к определенному элементу массива...
Т.е. типа такого
for (i=0;i<n;i++)
{
    cin>>a[i]; //это ввод
}

for (i=0;i<n;i++)
{
    if (a[i]>a[i+1])
        {
           x=a[i+1]; a[i+1]=a[i]; a[i]=x;  //а это перестановка элемнтов
        }
}

Как работать с переменными??
Например в С++ int i=5;

Т.е. у меня получается так:
1. запись числа в регистр (например) СХ,
2. а дальше как? как заполнить массив?

Не бейте сильно, я ток знакомлюсь с АСМ-ом...

Это сообщение отредактировал(а) boobie - 19.5.2012, 13:36
PM   Вверх
iff
Дата 19.5.2012, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Цитата(boobie @  19.5.2012,  13:01 Найти цитируемый пост)
Эээээ... А как обратится к определенному элементу массива...
Т.е. типа такого
for (i=0;i<n;i++)
{
    cin>>a[i]; //это ввод
}

Именно это (ввод в цикле каждого элемента) и делает код, который я написал в прошлом сообщении.

Цитата(iff @  19.5.2012,  11:52 Найти цитируемый пост)

Код

.code
; ...
mov di, offset arr ;в di загружаем адрес массива
cld ;очищаем флаг направления, массив будет обрабатываться от первого элемента до последнего ( а не наоборот)
mov cx, n ;цикл выполняем n раз
c1: ;начало цикла
call inint ;ввести число
stosw ;записать его в текущий элемент массива и перейти к следующему. (ax помещается по адресу es:di и di увеличивается на 2)
loop c1 ;конец цикла



Цитата(boobie @  19.5.2012,  13:01 Найти цитируемый пост)
Как работать с переменными??

 smile 
Думаю нет смысла мне сейчас это всё расписывать, т.к. вы можете найти справочник и прочитать.

Добавлено через 1 минуту и 44 секунды
А что косается сортировки - писал в разделе "Центр помощи" в теме "Сортировка пузырьком".


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
500mhz
Дата 23.5.2012, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

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



обычно доступ к элементам массива делаеться примерно так

mov ax,[es:si+bx] 

где si = адрес массива
bx = номер элемента массива


--------------------

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

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

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


 




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


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

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