Поиск:

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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

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



Мне необходимо заполнить массив ячеек факториалами от 1 до N, пока N не будет влезать в 16 разрядов, т.е. пока число вписывается в 16 бит. 
Т.е. должно выглядеть примерно так: 1, 2, 6, 24, 120... 

Я пока только учусь, поэтому извините, если вопрос глупый и простой...  smile 
PM   Вверх
Lonley
Дата 22.10.2007, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 7.10.2003
Где: северные ворота М урманск

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



Флаг переполнения, флаг переноса


--------------------
Земную жизнь пройдя до половины,
Я очутился в сумрачном лесу,
Утратив правый путь во тьме долины.
Каков он был, о, как произнесу,
Тот дикий лес, дремучий и грозящий,
PM MAIL ICQ   Вверх
fridkaratel
Дата 22.10.2007, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

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



а можно какой-нибудь код? чтобы разбираться... просто мне подкинули задачку для начинания изучения... решил так сказать проверить - смогу ли я потянуть ASM или нет... 

Если будет работающий код, так я смогу понять, что выполняется и на каком уровне происхдят те или иные операции... ;)
PM   Вверх
MAKCim
Дата 22.10.2007, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



Код

; FASM code
; cx содержит N
; es:di содержит адрес массива
    xor ax, ax
    inc ax
    xor bx, bx
@@:
    inc bx
    cmp bx, cx
    ja @F
    mul bx
    mov word [es:di], ax
    jnc @B
@@:
...



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
fridkaratel
Дата 22.10.2007, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

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



а можно поподробнее описать некоторые операции, например xor, mul и т.д.

Как я понял, cmp - это копирование, mov - перемещение на опр. адрес, inc - увеличение на 1, а остальны что делают?
PM   Вверх
MAKCim
Дата 22.10.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



fridkaratel, 
xor - исключающее ИЛИ (в данном случае используется для обнуления операнда)
cmp - сравнение операндов и установка соответствующих битов в FLAGS
mul - в данном случае умножение ax на bx, результат в dx:ax, установка CF в FLAGS если dx != 0 (условие выхода)
jnc - переход на первую @@ если CF == 0 (результат поместился в 16 разрядов)
ja - переход на вторую @@ если bx > cx (т. е очередное число превосходит N)

Это сообщение отредактировал(а) MAKCim - 22.10.2007, 10:20


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
fridkaratel
Дата 22.10.2007, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

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



большое спасибо! ;) буду разбираться и учиться, чтобы не задавать подобных вопросов ;)
PM   Вверх
Mikl_
Дата 16.11.2007, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Мне необходимо заполнить массив ячеек факториалами от 1 до N, пока N не будет влезать в 16 разрядов, т.е. пока число вписывается в 16 бит.
 
fridkaratel, для начала вооружаешься калькулятором -- 2 в 16 степени это  65535
10!=3.628.800 9!=362.880 значит всего 9 шагов, в si индекс массива
Код

. data 
mas dw 9 dup (0)
.code
       mov ax,1
       mov cx,9
       mov si,offset mas 
       mov bx,1
a1: mul bx
       lodsw
       inc bx
       loop a1

PM MAIL   Вверх
dumb
Дата 17.11.2007, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



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

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

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


 




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


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

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