algoritmo de endereçamento de uma memória de matrizes triangulares usando assembly

Eu estava fazendo um projeto em ASM sobre triângulo pascal usando NASM

Portanto, no projeto, você precisa calcular o triângulo pascal da linha 0 à linha 63

meu primeiro problema é onde armazenar os resultados do cálculo -> memória

segundo problema, que tipo de armazenamento eu uso na memória, para entender o que quero dizer, tenho três maneirasprimeiro declarar ummatrizes completas então será assim

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

mas o problema dessa maneira que metade das matrizes não são usadas que fazem meu programanão eficiente então vamos o segundo método está disponível

que é declarado para cada linha um rótulo para memóriapor exemplo :

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

essa maneira de fazer é como fazer à mão,

alguns outros da classe tentam usar macro, como você pode veraqui mas eu não entendo

Por enquanto, tudo bem

vamos para o último que eu usei, que é como o primeiro, mas eu uso ummatrizes triangulares , como é que, declarando apenas a quantidade de memória que eu preciso

então, para armazenar a linha 0 à linha 63 linha do triângulo pascal, é uma matriz de triângulo porque cada nova linha eu adiciono uma célula

Eu aloque 2080 dword para as matrizes triangulares como é isso ?? explique até 2080 dword:

                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 

Eu dei a cada número 1 dword

okey agora criamos a memória para armazenar resultados, vamos começar o cálculo

primeiro# no triângulo pascal você tem todas as célulaslinha 0 tem valor 1

Farei isso em pseudo-código para que você entenda como eu coloco um em todas as células da linha 0:

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

segunda parte no triângulo pascal é ter oúltima linha de cada linha igual a 1

Vou usar pseudo código para simplificar

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

Eu começo de i igual a 2 porque i = 0 (i = 1) é a linha0 (linha1) e a linha0 (linha1) está cheia porque mantém apenas um valor (reboque), como digo na explicação acima

então o pseudo código de reboque fará meu retângulo parecerem memória :

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

agora vem a parte difícil é o cálculo usando esse valor no triângulo para preencher todas as células do triângulo

vamos começar com a ideia aqui

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]

meu problema Não consegui quebrar essa relação usando a instrução ASM porque tenho um

matrizes triangulares com as quais é estranho trabalhar, alguém pode me ajudar a quebrá-lo usando uma relação ou pseudo-código ou código ASM muito básico?

questionAnswers(1)

yourAnswerToTheQuestion