этот ряд заканчивается рядом длины

ал проект в ASM о треугольнике Паскаля, используя NASM

поэтому в проекте нужно рассчитать паскаль треугольник от линии 0 до линии 63

Моя первая проблема - где хранить результаты расчетов -> память

Вторая проблема, какой тип памяти я использую в памяти, чтобы понять, что я имею в виду, у меня есть 3 способапервый объявитьполные матрицы так будет так

memoryLabl:  resd 63*64     ; 63 rows of 64 columns each

но проблема в том, что половина матриц не используется, что делает мою программуне эффективный так что давайте пойдем второй метод доступен

который объявляет для каждой строки метку для памятинапример :

line0: dd   1
line1: dd  1,1
line2: dd 1,2,1      ; with pre-filled data for example purposes
...
line63: resd 64      ; reserve space for 64 dword entries

этот способ, как сделать это вручную,

некоторые другие из класса пытаются использовать макрос, как вы можете видетьВот но я не понимаю

Все идет нормально

давайте перейдем к последнему, который я использовал, который похож на первый, но я используютреугольные матрицы Как это, объявив только объем памяти, который мне нужен

поэтому, чтобы сохранить строку от 0 до 63 строки паскаль треугольника, это дает мне матрицы треугольника, потому что каждую новую строку я добавляю ячейку

Я выделил 2080 dword для матриц треугольника, как это? объяснить 2080 мечом:

                okey we have line0 have 1 dword /* 1 number in first line */
                             line1 have 2 dword /* 2 numbers in second line */
                             line2 have 3 dword /* 3 numbers in third line */
                             ...
                             line63 have 64 dword /* 64 numbers in final line*/
                  so in the end we have 2080   as the sum of them 

У меня есть каждый номер 1 меч

хорошо, теперь мы должны создать память для хранения результатов, давайте начнем расчет

первый# в треугольнике Паскаля у вас есть все клетки встрока 0 имеют значение 1

Я сделаю это в псевдокоде, чтобы вы поняли, как я поместил один во все ячейки строки 0:

s=0
for(i=0;i<64;i++):
     s = s+i
     mov dword[x+s*4],1   /* x is addresses of  triangle matrices */

вторая часть в паскальском треугольнике должна иметьпоследний ряд каждой строки равно 1

Я буду использовать псевдокод, чтобы сделать его простым

s=0
for(i=2;i<64;i++):
     s = s+i
     mov dword[x+s*4],1

Я начинаю с i, равного 2, потому что i = 0 (i = 1) - это line0 (line1), а line0 (line1) заполнено, потому что содержит только одно (tow) значение, как я говорю в объяснении выше.

так что буксирный псевдокод сделает мой прямоугольник похожим нав памяти :

1
1  1
1      1
1          1
1             1
1                 1
1                     1
1                         1
1                              1
1                                 1
...
1                                        1

Теперь самое сложное - это вычисление с использованием этого значения в треугольнике, чтобы заполнить все ячейки треугольника.

давайте начнем с идеи здесь

let's take cell[line][row]

we have cell[2][1] = cell[1][0]+cell[1][1]
and     cell[3][1]= cell[2][0]+cell[2][1]
        cell[3][2]= cell[2][1]+cell[2][2]

in **general** we have 
        cell[line][row]= cell[line-1][row-1]+cell[line-1][row]

моя проблема Я не мог разорвать это отношение, используя инструкцию ASM, потому что у меня есть

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

Ответы на вопрос(1)

Ваш ответ на вопрос