| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Заполнение массива, пока не переполнится... |
| Автор: fridkaratel 22.10.2007, 08:03 |
| Мне необходимо заполнить массив ячеек факториалами от 1 до N, пока N не будет влезать в 16 разрядов, т.е. пока число вписывается в 16 бит. Т.е. должно выглядеть примерно так: 1, 2, 6, 24, 120... Я пока только учусь, поэтому извините, если вопрос глупый и простой... |
| Автор: Lonley 22.10.2007, 08:41 |
| Флаг переполнения, флаг переноса |
| Автор: fridkaratel 22.10.2007, 08:48 |
| а можно какой-нибудь код? чтобы разбираться... просто мне подкинули задачку для начинания изучения... решил так сказать проверить - смогу ли я потянуть ASM или нет... Если будет работающий код, так я смогу понять, что выполняется и на каком уровне происхдят те или иные операции... ;) |
| Автор: MAKCim 22.10.2007, 09:08 | ||
|
| Автор: fridkaratel 22.10.2007, 09:18 |
| а можно поподробнее описать некоторые операции, например xor, mul и т.д. Как я понял, cmp - это копирование, mov - перемещение на опр. адрес, inc - увеличение на 1, а остальны что делают? |
| Автор: MAKCim 22.10.2007, 10:20 |
| fridkaratel, xor - исключающее ИЛИ (в данном случае используется для обнуления операнда) cmp - сравнение операндов и установка соответствующих битов в FLAGS mul - в данном случае умножение ax на bx, результат в dx:ax, установка CF в FLAGS если dx != 0 (условие выхода) jnc - переход на первую @@ если CF == 0 (результат поместился в 16 разрядов) ja - переход на вторую @@ если bx > cx (т. е очередное число превосходит N) |
| Автор: fridkaratel 22.10.2007, 11:49 |
| большое спасибо! ;) буду разбираться и учиться, чтобы не задавать подобных вопросов ;) |
| Автор: Mikl_ 16.11.2007, 14:49 | ||||
fridkaratel, для начала вооружаешься калькулятором -- 2 в 16 степени это 65535 10!=3.628.800 9!=362.880 значит всего 9 шагов, в si индекс массива
|
| Автор: dumb 17.11.2007, 13:38 |
| только таки mov di,offset mas/cld/stosw |