# برنامه نویسی سطح پایین > برنامه نویسی اسمبلی خانواده x86 >  ضرب دو ماتریس

## luckyluck

آقا اگه بلد لطفا منو راهنمایی کنه
آخه چه جوری ضرب 2 ماتریس رو میشه نوشت
دم همتون گرم :خیلی عصبانی:

----------


## Younes

سلام
این برنامه برای ضرب دو ماتریس 2*3  و 3*2 امتحان شده و جواب داده. :لبخند:  

];;;;;;  ضرب دو ماتریس در هم : MAt1 (n*m)  *  MAT2 (m*k)  ----->  MAT3(n*k)

;;;;;;Macro:با توجه به سطروستون آفست یک خانه را در ماتریس محاسبه می کند
Ind	macro	row,col,c1
	mov	al,c1
	mul	row
	add	al,col
	endm

datass	segment
r 	db	0  ;    متغیر سطر
column	db	0   ;   متغیر ستون
M2	db	0  ;    متغیر کمکی سطرو ستون
n	=	2  ;    مقادیر برای این مثال خاص
m	=	3   ;   مقادیر برای این مثال خاص
k	=	2   ;   مقادیر برای این مثال خاص
mat1	db	1,2,3,4,5,6  ;   مقادیر برای این مثال خاص
mat2	db	1,2,3,4,5,6   ;  مقادیر برای این مثال خاص
mat3	dw	4 dup(?)
datass	ends

[RIGHT]codes	segment
	assume  ds:datass,cs:codes	
start:
	mov	ax,datass
	mov	ds,ax
	Mov	cx,n
	mov	r,0
L1:	push	cx
	mov	column,0
	mov	cx,k
L2:	push	cx
	mov	cx,m
	mov	dx,0
	mov	m2,0
L3:	Ind  r,m2,m
	mov	si,ax
	mov	bl,mat1[si]
	Ind  m2,column,k
	mov	si,ax
	mov	al,mat2[si]
	mul	bl
	add	dx,ax
	inc	m2
	loop	l3
	Ind  r,column,k
	mov	si,ax
	mov	mat3[si],dx
	inc	column
	pop	cx
	loop	l2
	inc	r
	pop	cx
	loop	l1


	mov	ah,4ch
	int	21h
codes	ends	
	end  start

----------

