匯編課程設(shè)計矩陣的乘法運算_第1頁
匯編課程設(shè)計矩陣的乘法運算_第2頁
匯編課程設(shè)計矩陣的乘法運算_第3頁
匯編課程設(shè)計矩陣的乘法運算_第4頁
匯編課程設(shè)計矩陣的乘法運算_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學(xué)匯編語言程序設(shè)計課程設(shè)計說明書學(xué) 號: 01201010340329課 程 設(shè) 計題 目矩陣相乘運算學(xué) 院計算機科學(xué)與技術(shù)學(xué)院專 業(yè)計算機科學(xué)與技術(shù)專業(yè)班 級姓 名指導(dǎo)教師20年月日課程設(shè)計任務(wù)書學(xué)生姓名: 專業(yè)班級: 指導(dǎo)教師: 工作單位:計算機科學(xué)與技術(shù)學(xué)院 題目: 矩陣相乘運算初始條件:理論:完成了匯編語言程序設(shè)計課程,對微機系統(tǒng)結(jié)構(gòu)和80系列指令系統(tǒng)有了較深入的理解,已掌握了匯編語言程序設(shè)計的基本方法和技巧。實踐:完成了匯編語言程序設(shè)計的4個實驗,熟悉了匯編語言程序的設(shè)計環(huán)境并掌握了匯編語言程序的調(diào)試方法。要求完成的主要任務(wù): (包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰

2、寫等具體要求)進一步理解和掌握較復(fù)雜程序的設(shè)計方法,掌握子程序結(jié)構(gòu)的設(shè)計和友好用戶界面的設(shè)計。具體的設(shè)計任務(wù)及要求:1) 模擬兩個二維數(shù)組;2) 實現(xiàn)兩個二維數(shù)組相乘,并將結(jié)果采用矩陣在屏幕上輸出;3) 程序采用子程序結(jié)構(gòu),結(jié)構(gòu)清晰;4) 友好清晰的用戶界面,能識別輸入錯誤并控制錯誤的修改。在完成設(shè)計任務(wù)后,按要求撰寫課程設(shè)計說明書;對課程設(shè)計說明書的具體要求請見課程設(shè)計指導(dǎo)書。閱讀資料:1)ibmpc匯編語言程序設(shè)計實驗教程實驗2.42)ibmpc匯編語言程序設(shè)計(第2版)例6.11時間安排:設(shè)計安排一周:周1、周2:完成系統(tǒng)分析及設(shè)計。周3、周4:完成程序調(diào)試,和驗收。周5:撰寫課程設(shè)計報

3、告。指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日目 錄1 問題分析 41.1 具體任務(wù) 41.2 輸入 41.3 輸出 41.4 子程序 42 程序設(shè)計 42.1 數(shù)據(jù)段定義 42.2 回車子程序ent和輸出空格子程序spa 52.3 提示輸入錯誤 error 52.4 輸入子程序 input 52.5 輸出子程序 output 62.6 矩陣相乘子程序 multi 72.7 主程序 83 調(diào)試過程與結(jié)果 83.1 調(diào)試過程 83.2 輸出結(jié)果 94 總結(jié) 105 參考文獻 106 附錄 11矩陣相乘運算1 問題分析1.1 具體任務(wù)(1)模擬兩個二維數(shù)組;(2)實現(xiàn)兩個二維

4、數(shù)組相乘,并將結(jié)果采用矩陣在屏幕上輸出;(3)程序采用子程序結(jié)構(gòu),結(jié)構(gòu)清晰;(4)友好清晰的用戶界面,能識別輸入錯誤并控制錯誤的修改。1.2輸入根據(jù)題意,該程序輸入為兩個數(shù)組。我將兩個數(shù)組大小分別設(shè)定為3*4和4*5,輸入的數(shù)字大小范圍為09。1.3 輸出該程序輸出為一個矩陣。因為輸入的矩陣為3*4和4*5,所以輸出的矩陣大小為3*5,即以3行5列的形式輸出兩數(shù)組相乘的結(jié)果。1.4 子程序分析任務(wù),將子程序分成7個,作用分別是輸入數(shù)據(jù)、提示輸入錯誤、回車、空格、矩陣相乘和兩個輸出。2 程序設(shè)計2.1 數(shù)據(jù)段定義提示輸入的語句:(1)please enter the matrix1! the m

5、atrix1 is 3*4.$ (2)please enter the matrix2! the matrix2 is 4*5.$ (3)please input the number(number is from 0 to 9):$提示輸入錯誤語句:the last number is error! please input the number again:$提示矩陣的數(shù)據(jù)內(nèi)容:(1)the matrix1:$ (2)the matrix2:$ (3)the result of matrix1*matrix2:$定義3個數(shù)組x、y、z:(1)x db 12 dup(?) (2)y db 2

6、0 dup(?) (3)z dw 15 dup(?)2.2 回車子程序ent和輸出空格子程序spa該程序為輸出格式調(diào)整的子程序。程序如下: mov ah,02h mov dl,20h int 21hdl中儲存的數(shù)字根據(jù)程序不同進行改變??崭駷?0h,回車為0dh和0ah。2.3 提示輸入錯誤error輸出語句“the last number is error! please input the number again:”2.4 輸入子程序intput調(diào)用函數(shù)前先傳遞參數(shù)cl,傳遞的數(shù)據(jù)為數(shù)組大小。2.5 輸出子程序output和outp將存儲器中的2進制轉(zhuǎn)換為10進制輸出的流程圖為:siz的

7、地址axsiax/100blahdlaldldl+30輸出數(shù)字alblah0ax/10blahdlaldldl+30輸出數(shù)字dlbldldl+30輸出數(shù)字結(jié)束開始輸出矩陣格式為(其中row為行數(shù)col為列數(shù),a為數(shù)組):output (int row, int col, int a)1 n0;2 for i1 to row3 for j1 to col4 print(an);5 n+;6 spa();7 ent();2.6 矩陣相乘子程序multi2.7 主程序主程序過程為:開始調(diào)用輸入程序輸入數(shù)組1調(diào)用輸入程序輸入數(shù)組2調(diào)用矩陣相乘子程序調(diào)用輸出程序結(jié)束。3 調(diào)試過程與結(jié)果3.1 調(diào)試過程出

8、現(xiàn)的錯誤有:(1)x和y數(shù)組為db型,相乘后儲存結(jié)果的數(shù)組應(yīng)為dw型,定義時出錯,導(dǎo)致子程序不能執(zhí)行,提示錯誤。同樣類型的錯誤還出現(xiàn)在multi和output子程序中,循環(huán)執(zhí)行儲存結(jié)果時數(shù)組的下標每次只加了1,結(jié)果導(dǎo)致程序不能運行或結(jié)果出錯。(2)multi程序中最外層循環(huán)沒有及時更新di的值,導(dǎo)致輸出時第二行和第三行第一列的結(jié)果出錯,顯示上一行的數(shù)據(jù)。(3)進行乘法運算時將語句寫成了mul ax,bx,同類型的出錯還出現(xiàn)在output子程序中,將除法語句寫成div dx,10。這類錯誤都是因為忘了乘除法的規(guī)則。(4)輸出結(jié)果時矩陣格式不整齊,將格式進行了調(diào)整,輸出3位數(shù),不夠3位的用0補齊。

9、3.2 輸出結(jié)果(1)(2)4 總結(jié)當看到題目是矩陣的乘法,腦海中幾乎立即想出了利用c+完成問題的大概結(jié)構(gòu),便覺得應(yīng)該不難。但是當真正開始編程的時候才發(fā)現(xiàn)匯編編程和c+編程有很大不同,便出現(xiàn)了各種各樣的麻煩。匯編編程因為參數(shù)的傳遞比較麻煩致使數(shù)組大小的設(shè)定都無法實現(xiàn)靈活性。因為匯編程序的輸入的數(shù)據(jù)為ascii碼,需要進行處理才能被正確儲存,所以輸入個位數(shù)和輸入多位數(shù)的差別非常大,相較個位數(shù)的輸入,多位數(shù)的輸入需要利用結(jié)束符去判斷一個數(shù)據(jù)是否已全部輸入,還需要對之前的數(shù)據(jù)進行*10運算,除此之外儲存數(shù)據(jù)用的數(shù)組的類型都要擴大,幾乎改變了整個程序。為了簡便,只好在編程前設(shè)定好矩陣的大小為3*4和4

10、*5,結(jié)果矩陣為3*5,輸入數(shù)據(jù)的范圍為09。在編寫子程序時,本想一次性將所有小型的子程序全部編寫完整,但在運行時卻出現(xiàn)故障,軟件也不提示不出是哪里出現(xiàn)了錯誤,只好將子程序分解,一個一個的進行調(diào)試,再合并在一起。這說明了即使是個小的子程序也需要一步一步進行調(diào)試,不能想著一步登天。總之,這次的課程設(shè)計讓我收益頗豐。5 參考文獻1沈美明,溫東嬋. ibmpc匯編語言程序設(shè)計(第2版)m.北京:清華大學(xué)出版社,2007.2孫紅霞.算法設(shè)計與分析m.武漢:武漢大學(xué)出版社,2007.附 錄源程序datas segment ifor1 db please enter the matrix1! the ma

11、trix1 is 3*4.$ ifor2 db 0dh,0ah,please enter the matrix2! the matrix2 is 4*5.$ pm1 db 0dh,0ah,please input the number(number is from 0 to 9):$ pm2 db 0dh,0ah,the last number is error! please input the number again:$ ma1 db 0dh,0ah,the matrix1:$ ma2 db 0dh,0ah,the matrix2:$ ma3 db 0dh,0ah,the result

12、of matrix1*matrix2:$ x db 12 dup(?) y db 20 dup(?) z dw 15 dup(?)datas endscodes segment assume cs:codes,ds:datasmain proc far mov ax,datas mov ds,ax mov ah,09h lea dx,ifor1 int 21h lea dx,pm1 int 21h mov cl,0ch lea si,x call input lea dx,ifor2 int 21h lea dx,pm1 int 21h mov cl,14h lea si,y call inp

13、ut lea dx,ma1 int 21h call ent mov cx,0304h lea si,x call outp lea dx,ma2 int 21h call ent mov cx,0405h lea si,y call outp call multi lea dx,ma3 int 21h call ent call output mov ah,4ch int 21hmain endpinput proc near push ax push cx push si call enta1: mov ah,01h int 21h cmp al,30h jb a3 cmp al,39h

14、ja a3 sub al,30h mov si,al inc si cmp cl,01h jz a2 call spaa2: loop a1 pop si pop cx pop ax reta3: call error jmp a1input endperror proc near push ax push dx lea dx,pm2 mov ah,09h int 21h call ent pop dx pop ax reterror endpoutp proc near push ax mov ah,02h mov bl,clb1: mov cl,blb2: mov dl,si add dl

15、,30h int 21h call spa inc si dec cl jnz b2 cmp ch,01h jz b3 call entb3: dec ch jnz b1 pop ax retoutp endpoutput proc near lea si,z mov cx,3c1: push cx mov cx,5c2: push cx mov ax,si mov cl,100 div cl mov bl,ah mov dl,al add dl,30h mov ah,2h int 21h mov al,bl mov ah,0 mov cl,10 div cl mov bl,ah mov dl

16、,al add dl,30h mov ah,02h int 21h mov dl,bl add dl,30h mov ah,02h int 21h call spa pop cx add si,2 loop c2 call ent pop cx loop c1 retoutput endpent proc near push ax push dx mov ah,02h mov dl,0dh int 21h mov dl,0ah int 21h pop dx pop ax retent endpspa proc near push ax push dx mov dl,20h mov ah,02h int 21h pop dx pop ax retspa endpmulti proc near push ax mov di,0 mov

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論