計算機組成原理與匯編實驗報告_第1頁
計算機組成原理與匯編實驗報告_第2頁
計算機組成原理與匯編實驗報告_第3頁
計算機組成原理與匯編實驗報告_第4頁
計算機組成原理與匯編實驗報告_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算機組成原理與匯編課 程設(shè)計實驗報告目錄一、課程設(shè)計目標(biāo) 3二、課程設(shè)計基本要求 3三、課程設(shè)計的內(nèi)容 3四、課程設(shè)計的要求 5五、實驗詳細設(shè)計 51. 統(tǒng)計文件中各字母出現(xiàn)的頻率 52. 用遞歸計算50以內(nèi)Fibonacci數(shù),以十進制數(shù)輸出93. 虛擬平臺模擬機實驗11六、使用說明 19七、 總結(jié)與心得體會 19八、參考文獻 20九、附錄 201. 字符統(tǒng)計.asm 202. 斐波那契數(shù)(小于 50).asm29課程設(shè)計目標(biāo)通過課程設(shè)計使學(xué)生綜合運用所學(xué)過的計算機原理與匯編知識,增強解決實際問題的能力,加深對所學(xué)知識的理解與掌握,提高軟硬件開發(fā)水平,為今后打下基礎(chǔ)。課程設(shè)計的目的和要求:

2、1、使學(xué)生鞏固和加強計算機原理與匯編語言課程的基本理論知識。2、使學(xué)生掌握匯編語言程序設(shè)計的方法及編程技巧,正確編寫程序。3、使學(xué)生養(yǎng)成良好的編程習(xí)慣并掌握調(diào)試程序的基本方法。4、使學(xué)生養(yǎng)成規(guī)范書寫報告文檔的能力,撰寫課程設(shè)計總結(jié)報告。5、通過查閱手冊和文獻資料,培養(yǎng)學(xué)生獨立分析問題和解決問題的能力。二、課程設(shè)計的基本要求1、認真查閱資料,獨立完成設(shè)計任務(wù),每道題都必須上機通過。2、編寫預(yù)習(xí)報告,寫好代碼,上機調(diào)試。3 、獨立思考,培養(yǎng)綜合分析問題解決問題和調(diào)試程序的能力。4 、按時完成課程設(shè)計,寫出課程設(shè)計報告。三、課程設(shè)計的內(nèi)容1、給定一個英文 ASCII 碼文件,統(tǒng)計文件中英文字母的頻率

3、,以十進制形式輸出。2、用遞歸計算 50 以內(nèi) Fibonacci 數(shù), 以十進制數(shù)輸出 .3、虛擬平臺的模型機實驗,具體要求如下:1)選擇實驗設(shè)備,將所需要的組件從組件列表中拖到實驗設(shè)計流程欄中2)搭建實驗流程:根據(jù)原理圖1和電路圖(見附件),將已選擇的組件進行連線。3)輸入機器指令:選擇菜單中的“工具”,再選擇“模型機調(diào)試”,在指令輸入窗口 中輸入如下指令:00000000000100000000100100100000000010110011000000001011010000000000000000000001本實驗設(shè)計機器指令程序如下:地址(二進內(nèi)容(二進助記符說明制)制)0000

4、00000000 0000IN R0“INPUT DEVICE->R00000 00010001 0000ADD0AH,R0R0+0AH->R00000 00100000 10100000 00110010 0000STAR0,0BHR0->0BH0000 01000000 10110000 01010011 0000OUT 0BH0BH->LED0000 01100000 10110000 01110100 0000JMP 00H00H->PC0000 10000000 00000000 1010運算數(shù)據(jù)自定0000 1011求和結(jié)果4)這里做的是個加法運算,第

5、一個加數(shù)已經(jīng)存入到內(nèi)存的0000 1010單元中,第二個加數(shù)是需要手工輸入的。在實驗運行面板中點擊“運行”按鈕,選擇“輸入”芯片,設(shè)置輸入的數(shù)據(jù)后,雙擊連接“輸入”芯片的單脈沖,這樣第二個加數(shù)就設(shè)置好了。5)在實驗運行面板中雙擊連續(xù)脈沖,模型機便開始工作,觀察各個芯片的狀態(tài)?;蛘?在模型機調(diào)試窗口中(如圖2所示)點擊“指令執(zhí)行”選項卡,在模型機調(diào)試窗口 中點擊“下一時鐘”,模型機機執(zhí)行到下一個時鐘,點擊“下一微指令”,模型機 機執(zhí)行到下一個微指令,點擊“下一指令”,模型機機執(zhí)行到下一條指令。觀察各 個芯片的狀態(tài),思考模型機的運行原理。四、課程設(shè)計的要求1、根據(jù)題目內(nèi)容,查閱資料。2、編寫課程設(shè)

6、計預(yù)習(xí)報告。3、編制程序及調(diào)試程序。4、分析總結(jié),寫出課程設(shè)計報告,報告中應(yīng)該包含程序功能與使用說明、程序功能實現(xiàn)方 法說明、如流程圖與算法參數(shù)說明等內(nèi)容,設(shè)計經(jīng)驗體會總結(jié),源程序清單。5、實驗過程由指導(dǎo)老師監(jiān)督,聽從老師安排和督導(dǎo)。6、每次任務(wù)完成后由指導(dǎo)老師逐個的檢查實驗內(nèi)容、結(jié)果并評分,不符合要求的重寫五、實驗詳細設(shè)計1)統(tǒng)計文件中各字母出現(xiàn)的頻率一、實驗原理在程序中,以是否讀到ASCII碼為0作為字符串末尾結(jié)束的標(biāo)志;讀取文件,并對文件中的字符串進行邏輯判斷(不同字母之間各自對應(yīng)的ASCII碼),統(tǒng)計字符數(shù)。二、實驗?zāi)康慕?jīng)過該實驗知道如何通過編寫匯編程序讀取文件并且讀取文件中內(nèi)容; 通

7、過分支程序設(shè)計來統(tǒng)計字符數(shù),三、實驗設(shè)計內(nèi)容讀取文件代碼段:; 讀打開指定文件; 打開成功,轉(zhuǎn) OPEN; 顯示打開不成功提示信息; 保存文件代號; 從文件中讀一個字符; 如讀出錯,則轉(zhuǎn); 讀到文件結(jié)束符嗎?MOVAX,DATASMOVDS,AX ; 置數(shù)據(jù)段寄存器MOVDX, OFFSETFNAMEMOVAX,3D00HINT 21HJNC OPENMOVSI, OFFSETERROR1CALL DMESSJMP OVERJOPEN:MOVBX,AXGO: CALL READ_CHARJC READ_ERRORCMPAL,EOFJZ TYPE_OKCALL PUTCHJMP GO將文件內(nèi)容推

8、入棧中,并輸出:READ_CHAR PROCMOVCX,1MOVDX, OFFSETBUFFER ; 置緩沖區(qū)地址MOVAH,3FH; 置功能調(diào)用號INT 21H; 讀JC R2; 讀出錯,轉(zhuǎn)CMPAX,CX; 判斷文件是否結(jié)束MOVAL,EOF; 若文件已經(jīng)結(jié)束,置文件結(jié)束符JB R1; 文件確定已經(jīng)結(jié)束,轉(zhuǎn)到MOVAL,BUFFER; 文件未結(jié)束,取所讀字符R1:CLCR2:RETREAD_CHAR ENDPJDMESS PROCDMESS1M: OVDL,SIINC SIORDL,DLJZ DMESS2MOVAH,2INT 21HJMP DMESS1DMESS2:RETDMESS END

9、PPUTCH PROCPUSHDXMOVDL,ALMOVAH,2INT 21HPOPDX文件主體部分(對所讀字符 ASCII 碼進行比較判斷并統(tǒng)計字符數(shù)): movCL,41HLEADI,ARRAYMOVCH,ALCMPCH,CL ; 若 IF<41H(A),OTHERS+JB OTHERCMFCH,5AH;若IF>5AH(Z),跳轉(zhuǎn)繼續(xù)比較JA HIGHER2H1:CMPCH,CLJE CHAR; 若 IF=41H(A),CHAR0+JA L00P1;若IF>41H(A),跳L1 比較42H(B)LOOP1:INC CLADDDI,1JMP H1HIGHER2:movCL,

10、61HLEADI,ARRAYCMPCH,CL;若IF<61H(A),0THERS+JB 0THERCMP CH,7AH ; 若IF>7AH(Z),跳轉(zhuǎn)繼續(xù)比較JA 0THERH2:CMPCH,CLJE CHAR;若IF=61H(a),CHAR0+JA LOOP2若IF>61H(a),跳L02比較62H(b)LOOP2:INC CLADDDI,1JMP H2CHAR:XORCH,CHMOVCH,DIINC CHmovDI,CHOTHER:INC OTHERS ;OTHERS+; 比較結(jié)束四、實驗截圖2)用遞歸計算 50以內(nèi) Fibonacci 數(shù), 以十進制數(shù)輸出一、實驗?zāi)康耐?/p>

11、過該實驗充分了解遞歸程序的用法二、實驗內(nèi)容三、實驗設(shè)計內(nèi)容;ax=0;ax=1; 若有進位則跳出;bx=1;f1=1;f2=1; 調(diào)用 output; 每個數(shù)字后的空格循環(huán)遞歸代碼段(主要實現(xiàn)遞歸調(diào)用斐波那契函數(shù))MOVAX,F1ADDAX,F2JC EXITMOVBX,F2MOVF1,BXMOVF2,AXCALL OUTPUTMOVDL, ' 'MOVAH,2INT 21HDECNJNZ LPEXIT:MOVAH,4CHINT 21H; 返回 DOS輸出斐波那契數(shù):OUTPUT:MOVBX,10MOVCX,0OL1:MOVDX,0DIV BX;ax=0 ,dx=1ADDDL,

12、 '0';加上30h,使數(shù)字3變成字符3PUSHDXINC CX;CX=0, 每次加 1CMPAX,0;比較ax=1和0JNZ OL1MOVAH,2; 字符輸出,要輸出的字符已經(jīng)在 dl 中OL2:POPDXINT 21HLOOP OL2RET四、實驗結(jié)果3) 虛擬平臺的模型機實驗設(shè)計1、 實驗?zāi)康?) 掌握模型機的基本原理和結(jié)構(gòu)2) 掌握機器指令與微程序的對應(yīng)關(guān)系;3) 掌握機器指令的執(zhí)行流程;2、 實驗設(shè)備74LS181芯片兩片,memory6116 片,微程序控制存儲器芯片一片,編譯器芯片一片, 八位同步計數(shù)器芯片一片,ALU_GS片一片,PC_GS片一片,74LS273

13、芯片若干,輸入, 輸出芯片各一片,選擇器芯片若干,連接器芯片若干,燈泡若干,開關(guān)若干等。3、環(huán)境組成原理虛擬實驗室采用的是B/S架構(gòu),在客戶端電腦上的瀏覽器地址欄中輸入正確的地址進行訪問即可。網(wǎng)址為4、實驗原理圖1 模型機示意圖圖1中所示模型機包括運算器、存儲器、微控器、輸入設(shè)備、輸出設(shè)備以及寄存器。這些部件的動作控制信號都有微控器根據(jù)微指令產(chǎn)生。需要特別說明的是由機器指令構(gòu)成的程序 存放在存儲器中,而每條機器指令對應(yīng)的微程序存儲在微控器中的存儲器中。模型機詳細原理見附件5、實驗內(nèi)容1)選擇實驗設(shè)備,將所需要的組件從組件列表中拖到實驗設(shè)計流程欄中2)搭建實驗流程:根據(jù)原理圖 1 和電路圖(見附

14、件) , 將已選擇的組件進行連線。3)輸入機器指令 : 選擇菜單中的“工具”,再選擇“模型機調(diào)試”,在指令輸入窗口 中輸入如下指令:000000000001000000001001001000000000101100110000000010110100000000000000本實驗設(shè)計機器指令程序如下:00000001地址(二進制)內(nèi)容(二進制)助記符說明0000 00000000 0000IN R0“INPUT DEVICE->R00000 00010001 0000ADD0AH,R0R0+0AH->R00000 00100000 10100000 00110010 0000ST

15、AR0,0BHR0->0BH0000 01000000 10110000 01010011 0000OUT 0BH0BH->LED0000 01100000 10110000 01110100 0000JMP 00H00H->PC0000 10000000 00000000 1010運算數(shù)據(jù)自定0000 1011求和結(jié)果4) 這里做的是個加法運算,第一個加數(shù)已經(jīng)存入到內(nèi)存的0000 1010單元中,第二個加數(shù)是需要手工輸入的。在實驗運行面板中點擊“運行”按鈕,選擇“輸入”芯片,設(shè)置輸入的數(shù)據(jù)后,雙擊連接“輸入”芯片的單脈沖,這樣第二個加數(shù)就設(shè)置好了。5)在實驗運行面板中雙擊連

16、續(xù)脈沖,模型機便開始工作,觀察各個芯片的狀態(tài)。或者在模型機調(diào)試窗口中(如圖2所示)點擊“指令執(zhí)行”選項卡,在模型機調(diào)試窗口中點擊“下一時鐘”,模型機機執(zhí)行到下一個時鐘,點擊“下一微指令”,模型機機執(zhí)行到下一個微指令,點擊“下一指令”,模型機機執(zhí)行到下一條指令。觀察各 個芯片的狀態(tài),思考模型機的運行原理。圖2 模型機調(diào)試窗口6、具體過程實現(xiàn)(1) 控制器把PC中的指令地址送往地址寄存器AR并發(fā)出讀命令。存儲器按給定的地址讀 出指令,經(jīng)由存儲器數(shù)據(jù)寄存器 MD送往控制器,保存在指令寄存器IR中。(2) 指令譯碼器ID對指令寄存器IR中的指令進行譯碼,分析指令的操作性質(zhì),并由控制電 路向存儲器、運算

17、器等有關(guān)部件發(fā)出指令所需要的微命令。(3) 當(dāng)需要由存儲器向運算器提供數(shù)據(jù)時, 控制器根據(jù)指令的地址部分, 形成數(shù)據(jù)所在的 存儲單元地址,并送往地址寄存器AR然后向存儲器發(fā)出讀命令,從存儲器中讀出的 數(shù)據(jù)經(jīng)由存儲器數(shù)據(jù)寄存器MD送往運算器。(4) 當(dāng)需要由運算器向存儲器寫入數(shù)據(jù)時, 控制器根據(jù)指令的地址部分, 形成數(shù)據(jù)所在的 存儲單元地址,并送往存儲器地址寄存器AR再將欲寫的數(shù)據(jù)存入存儲器數(shù)據(jù)寄存器 MDR最后向存儲器發(fā)出寫命令,MD中的數(shù)據(jù)即被寫入由MA脂示地址的存儲單元中。(5) 一條指令執(zhí)行完畢后, 控制器就要接著執(zhí)行下一條指令。 為了把下一條指令從存儲器 中取出,通常控制器把PC的內(nèi)容

18、加上一個數(shù)值,形成下一條指令的地址,但在遇到“轉(zhuǎn) 移”指令時,控制器則把“轉(zhuǎn)移地址”送入 PC??刂破鞑粩嘀貜?fù)上述過程的 (1)到(5),每重復(fù)一次, 就執(zhí)行了一條指令, 直到整個程序執(zhí)行完畢7、設(shè)計結(jié)果截圖虛擬實驗室連線截圖:執(zhí)行第一個指令:執(zhí)行第二個指令:執(zhí)行第三個指令: 執(zhí)行第四個指令:執(zhí)行第五個指令執(zhí)行第六個指令:六、使用說明兩個程序使用匯編語言在“ Masmfor WindowS集成實驗環(huán)境”下編寫,在 MS-DO模擬平 臺下運行。使用情況如詳細設(shè)計所述。七、總結(jié)與心得體會為期兩周的計算機組成原理與匯編課程設(shè)計就結(jié)束了,在這段時間呢,完成了諸多實 驗題目,解決了許多問題,包括計算機組

19、成與那里和匯編語言。在充實而忙碌的課程設(shè)計 同時,最重要的還是鞏固并進一步學(xué)習(xí)了像組成原理和匯編這樣更接近低層的軟硬件知識, 而不再是僅僅局限于像C、C+或是Java這樣的高級語言開發(fā)。理論學(xué)習(xí)只是一個學(xué)習(xí)初期階段,只有經(jīng)過了親身實踐操作,才能叫是真正掌握了知 識技能。就像是這個學(xué)期的課程設(shè)計初期一樣,初次開始匯編課設(shè),我對匯編并不是十分 了解,只是簡簡單單懂得幾句語言而已或者說只會讀懂程序,做幾個題而已。至于如何將 它們拼湊到一起組成一個實現(xiàn)一定功能的完整程序,成了我面前巨大的障礙,所以剛開始 時,我也是束手無策,毫無頭緒。但是通過對教材的復(fù)習(xí),查閱相關(guān)文獻和網(wǎng)絡(luò)資料,我 慢慢懂得并熟悉了這

20、個過程。課程設(shè)計完了之后,我才真切意識到,低級的東西并不十分簡單,恰恰相反,沒有艱 辛的付出,沒有刻苦的努力,任誰也永遠不能攻克它。八、參考文獻1 .Patric Juola.計算機組成與匯編語言原理 . 機械工業(yè)出版社2 .沈美明.IBM-PC匯編語言程序設(shè)計.清華大學(xué)出版社3 . 唐朔飛.計算機組成原理 .高等教育出版社九、附錄1、字符統(tǒng)計 .asm:DATASSEGMENTFNAME DB 'TEST.TXT' ,0ERROR1DB 'File not found',07H,0ERROR2DB 'Reading error' ,07H,0S

21、TRING1DB 'Number of $'STRING2DB ': $'ARRAYDB26 DUP(0)OTHERSDB0BUFFERDB ?EOF DB035束 ;1DATAS ENDS; 代碼段CODESSEGMENTASSUMCES:CODES,DS:DATASSTART:MOVAX,DATAS; 文件名; 提示信息; 各類字符提示信息; 字母; 其他; 以 #結(jié)字節(jié)的緩沖區(qū)、MOVDS,AX; 置數(shù)據(jù)段寄存器; 讀打開指定文件; 打開成功,轉(zhuǎn) OPEN; 顯示打開不成功提示信息; 保存文件代號; 從文件中讀一個字符; 如讀出錯,則轉(zhuǎn); 讀到文件結(jié)束符嗎

22、?MOVDX, OFFSETFNAMEMOVAX,3D00HINT 21HJNC OPENMOVSI, OFFSETERROR1CALL DMESSJMP OVEROPEN:MOVBX,AXGO: CALL READ_CHARJC READ_ERRORCMPAL,EOFJZ TYPE_OKCALL PUTCHJMP GOREAD_ERROMRO: VSI, OFFSETERROR2CALL DMESSTYPE_OKM: OVAH,3EHINT 21HCALL ENDLINECALL SHOWOVER: MOVAH,07 ; 為了顯示INT 21H; 為了顯示MOVAH,4CHINT 21HJR

23、EAD_CHAR PROCMOVCX,1INT 21HJC R2MOVDX, OFFSETBUFFERMOVAH,3FHCMPAX,CXMOVAL,EOF結(jié)束, 置文件結(jié)束符JB R1; 置緩沖區(qū)地址;置功能調(diào)用;讀; 讀出錯,轉(zhuǎn); 判文件是否結(jié); 設(shè)文件已經(jīng); 文件確已結(jié)束,轉(zhuǎn)MOVAL,BUFFER; 文件未結(jié)束,取所讀字符R1:CLCR2:RETREAD_CHAR ENDPJDMESS PROCDMESS1M: OVDL,SIINC SIORDL,DLJZ DMESS2MOVAH,2INT 21HJMP DMESS1DMESS2:RETDMESS ENDPPUTCH PROCPUSHDX

24、MOVDL,ALMOVAH,2INT 21HPOPDXmovCL,41HLEADI,ARRAYMOVCH,ALCMFCH,CL;若 IF<41H(A),0THERS+JB OTHERCMFCH,5AH;若IF>5AH(Z),跳轉(zhuǎn)繼續(xù)比較JA HIGHER2H1:CMPCH,CLJE CHAR;若IF=41H(A),CHAR0+JA LOOP1;若IF>41H(A),跳L1 比較42H(B)L00P1:INC CLADDDI,1JMP H1HIGHER2:movCL,61HLEADI,ARRAYCMPCH,CL;若IF<61H(A),0THERS+JB OTHERCMPC

25、H,7AH;若IF>7AH(Z),跳轉(zhuǎn)繼續(xù)比較JA 0THERH2:CMPCH,CLJE CHAR;若IF=61H(a),CHAR0+JA LOOP2;若IF>61H(a),跳L02比較62H(b)L00P2:INC CLADDDI,1JMP H2CHAR:XORCH,CHMOVCH,DIINC CHmovDI,CHOTHER:INC OTHERS ;OTHERS+; 比較結(jié)束RETPUTCH ENDPSHOW PROCLEASI,ARRAYMOVDI,41HLOOP3:LEADX,STRING1 ;字符串的輸出 Number ofMOVAH,09HINT 21HMOVDX,DIMOVAH,02HINT 21HLEA DX, STRING2; 字符串的輸出MOVAH,09HINT 21HXORAX,AXMOVAl,SI ; 將統(tǒng)計的數(shù)字送 AXADDSI,1CALL DISPLAY; 調(diào)用輸出兩位數(shù)字的子程序CALL ENDLINEINC DICMPDI,5BHJB LOOP3MOVAH,4CHINT 21HRETSHOW ENDPENDLINE PROC NEAR; 控制輸出格式,輸出回車換行子程序MOVAH,02HMOVDL,0AH; INT 21H ; 輸出換行符MOVAH,02HMOVDL,0DH; INT 21H; 輸出回車符RETENDLINE EN

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論