دوست عزیز در زبان اسمبلی می تونید به دو شکل یه آرایه دوبعدی رو در اسمبلی تعریف کنید نکته ای که باید بهش توجه کنید اینه که آرایه های دوبعدی در حافظه به صورت سطری یا ستونی ذخیره میشه یعنی دوبعدی در نهایت به یک بعدی تبدیل میشه و با فرمول خاصی می تونیم یک بعدی رو به عنوان دوبعدی استفاده کنیم در زیر آرایه دو بعدی به صورت یک بعدی تعریف شده و با استفاده از یک زیربرنامه با دادن سطر و ستون می تونید محتوای اون ماتریس رو در بیارید.
تعریف در قسمت Data:
کد:
N equ 4
sizerow db N
sizeindex db 1
row db 0
col db 0
address dw 0
MatrixA db 16 dup(0)
ماکروی برداشتن محتوای آرایه دو بعدی:
کد:
recive macro M,i2,j2,n1
mov cl,i2
mov ch,j2
mov row,cl
mov col,ch
call calcindexarray
mov di,address
mov cl,byte ptr M[di]
mov n1,cl
endm
زیر برنامه برای محاسبه سطر و ستون آرایه دوبعدی:
کد:
calcindexarray proc
mov address,00
mov di,0
mov ah, 0
mov al, row
dec al
mul sizerow
mov di, ax
mov al, col
mov ah, 00
dec ax
mul sizeindex
add di, ax
mov address,di
ret
calcindexarray endp