برای مشاهده مفیدترین ارسال در این موضوع اینجا کلیک کنید

نمایش نتایج: از شماره 1 تا 2 از مجموع 2
Like Tree4نفر پسندیدند
  • 4 ارسال توسط MoJTaBa

موضوع: برنامه ضرب 2 ماتریس n در n در زبان اسمبلی به همراه فایل آموزش کامل - Multiplies 2 Matrices

  1. #1
    مدیر بازنشسته
    تاریخ عضویت
    2011 October
    ارسال ها
    29
    تشکر
    118
    تشکر شده 153 بار در 36 پست
    نوشته های وبلاگ
    1


    1 امتياز مثبت از 3 راي
    آيا اين پست براي شما سودمند بود؟ بله | خیر

    برنامه ضرب 2 ماتریس n در n در زبان اسمبلی به همراه فایل آموزش کامل - Multiplies 2 Matrices

    در ابتدا برای تعریف ماتریس n*n ، به تعداد n به توان 2 از خانه حافظه به ماتریس اختصاص می دهیم که N خانه اول را به عنوان سطر اول ماتریس ، N خانه دوم را به عنوان سطر دوم و ... در نظر میگیریم.
    سپس یک EQU با نام N تعریف میکنیم که نمایانگر طول سطر و ستون ماتریس مربع ما است. چون برنامه ی ضرب دو ماتریس احتیاج به 3 حلقه دارد، از LINE ، COLUMN و COUNTER برای ایجاد این سه حلقه استفاده میکنیم که مقدار اولیه آنها برابر N است. از TEMP هم به عنوان ظرفی برای محاسبه هر یک از درایه های ماتریس حاصل استفاده میکنیم. X و P هم به عنوان دو متغییر کمکی در طول برنامه استفاده می گردد.
    قبل از شروع حلقه های محاسبه ، آدرس ماتریس ها A ، B و نتیجه را در سه ثبات SI ، BX و DI می ریزیم.( در آدرس دهی غیر مستقیم از طریق ثبات مجاز به استفاده از DI ، SI و BX در Data Segment و BP در Stack Segment می باشیم. ) با این کار آدرس اولین درایه ی ماتریس های A و B و نتیجه به ترتیب در SI و BX و DI ریخته می شود.
    حال سه حلقه با نام های Back1 ، Back2 و Back3 با استفاده از Line ، Column و Counter ایجاد می کنیم که Back1 برای محاسبه سطر به سطر ماتریس نتیجه است که در درون خود Back2 را دارد که وظیفه آن محاسبه درایه به درایه یک سطر ماتریس است که آن هم در درون خود حلقه Back3 را داراست که وظیفه محاسبه ی یک درایه را دارد.
    برای محاسبه هر سطر ابتدا با کم کردن Line (که با محاسبه هر سطر از مقدار آن کم می شود ) از N شماره سطر را پیدا کرده و درون CH می ریزیم. برای محاسبه هر سطر باید N درایه را محاسبه کنیم. حال شماره ی سطر موجود در CH را برای محاسبه ی هر درایه از یک سطر در AL ریخته و در N ضرب نموده و حاصل موجود در ثبات AX را به آدرس اولیه ماتریس A ، موجود در SI اضافه می کنیم تا آدرس اولین خانه سطر مورد محاسبه بدست آید. برای فهمیدن اینکه برای هر درایه چه ستونی از ماتریس B را باید در سطر مورد نظر از ماتریس Aضرب کنیم از متغییر P استفاده می کنیم که مقدار اولیه آن برابر صفر است بعد از محاسبه هر درایه از یک سطر مقدار آن بعلاوه یک شده و پس از محاسبه هر سطر مقدار آن دوبار صفر می گردد. پس P را درون AL ریخته و آن را به BX (حاوی آدرس اولیه ماتریس B ) اضافه می کنیم تا آدرس اولین درایه ی ستون P ام ماتریس B درون BX قرار گیرد.
    برای مشاهده ی ادامه توضیحات فایل Pdf ضمیمه را دانلود نمایید...


    PAGE 110,100
    TITLE 'MATRIX.ASM' add two ASCII
    ;-----------------------------------------------
    ; Defining segment of program
    ; ---------------------------
    CODESG SEGMENT
    ASSUME SS:CODESG,DS:CODESG,CS:CODESG
    ORG 100H
    START: JMP MAIN ;1-Jump over data
    ;
    ; 1- Define data
    ; --------------
    M_A DB 1,2,3,4,5,6,7,8,9,1,1,1,1,1,1,1
    M_B DB 1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1
    M_RESULT DW 16 DUP (?)
    TEMP DW ?
    N EQU 4
    LINE DB N
    COLUMN DB N
    COUNTER DB N
    X DW ?
    P DB 0
    ;
    ; 2- The rest of instructions
    ; ---------------------------
    MAIN PROC NEAR

    MOV DI,OFFSET M_RESULT
    MOV SI,OFFSET M_A
    MOV BX,OFFSET M_B

    BACK1:
    MOV CH,N
    SUB CH,LINE
    MOV COLUMN,N

    BACK2:

    MOV AL,CH
    MOV X,N
    MUL X
    ADD SI,AX
    MOV AH,0
    MOV AL,P
    ADD BX,AX
    MOV COUNTER,N
    MOV TEMP,0

    BACK3:
    MOV AL,[SI]
    MUL [BX]
    ADD TEMP,AX
    INC SI
    ADD BX,N
    DEC COUNTER
    JNZ BACK3

    ;
    MOV AX,TEMP
    MOV [DI],AX
    ADD DI,2
    MOV SI,OFFSET M_A
    MOV BX,OFFSET M_B
    INC P
    DEC COLUMN
    JNZ BACK2

    ;
    MOV P,0
    DEC LINE
    JNZ BACK1



    ;
    MOV AX,4C00H ;8- End of
    INT 21H ;9- processing
    MAIN ENDP ; End of procedure
    CODESG ENDS ; End of segment
    END START ; End of program
    ;By : Mojtaba Alizadeh Mojia91@yahoo.com



    فایل توضیحات :

    موضوعات مشابه:
    فایل های پیوست شده
    ویرایش توسط MoJTaBa : 3rd May 2012 در ساعت 08:43 PM
    Hossein, Farzad, Mahshid و 1 نفر دیگر این نویسه را می پسندند.

  2. #2
    عضو تازه وارد
    تاریخ عضویت
    2013 December
    ارسال ها
    1
    تشکر
    0
    تشکر شده 0 بار در 0 پست


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    یعنی چی ... چرا دانلود نمیشه ها؟


 

 

کاربران برچسب خورده در این موضوع

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  


Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0
Persian Language By Ustmb.ir
این انجمن کاملا مستقل بوده و هیچ ارتباطی با دانشگاه علوم و فنون مازندران و مسئولان آن ندارد..این انجمن و تمامی محتوای تولید شده در آن توسط دانشجویان فعلی و فارغ التحصیل ادوار گذشته این دانشگاه برای استفاده دانشجویان جدید این دانشگاه و جامعه دانشگاهی کشور فراهم شده است.لطفا برای اطلاعات بیشتر در رابطه با ماهیت انجمن با مدیریت انجمن ارتباط برقرار کنید
ساعت 07:02 AM بر حسب GMT +4 می باشد.