سورس ضرب دو ماتریس به زبان اسمبلی همراه کد برنامه
در این پست از سایت نوآوران گرمی برای شما کاربران عزیز، سورس ضرب دو ماتریس به زبان اسمبلی همراه کد برنامه را آماده کرده ایم که امیدواریم مورد استفاده قرار گیرد.
در این پروژه کاربر ابتدا محتوای ماتریس اول و ماتریس دوم را با اعداد مورد نظر خود پر می کند سپس برنامه این دو ماتریس را به هم ضرب کرده و نتیجه نهایی را در ماتریس سومی قرار میدهد و در نهایت محتوای و یا همان نتیجه رو در خروجی نمایش میدهد. در سورس ضرب دو ماتریس برای راحتی و یادگیری سریع کدها به صورت ماکرو نوشته شده است.
در ادامه می توانید قسمت های از سورس ضرب دو ماتریس به زبان اسمبلی همراه کد برنامه را مشاهد کنید.
تکه کد سورس ضرب دو ماتریس به زبان اسمبلی:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | <strong><span style="color: #ff0000;">جهت دریافت کد کامل این برنامه از قسمت خرید محصول اقدام کنید</span></strong> exit macro ماکرو خروج از برنامه mov ax,4c00h int 21h endm ;---------------------- gets macro str ماکروی گرفتن رشته از کاربر وقرار دادن ان در استر pushreg lea dx,str mov ah,0ah int 21h popreg endm ;---------------------- prints macro str ماکروی چاپاطلاعات استر pushreg lea dx,str mov ah,09h int 21h popreg endm ;---------------------- getc macro ماکروی گرفتن کاراکتر از کاربر pushreg mov ah,01h int 21h popreg endm ;---------------------- printc macro c ماکروی چاپ کاراکتر pushreg mov ah,02h mov dl,c popreg endm ;---------------------- setvalue macro M,i1,j1,value مقدار ولیو را در خانه ای و جی ماتریس ام قرار میدهد pushreg mov cl,i1 mov ch,j1 mov row,cl mov col,ch pushreg call compute_addres popreg mov di,address mov al,value mov byte ptr M[di],al popreg endm ;---------------------- getvalue macro M,i2,j2,n1 خانه ای و جی ماتریس ام را خوانده و در ان قرار میدهد pushreg mov cl,i2 mov ch,j2 mov row,cl mov col,ch call compute_addres mov di,address mov cl,byte ptr M[di] mov n1,cl popreg endm ;---------------------- .model small انتخاب مدل حافظه ای کوچک .stack 64 تعریف اندازه پشته برنامه .data قسمت داده ها strlist1 label byte تعریف برچسب برای گرفتن عدد از کاربر max1 db 10 len1 db ? str1 db 11 dup('$') str2 db 5 dup(' '),'$' متغیر کمکی برای چاپ عدد num db ? indexL db 'index[ $' indexR db ' ]= $' msgtitle db " *************** Zarb Matrix ***************",10,13,10,13,'$' msggetMA db "Please Enter the Matrix A:",10,13,'$' msggetMB db 10,13,"Please Enter the Matrix B:",10,13,'$' msgprinMC db 10,13,"Result Matrix C:",10,13,'$' newline db 10,13,'$' تعریف 3 متغیر برای اندیس حلقه در ضرب i db 0 j db 0 k db 0 N equ 4 تعریف ثابت برای ابعاد ماتریس base db N تعداد بایت استفاده شده در هر سطر two db 1 ظرفیت هر خانه row db 0 متغیر کمکی برای سطر ماتریس col db 0 متغیر کمکی برای ستون ماتریس address dw 0 متغیر کمکی برای پبدا کردن ادرس اندیس ماتریس n1 db 0 n2 db 0 n3 db 0 MA db N*N dup(0) ;int MA[4,4] تعریف ماتریس MB db N*N dup(0) ;int MB[4,4] MC db N*N dup(0) ;int MC[4,4] .code main proc far تابع اصلی برنامه mov ax,@data mov ds,ax ;========================= prints msgtitle چاپ عنوان برنامه prints msggetMA چاپ پیغام getmatrix MA گرفتن اطلاعات ماتریس اول prints msggetMB چاپ پیغام getmatrix MB رفتن اطلاعات ماتریس دوم zarb ضرب ماتریس اول در دوم و ذخیره در ماتریس سوم prints msgprinMC چاپ پیغام printmatrix MC نمایش محتوای ماتریس سوم getc exit main endp end main |





















(344 امتیاز از 88 رای)








سلام پروژه می خوام برای معکوس کردم دوعدد به همراه سورس کدش برای انجامش وقت میدید فقط خواهشا اگه میشه کار منو می تونید زود راه بندازین خیلی عجله دارم . ممنون و متشکر .