匯編語言知識學(xué)習(xí)矩陣相乘教學(xué)規(guī)劃(附源代碼)_第1頁
匯編語言知識學(xué)習(xí)矩陣相乘教學(xué)規(guī)劃(附源代碼)_第2頁
匯編語言知識學(xué)習(xí)矩陣相乘教學(xué)規(guī)劃(附源代碼)_第3頁
匯編語言知識學(xué)習(xí)矩陣相乘教學(xué)規(guī)劃(附源代碼)_第4頁
匯編語言知識學(xué)習(xí)矩陣相乘教學(xué)規(guī)劃(附源代碼)_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

.華北科技學(xué)院課程設(shè)計說明書班級: 姓名:學(xué)號:課程名稱: 匯編語言課程設(shè)計課設(shè)時間:2006-12-05至2006-12-16成績評定:精品文檔放心下載1、工作量:A(),B(),C(),D(),F()2、難易度:A(),B(),C(),D(),F()3、答辯情況:基本操作:A(),B(),C(),D(),F()代碼理解:A(),B(),C(),D(),F()4、報告規(guī)范度:A(),B(),C(),D(),F()5、學(xué)習(xí)態(tài)度:A(),B(),C(),D(),F()總評成績:.指導(dǎo)教師:一.課程設(shè)計的目的、任務(wù)1.課程設(shè)計的目的:使學(xué)生綜合使用所學(xué)過的匯編語言程序設(shè)計知識,掌握結(jié)構(gòu)化程序設(shè)計的基本思路和方精品文檔放心下載法,利用所學(xué)的基本知識和技能,發(fā)揮自學(xué)能力和查找資料的能力,解決稍微復(fù)雜的結(jié)構(gòu)化精品文檔放心下載程序設(shè)計問題,加深對所學(xué)知識的理解與掌握,增強學(xué)生利用自己所學(xué)知識解決實際問題的謝謝閱讀能力,為以后的程序開發(fā)打下基礎(chǔ)。課程設(shè)計的目的和要求:(1)使學(xué)生鞏固和加強《匯編語言》課程的理論知識。(2)使學(xué)生掌握匯編語言的基本概念、語法、語義和數(shù)據(jù)類型的使用特點。精品文檔放心下載(3)使學(xué)生掌握匯編語言程序設(shè)計的方法及編程技巧,能正確使用匯編語言編寫程序。感謝閱讀(3)進一步理解與運用結(jié)構(gòu)化程序設(shè)計的思想和方法;學(xué)會利用流程圖或N-S圖表示算感謝閱讀法。(4)使學(xué)生掌握調(diào)試程序的基本方法及上機操作方法。(5)掌握書寫程設(shè)計開發(fā)文檔的能力,使學(xué)生學(xué)會撰寫課程設(shè)計總結(jié)報告。課程設(shè)計謝謝閱讀的思想和方法還可以作為學(xué)生做畢業(yè)論文時的參考資料。(6)通過查閱手冊和文獻資料,培養(yǎng)學(xué)生獨立分析問題和解決問題的能力。為學(xué)生做畢精品文檔放心下載業(yè)設(shè)計打好基礎(chǔ)。.(7)初步掌握開發(fā)一個小型實用系統(tǒng)的基本方法:結(jié)合實際應(yīng)用的要求,使課程設(shè)計既謝謝閱讀覆蓋知識點,又接近工程實際需要。通過激發(fā)學(xué)習(xí)興趣,調(diào)動學(xué)生主動學(xué)習(xí)的積極精品文檔放心下載性,并引導(dǎo)他們根據(jù)實際編程要求,訓(xùn)練自己實際分析問題的能力及編程能力,謝謝閱讀并養(yǎng)成良好的編程習(xí)慣。(8)培養(yǎng)學(xué)生的創(chuàng)新能力和創(chuàng)新思維。學(xué)生可以根據(jù)指導(dǎo)書和相關(guān)文獻上的參考算法,謝謝閱讀自己設(shè)計出相應(yīng)的應(yīng)用程序。(9)培養(yǎng)學(xué)生良好的程序設(shè)計風(fēng)格。在實際編程中,為了提高編程質(zhì)量,對空行、空精品文檔放心下載格和注釋均有要求。學(xué)生在課程設(shè)計書寫代碼時,應(yīng)該嚴格按要求處理,以便建立感謝閱讀良好的程序設(shè)計風(fēng)格。2.課程設(shè)計的題目——矩陣相乘(1)要求:掌握多重循環(huán)程序的設(shè)計方法,并熟悉有關(guān)矩陣的編程原理。精品文檔放心下載(2)內(nèi)容:將一個4X4的矩陣與一個4X1的矩陣相乘,將結(jié)果存入相應(yīng)的單元,感謝閱讀分別用十進制數(shù)、二進制、十六進制形式顯示結(jié)果。3.課程設(shè)計環(huán)境(1)硬件:PC機。(2)軟件:操作系統(tǒng)為64位Windows7,設(shè)計語言為MASMFORWINDOWS匯編謝謝閱讀語言集成實驗環(huán)境。4.課程設(shè)計要求(1)課程設(shè)計可采取每人一題,可任選一題進行設(shè)計,至少包含五個功能模塊。或精品文檔放心下載者每組完成一個課題,每組成員分工合作完成一個課程設(shè)計,每個人的任務(wù)不同;謝謝閱讀.(2)可以選擇老師提供的參考選題,也可以自選,如果自選,需要將自選題目的詳細謝謝閱讀內(nèi)容以及實現(xiàn)要求提供給老師,老師批準后方可采用;(3)要求利用結(jié)構(gòu)化程序設(shè)計方法以及匯編語言的編程思想來完成系統(tǒng)的設(shè)計;謝謝閱讀(4)要求有歡迎界面、菜單、文件操作,數(shù)據(jù)使用數(shù)組、結(jié)構(gòu)體等均可,鍵盤操作或謝謝閱讀鼠標操作均可;(5)模塊化程序設(shè)計:要求在設(shè)計的過程中,按功能定義過程或宏,多個模塊化設(shè)計謝謝閱讀可以用文件的形式來實現(xiàn);(6)學(xué)生所選課題必須上機通過,并獲得滿意的結(jié)果;(7)程序書寫風(fēng)格:鋸齒型書寫格式。二.軟件需求分析和設(shè)計(1)需求分析本程序主要實現(xiàn)的功能是一個4*4矩陣與4*1矩陣相乘最后得到一個感謝閱讀4*1矩陣,并且要求用三種方式輸出這個矩陣,分別是二進制和十六進制和十進制。并感謝閱讀且這個程序要求菜單的選擇。(2)下面就是這個程序的流程圖、開始菜單選擇輸出第一個矩陣(十進制)輸出第二個矩陣(十進制)矩陣相乘運算(矩陣輸出結(jié)果矩陣(十進制)輸出結(jié)果矩陣(十六進制)輸出結(jié)果矩陣(二進制)

.輸出流程圖開始將BX值和地址給AX以十進制輸出AX的第一個NN地址轉(zhuǎn)移下個數(shù),中間TAB功結(jié)束列數(shù)CX=0?主流程圖Y行數(shù)DX=0?Y結(jié)束開始獲得AX中一個數(shù)除以10,商放在AX,余數(shù)放在DXAX=0?Y余數(shù)的出棧輸出NCX=0?Y結(jié)束十進制矩陣輸出開始獲得AX中一個數(shù)邏輯左移一位是否進位?Y N輸出1 輸出0CX=0?

.開始獲得AX中一個數(shù)循環(huán)左移四位取出AL低四位加上30H輸出AL>9?N Y加上07H變成A-FN輸出一個數(shù)CH=0?Y結(jié)束十六進制矩陣輸出NY開始

二進制矩陣輸出開始

.行循環(huán)數(shù)初始賦值列循環(huán)數(shù)初始賦值重新定義偏移量和CX邊相乘邊存儲Y NCX=0?Y第二矩陣是否有第二列?N行循環(huán)數(shù)加一是否有下一行?N開始

Y三.程序?qū)崿F(xiàn)說明(介紹程序?qū)崿F(xiàn)過程,包括關(guān)鍵代碼分析(注意:精品文檔放心下載應(yīng)該限制代碼的數(shù)量)).1.矩陣相乘關(guān)鍵代碼MUL_AB: ;矩陣相乘MOVDI,0MOVHH,0;--------嵌套循環(huán)-------------謝謝閱讀MUL_0:MOVLL,0;---------------------MUL_1:MOVBX,HH ;HH為空,BX清零ADDBX,HHMOVSI,LL ;LL為空,SI清零ADDSI,LLMOVCX,LA ;將4傳給CX;---------------------MUL_2:MOVAX,MA[BX] ;矩陣一的第一個數(shù)放進AX感謝閱讀MOVDX,MB[SI] ;矩陣二的第一個數(shù)放進DX謝謝閱讀MULDX ;兩數(shù)相乘ADDMC[DI],AX ;結(jié)果矩陣第一數(shù)先放上AX感謝閱讀ADDBX,2 ;地址往下移ADDSI,2*LB ;地址下移矩陣二列數(shù)*2精品文檔放心下載LOOPMUL_2;---------------------ADDDI,2 ;地址往下移INCLL ;列數(shù)加1CMPLL,LB ;比較結(jié)果矩陣列數(shù)與矩陣二的列數(shù)精品文檔放心下載JNZMUL_1;---------------------ADDHH,LA ;結(jié)果矩陣行數(shù)CMPHH,HA*LA ;比較結(jié)果矩陣行數(shù)數(shù)與矩陣一的行數(shù)與列數(shù)的乘積精品文檔放心下載JBMUL_0RET2.十進制轉(zhuǎn)換關(guān)鍵代碼PRINT_AX: ;將存在AX中的數(shù)按照十進制輸出精品文檔放心下載PUSHBXPUSHCX.PUSHDXMOVBX,10MOVCX,0P_LOP1:MOVDX,0DIVBX ;直接除以10,余數(shù)在DX一次輸出一個謝謝閱讀INCCXPUSHDXCMPAX,0 ;商存在AX中,接著用來取余數(shù)放到DX里面謝謝閱讀JNZP_LOP1MOVAH,2P_LOP2:POPDXADDDL,'0'INT21HLOOPP_LOP2 ;CX自加多少次,就自減多少次,輸出整個數(shù)謝謝閱讀POPDXPOPCXPOPBXRET3.十六進制轉(zhuǎn)換關(guān)鍵代碼HSPPROCFAR ;十六進制轉(zhuǎn)換子程序PUSHBXPUSHCXPUSHDXMOVBX,AXMOVCH,04D ;CH初始定義為4ROTATE:MOVCL,04D ;CL初始定義為4ROLBX,CL ;對操作數(shù)進行循環(huán)左移4次,每執(zhí)行一次,把最高位移到最低位,同感謝閱讀時還把最高位移到CFMOVAL,BLANDAL,0FH ;取AL的低四位ADDAL,30H ;加上30H輸出CMPAL,'9' ;AL與9比較JBE PRINT2 ;小于等于就會跳到PRINT2精品文檔放心下載ADDAL,07H ;大于AL加上07H,變成字母ABCDEF感謝閱讀PRINT2:MOVDL,AL ;AL給DL輸出出來MOVAH,2INT21H.DECCH ;ch自減,不為零繼續(xù)循環(huán)上面代碼JNEROTATEMOVAH,2MOVDL,'H'INT21HPOPDXPOPCXPOPBXRETHSPENDP4.二進制轉(zhuǎn)換關(guān)鍵代碼DSPPROCFAR ;二進制轉(zhuǎn)換子程序PUSHBXPUSHCXPUSHDXMOVBX,AX ;把數(shù)值放到BX保護起來,BX中本身放的就是二進制謝謝閱讀MOVCX,16 ;為循環(huán)做準備T: SHLBX,1 ;把BX的值向左移一位,其高位放在CF標志位里精品文檔放心下載JCPRINT4 ;如果高位是1就輸出1JNCPRINT5 ;如果高位是0就輸出0PRINT4:MOVDL,31H ;把要在屏幕上輸出的字符預(yù)先放到DL寄存器里,31H表示字符1精品文檔放心下載MOVAH,2INT21HJMPLPRINT5:MOVDL,30H ;把要在屏幕上輸出的字符預(yù)先放到DL寄存器里,31H表示字符0精品文檔放心下載MOVAH,2INT21HL:LOOPTMOVAH,2MOVDL,'B'INT21HPOPDXPOPCXPOPBXRETDSPENDP運行結(jié)果截圖菜單截圖.矩陣一矩陣二和相乘后矩陣截圖(十進制)矩陣三十六機制和二進制截圖.四.程序總結(jié)(軟件完成情況,有哪些收獲,存在哪些不足精品文檔放心下載對課程設(shè)計有哪些建議)這次課設(shè)我完成的主要是矩陣的相乘和輸出矩陣的進制轉(zhuǎn)換,以及光標定位,菜單謝謝閱讀輸出等等功能!這次課設(shè)的時間有兩周,其實主要完成在最后一周,通過這次試驗最大謝謝閱讀的收獲就是看程序一定要耐心,雖然程序是我拼湊而成,但是基本上已經(jīng)讀懂整個程序,精品文檔放心下載途中遇見幾個問題,非常感謝老師和同學(xué)們的幫助,最終完成了這個程序。存在的不足精品文檔放心下載之處就是這兩個矩陣是固定格式的,不能任意矩陣相乘,希望以后可以改進,這個課設(shè)謝謝閱讀學(xué)習(xí)了很多,新的知識主要是BOIS功能的調(diào)用,主要集中在字體顏色變化和光標的定感謝閱讀位,還學(xué)到了矩陣相乘中的嵌套循環(huán),這個對于循環(huán)反復(fù)操作不同的數(shù)非常的重要!另感謝閱讀外還了解了進制轉(zhuǎn)換的方法,也是利用了循環(huán)移位的操作,本來我覺得匯編是個令人頭感謝閱讀疼的語言,但是你只要緊緊抓住它其中數(shù)的變化就行,能夠準確定位數(shù)的位置及作用,謝謝閱讀而且還要了解數(shù)的及時清零與更新!往往其中很容易混淆的就是數(shù)的位置和作用,之前謝謝閱讀很容易的辨認錯誤!這次的實驗還是學(xué)到了很多東西,主要感謝老師和同學(xué)的指導(dǎo),總精品文檔放心下載體上來說,完成了基本課設(shè)要求!希望在以后的學(xué)習(xí)中,也應(yīng)該有那種細心鉆研的精神!感謝閱讀.源代碼:DATASEGMENT;================菜單的定義===============感謝閱讀str1 db'***********************Menu:*******************',13,10精品文檔放心下載mess1db' ********1:printthefirst精品文檔放心下載array:***************',13,10感謝閱讀mess2db' ********2:printthesecond謝謝閱讀array:**************',13,10謝謝閱讀mess3db' ********3:printtheHexadecimalsystem精品文檔放心下載array:*',13,10mess4db' ********4:printtheBinarysystem感謝閱讀array:*******',13,10mess5db' ********5:printtheDecimalsystem感謝閱讀array:******',13,10mess6db'*******************END*************************',13,10謝謝閱讀length1equ$-str1STR2 db'pleasemakeyourchoose:',13,10精品文檔放心下載;-----------------------------精品文檔放心下載array1 DB'thefirstarrayis(4*4):','$'感謝閱讀array2 DB'thesecondarrayis(4*1):','$'謝謝閱讀.DB'printarray1*array2(Hexadecimalsystem):','$'精品文檔放心下載BDB'printarray1*array2(Binarysystem):','$'精品文檔放心下載DDB'printarray1*array2(Decimalsystem):','$';----------------------------MADW11,12,13,14;定義4*4矩陣MADW21,22,23,24DW31,32,33,34DW41,42,43,44HAEQU4;行數(shù)LAEQU4;列數(shù);-----------------------------MBDW12;定義4*1矩陣MBDW11DW11DW11HBEQU4LBEQU1;-----------------------------MCDWHA*LBDUP(?);定義結(jié)果矩陣HCEQUHALCEQULBHHDW?.DW?;==============宏的定義==============;--------------光標的初始定義-------謝謝閱讀cursormacrorow,rankmovah,2謝謝閱讀movdh,rowmovdl,rankmovbh,0int10hendm;回車換行hchhmacromovdl,10movah,2int21hmovdl,13movah,2int21hendm;字符串輸出PRINTmacroxmovah,9謝謝閱讀.leadx,xint21hendmDATAENDS;***********************************精品文檔放心下載CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;==========光標和菜單字體顏色設(shè)置==========感謝閱讀moval,3movah,00hint10hmovbp,segstr1moves,bpmovbp,offsetstr1movcx,length1movdx,0movbl,05h ;菜單紅字定義moval,0.cursor2,15 ;菜單光標初始定義movah,13hint10h;==========================================謝謝閱讀;---------菜單跳轉(zhuǎn)選項-----------感謝閱讀hchhcursor12,0out1:movah,1int21hcmpal,'1'jzL1cmpal,'2'jzL2cmpal,'3'jzL3cmpal,'4'jzL4cmpal,'5'jzL5jmpEXIT;----------------主程序-------------------謝謝閱讀.L1: PRINTarray1HCHHMOVBX,OFFSETMA;輸出第一個矩陣謝謝閱讀MOVCX,LAMOVDX,HACALLPRINT_MHCHHJMPOUT1L2: PRINTarray2HCHHMOVBX,OFFSETMB;輸出第二個矩陣精品文檔放心下載MOVCX,LBMOVDX,HBCALLPRINT_M1CALLhuanhangHCHHJMPOUT1L3: PRINTDHCHHCALLMUL_AB ;矩陣相乘.MOVBX,OFFSETMC;結(jié)果十進制輸出感謝閱讀MOVCX,LCMOVDX,HCCALLPRINT_M2HCHHJMPOUT1L4: PRINTHHCHHMOVBX,OFFSETMC;結(jié)果十六進制輸出謝謝閱讀MOVCX,LCMOVDX,HCCALLPRINT_Z2HCHHJMPOUT1L5: PRINTBHCHHMOVBX,OFFSETMC;結(jié)果二進制輸出感謝閱讀MOVCX,LCMOVDX,HC.CALLPRINT_Z3EXIT:MOVAH,4CHINT21H;******************************精品文檔放心下載PRINT_M: ;第一個矩陣輸出PUSHCXpushax ;提示文字,并保護寄存器pushdxpopdxpopaxPR2:MOVAX,[BX];將BX數(shù)給AXCALLPRINT_AX;直接輸出一個數(shù)(十進制數(shù))CALLTAB_09;輸出空格ADDBX,2;轉(zhuǎn)到下一個數(shù)LOOPPR2POPCX;根據(jù)列判斷一行輸入多少數(shù)據(jù)CALLhuanhang;輸出一行的數(shù)后立即換行DECDX;DX自減.JNZ PRINT_M ;DX不為零直接跳到上面繼續(xù)輸出余數(shù)精品文檔放心下載RET;******************************精品文檔放心下載PRINT_M1: ;第二個矩陣輸出PUSHCXpushaxpushdxpopdxpopaxPR20:MOVAX,[BX]CALLPRINT_AXCALLTAB_09ADDBX,2LOOPPR20POPCXCALLhuanhang ;輸出一列后立即換行DECDXJNZPRINT_M1RET;******************************謝謝閱讀PRINT_M2: ;相乘矩陣后的輸出.PUSHCXpushaxpushdxpopdxpopaxPR21:MOVAX,[BX]CALLPRINT_AXCALLTAB_09ADDBX,2LOOPPR21POPCXCALLhuanhang ;輸出一列后立即換行DECDXJNZPRINT_M2RET;******************************謝謝閱讀PRINT_AX: ;將存在AX中的數(shù)按照十進制輸出精品文檔放心下載PUSHBXPUSHCXPUSHDX.MOVBX,10MOVCX,0P_LOP1:MOVDX,0DIVBX ;直接除以10,余數(shù)在DX一次輸出一個謝謝閱讀INCCXPUSHDXCMPAX,0 ;商存在AX中,接著用來取余數(shù)放到DX里面謝謝閱讀JNZP_LOP1MOVAH,2P_LOP2:POPDXADDDL,'0'INT21HLOOPP_LOP2 ;CX自加多少次,就自減多少次,輸出整個數(shù)謝謝閱讀POPDXPOPCXPOPBXRET;******************************精品文檔放心下載huanhang: ;段內(nèi)換行,去掉這個后會陷于死循環(huán)!感謝閱讀.PUSHAXPUSHDXMOVAH,2MOVDL,13INT21HMOVDL,10INT21HPOPDXPOPAXRET;******************************精品文檔放心下載TAB_09: ;TAB功能調(diào)用,讓矩陣的輸出更加規(guī)范!感謝閱讀PUSHAXPUSHDXMOVAH,2MOVDL,9INT21HPOPDXPOPAXRET;&&&&&&&&&&&&&&&矩陣相乘&&&&&&&&&&&&&&謝謝閱讀MUL_AB: ;矩陣相乘.MOVDI,0MOVHH,0;--------嵌套循環(huán)-------------謝謝閱讀MUL_0:MOVLL,0;---------------------MUL_1:MOVBX,HHADDBX,HHMOVSI,LLADDSI,LLMOVCX,LA;---------------------MUL_2:MOVAX,MA[BX]MOVDX,MB[SI]MULDXADDMC[DI],AXADDBX,2ADDSI,2*LBLOOPMUL_2

;HH為空,BX清零;LL為空,SI清零;將4傳給CX;矩陣一的第一個數(shù)放進AX;矩陣二的第一個數(shù)放進DX;兩數(shù)相乘;結(jié)果矩陣第一數(shù)先放上AX;地址往下移;地址下移矩陣二列數(shù)*2.;---------------------ADDDI,2 ;地址往下移INCLL ;列數(shù)加1CMPLL,LB ;比較結(jié)果矩陣列數(shù)與矩陣二的列數(shù)精品文檔放心下載JNZMUL_1;---------------------ADDHH,LA ;結(jié)果矩陣行數(shù)CMPHH,HA*LA ;比較結(jié)果矩陣行數(shù)數(shù)與矩陣一的行數(shù)與列數(shù)的乘謝謝閱讀積JBMUL_0RET;%%%%%%%%%%%%%%十六進制輸出%%%%%%%%%%%%%%精品文檔放心下載PRINT_Z2: ;十六進制矩陣輸出PUSHCXpushaxpushdxpopdxpopaxprint1:MOVAX,[BX]CALLHSPCALLTAB_09.ADDBX,2LOOPprint1 ;第一行輸出POPCXCALLhuanhang ;輸出一列后立即換行DECDXJNZPRINT_Z2RETHSPPROCFAR ;十六進制轉(zhuǎn)換子程序PUSHBXPUSHCXPUSHDXMOVBX,AXMOVCH,04D ;CH初始定義為4ROTATE:MOVCL,04D ;CL初始定義為4ROLBX,CL ;對操作數(shù)進行循環(huán)左移4次,每執(zhí)行一次,把最感謝閱讀高位移到最低位,同時還把最高位移到CF

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論