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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

5、) 在實驗運行面板中雙擊連續(xù)脈沖,模型機便開始工作,觀察各個芯片的狀態(tài)?;蛘咴谀P蜋C調試窗口中(如圖2所示)點擊“指令執(zhí)行”選項卡,在模型機調試窗口中點擊“下一時鐘”,模型機機執(zhí)行到下一個時鐘,點擊“下一微指令”,模型機機執(zhí)行到下一個微指令,點擊“下一指令”,模型機機執(zhí)行到下一條指令。觀察各個芯片的狀態(tài),思考模型機的運行原理。四、課程設計的要求1、根據題目內容,查閱資料。2、編寫課程設計預習報告。3、編制程序及調試程序。4、分析總結,寫出課程設計報告,報告中應該包含程序功能與使用說明、程序功能實現方法說明、如流程圖與算法參數說明等內容,設計經驗體會總結,源程序清單。 5、實驗過程由指導老師監(jiān)督

6、,聽從老師安排和督導。6、每次任務完成后由指導老師逐個的檢查實驗內容、結果并評分,不符合要求的重寫五、實驗詳細設計1)統(tǒng)計文件中各字母出現的頻率一、實驗原理在程序中,以是否讀到ASCII碼為0作為字符串末尾結束的標志;讀取文件,并對文件中的字符串進行邏輯判斷(不同字母之間各自對應的ASCII碼),統(tǒng)計字符數。二、 實驗目的經過該實驗知道如何通過編寫匯編程序讀取文件并且讀取文件中內容;通過分支程序設計來統(tǒng)計字符數,三、實驗設計內容 讀取文件代碼段: MOV AX,DATAS MOV DS,AX ;置數據段寄存器 ; MOV DX,OFFSET FNAME MOV AX,3D00H ;讀打開指定文

7、件 INT 21H JNC OPEN ;打開成功,轉 OPEN MOV SI,OFFSET ERROR1 ;顯示打開不成功提示信息 CALL DMESS JMP OVER ; OPEN: MOV BX,AX ;保存文件代號 GO: CALL READ_CHAR ;從文件中讀一個字符 JC READ_ERROR ;如讀出錯,則轉 CMP AL,EOF ;讀到文件結束符嗎? JZ TYPE_OK CALL PUTCH JMP GO將文件內容推入棧中,并輸出:READ_CHAR PROC MOV CX,1 MOV DX,OFFSET BUFFER ;置緩沖區(qū)地址 MOV AH,3FH ;置功能調用號

8、 INT 21H ;讀 JC R2 ;讀出錯,轉 CMP AX,CX ;判斷文件是否結束 MOV AL,EOF ;若文件已經結束,置文件結束符 JB R1 ;文件確定已經結束,轉到 MOV AL,BUFFER ;文件未結束,取所讀字符 R1:CLC R2:RET READ_CHAR ENDP ; DMESS PROC DMESS1:MOV DL,SI INC SI OR DL,DL JZ DMESS2 MOV AH,2 INT 21H JMP DMESS1 DMESS2:RET DMESS ENDP PUTCH PROC PUSH DX MOV DL,AL MOV AH,2 INT 21H P

9、OP DX 文件主體部分(對所讀字符ASCII碼進行比較判斷并統(tǒng)計字符數):mov CL,41H LEA DI,ARRAY MOV CH,AL CMP CH,CL ;若IF5AH(Z),跳轉繼續(xù)比較 JA HIGHER2 H1: CMP CH,CL JE CHAR ;若IF=41H(A),CHAR0+ JA LOOP1 ; 若IF41H(A),跳L1比較42H(B) LOOP1: INC CL ADD DI,1 JMP H1HIGHER2: mov CL,61H LEA DI,ARRAY CMP CH,CL ;若IF7AH(Z),跳轉繼續(xù)比較 JA OTHERH2: CMP CH,CL JE

10、CHAR ;若IF=61H(a),CHAR0+ JA LOOP2 ; 若IF61H(a),跳L02比較62H(b) LOOP2: INC CL ADD DI,1 JMP H2 CHAR: XOR CH,CH MOV CH,DI INC CH mov DI,CH OTHER: INC OTHERS ;OTHERS+ ;比較結束 四、實驗截圖2)用遞歸計算50以內Fibonacci 數, 以十進制數輸出一、實驗目的通過該實驗充分了解遞歸程序的用法二、實驗內容三、實驗設計內容循環(huán)遞歸代碼段(主要實現遞歸調用斐波那契函數)MOV AX,F1 ;ax=0 ADD AX,F2 ;ax=1 JC EXIT

11、;若有進位則跳出 MOV BX,F2 ;bx=1 MOV F1,BX ;f1=1 MOV F2,AX ;f2=1 CALL OUTPUT ;調用output MOV DL, ;每個數字后的空格 MOV AH,2 INT 21H DEC N JNZ LPEXIT: MOV AH,4CHINT 21H ;返回DOS輸出斐波那契數:OUTPUT: MOV BX,10 MOV CX,0OL1:MOV DX,0 DIV BX ;ax=0,dx=1 ADD DL,0 ;加上30h,使數字3變成字符3 PUSH DX INC CX ;CX=0,每次加1 CMP AX,0 ;比較ax=1和0 JNZ OL1

12、MOV AH,2 ;字符輸出,要輸出的字符已經在dl中OL2: POP DX INT 21H LOOP OL2 RET四、 實驗結果3)虛擬平臺的模型機實驗設計1、 實驗目的1) 掌握模型機的基本原理和結構2) 掌握機器指令與微程序的對應關系;3) 掌握機器指令的執(zhí)行流程;2、 實驗設備74LS181芯片兩片,memory 6116一片,微程序控制存儲器芯片一片,編譯器芯片一片,八位同步計數器芯片一片,ALU_G芯片一片,PC_G芯片一片,74LS273芯片若干,輸入,輸出芯片各一片,選擇器芯片若干,連接器芯片若干,燈泡若干,開關若干等。3、環(huán)境 組成原理虛擬實驗室采用的是B/S架構,在客戶端

13、電腦上的瀏覽器地址欄中輸入正確的地址進行訪問即可。網址為4、實驗原理圖1 模型機示意圖圖1中所示模型機包括運算器、存儲器、微控器、輸入設備、輸出設備以及寄存器。這些部件的動作控制信號都有微控器根據微指令產生。需要特別說明的是由機器指令構成的程序存放在存儲器中,而每條機器指令對應的微程序存儲在微控器中的存儲器中。模型機詳細原理見附件。5、實驗內容1)選擇實驗設備,將所需要的組件從組件列表中拖到實驗設計流程欄中2)搭建實驗流程:根據原理圖1和電路圖(見附件),將已選擇的組件進行連線。3)輸入機器指令:選擇菜單中的“工具”,再選擇“模型機調試”,在指令輸入窗口中輸入如下指令: 本實驗設計機器指令程序

14、如下:地址(二進制)內容(二進制)助記符說明0000 00000000 0000IN R0“INPUT DEVICE”-R00000 00010001 0000ADD 0AH,R0R0+0AH-R00000 00100000 10100000 00110010 0000STA R0,0BHR0-0BH0000 01000000 10110000 01010011 0000OUT 0BH0BH-LED0000 01100000 10110000 01110100 0000JMP 00H00H-PC0000 10000000 00000000 1010運算數據自定0000 1011求和結果4) 這

15、里做的是個加法運算,第一個加數已經存入到內存的0000 1010單元中,第二個加數是需要手工輸入的。在實驗運行面板中點擊“運行”按鈕,選擇“輸入”芯片,設置輸入的數據后,雙擊連接“輸入”芯片的單脈沖,這樣第二個加數就設置好了。5) 在實驗運行面板中雙擊連續(xù)脈沖,模型機便開始工作,觀察各個芯片的狀態(tài)?;蛘咴谀P蜋C調試窗口中(如圖2所示)點擊“指令執(zhí)行”選項卡,在模型機調試窗口中點擊“下一時鐘”,模型機機執(zhí)行到下一個時鐘,點擊“下一微指令”,模型機機執(zhí)行到下一個微指令,點擊“下一指令”,模型機機執(zhí)行到下一條指令。觀察各個芯片的狀態(tài),思考模型機的運行原理。圖2 模型機調試窗口6、具體過程實現(1)

16、控制器把PC中的指令地址送往地址寄存器AR,并發(fā)出讀命令。存儲器按給定的地址讀出指令,經由存儲器數據寄存器MDR送往控制器,保存在指令寄存器IR中。 (2) 指令譯碼器ID對指令寄存器IR中的指令進行譯碼,分析指令的操作性質,并由控制電路向存儲器、運算器等有關部件發(fā)出指令所需要的微命令。 (3) 當需要由存儲器向運算器提供數據時,控制器根據指令的地址部分,形成數據所在的存儲單元地址,并送往地址寄存器AR,然后向存儲器發(fā)出讀命令,從存儲器中讀出的數據經由存儲器數據寄存器MDR送往運算器。 (4) 當需要由運算器向存儲器寫入數據時,控制器根據指令的地址部分,形成數據所在的存儲單元地址,并送往存儲器

17、地址寄存器AR,再將欲寫的數據存入存儲器數據寄存器MDR,最后向存儲器發(fā)出寫命令,MDR中的數據即被寫入由MAR指示地址的存儲單元中。 (5) 一條指令執(zhí)行完畢后,控制器就要接著執(zhí)行下一條指令。為了把下一條指令從存儲器中取出,通??刂破靼裀C的內容加上一個數值,形成下一條指令的地址,但在遇到“轉移”指令時,控制器則把“轉移地址”送入PC。 控制器不斷重復上述過程的(1)到(5),每重復一次,就執(zhí)行了一條指令,直到整個程序執(zhí)行完畢7、設計結果截圖虛擬實驗室連線截圖:執(zhí)行第一個指令:執(zhí)行第二個指令:執(zhí)行第三個指令:執(zhí)行第四個指令:. 執(zhí)行第五個指令:執(zhí)行第六個指令:六、使用說明 兩個程序使用匯編語

18、言在“Masm for Windows集成實驗環(huán)境”下編寫,在MS-DOS模擬平臺下運行。使用情況如詳細設計所述。七、總結與心得體會為期兩周的計算機組成原理與匯編課程設計就結束了,在這段時間呢,完成了諸多實驗題目,解決了許多問題,包括計算機組成與那里和匯編語言。在充實而忙碌的課程設計同時,最重要的還是鞏固并進一步學習了像組成原理和匯編這樣更接近低層的軟硬件知識,而不再是僅僅局限于像C、C+或是Java這樣的高級語言開發(fā)。理論學習只是一個學習初期階段,只有經過了親身實踐操作,才能叫是真正掌握了知識技能。就像是這個學期的課程設計初期一樣,初次開始匯編課設,我對匯編并不是十分了解,只是簡簡單單懂得幾

19、句語言而已或者說只會讀懂程序,做幾個題而已。至于如何將它們拼湊到一起組成一個實現一定功能的完整程序,成了我面前巨大的障礙,所以剛開始時,我也是束手無策,毫無頭緒。但是通過對教材的復習,查閱相關文獻和網絡資料,我慢慢懂得并熟悉了這個過程。課程設計完了之后,我才真切意識到,低級的東西并不十分簡單,恰恰相反,沒有艱辛的付出,沒有刻苦的努力,任誰也永遠不能攻克它。八、參考文獻1.Patric Juola.計算機組成與匯編語言原理.機械工業(yè)出版社 2.沈美明.IBM-PC匯編語言程序設計.清華大學出版社 3.唐朔飛.計算機組成原理.高等教育出版社九、附錄1、字符統(tǒng)計.asm:DATAS SEGMENT

20、FNAME DB TEST.TXT,0 ;文件名 ERROR1 DB File not found,07H,0 ;提示信息 ERROR2 DB Reading error,07H,0 STRING1 DB Number of $ ;各類字符提示信息 STRING2 DB : $ ARRAY DB 26 DUP(0) ;字母OTHERS DB 0 ;其他 BUFFER DB ? EOF DB 035 ;以#結束 ;1字節(jié)的緩沖區(qū)、 DATAS ENDS ;代碼段 CODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX

21、 ;置數據段寄存器 ; MOV DX,OFFSET FNAME MOV AX,3D00H ;讀打開指定文件 INT 21H JNC OPEN ;打開成功,轉 OPEN MOV SI,OFFSET ERROR1 ;顯示打開不成功提示信息 CALL DMESS JMP OVER ; OPEN: MOV BX,AX ;保存文件代號 GO: CALL READ_CHAR ;從文件中讀一個字符 JC READ_ERROR ;如讀出錯,則轉 CMP AL,EOF ;讀到文件結束符嗎? JZ TYPE_OK CALL PUTCH JMP GOREAD_ERROR:MOV SI,OFFSET ERROR2 C

22、ALL DMESS ; TYPE_OK:MOV AH,3EH INT 21H CALL ENDLINE CALL SHOW OVER: MOV AH,07;為了顯示 INT 21H ;為了顯示 MOV AH,4CH INT 21H ; READ_CHAR PROC MOV CX,1 MOV DX,OFFSET BUFFER ;置緩沖區(qū)地址 MOV AH,3FH ;置功能調用號 INT 21H ;讀 JC R2 ;讀出錯,轉 CMP AX,CX ;判文件是否結束 MOV AL,EOF ;設文件已經結束,置文件結束符 JB R1 ;文件確已結束,轉 MOV AL,BUFFER ;文件未結束,取所讀

23、字符 R1:CLC R2:RET READ_CHAR ENDP ; DMESS PROC DMESS1:MOV DL,SI INC SI OR DL,DL JZ DMESS2 MOV AH,2 INT 21H JMP DMESS1 DMESS2:RET DMESS ENDP PUTCH PROC PUSH DX MOV DL,AL MOV AH,2 INT 21H POP DX mov CL,41H LEA DI,ARRAY MOV CH,AL CMP CH,CL ;若IF5AH(Z),跳轉繼續(xù)比較 JA HIGHER2 H1: CMP CH,CL JE CHAR ;若IF=41H(A),CH

24、AR0+ JA LOOP1 ; 若IF41H(A),跳L1比較42H(B) LOOP1: INC CL ADD DI,1 JMP H1HIGHER2: mov CL,61H LEA DI,ARRAY CMP CH,CL ;若IF7AH(Z),跳轉繼續(xù)比較 JA OTHERH2: CMP CH,CL JE CHAR ;若IF=61H(a),CHAR0+ JA LOOP2 ; 若IF61H(a),跳L02比較62H(b) LOOP2: INC CL ADD DI,1 JMP H2 CHAR: XOR CH,CH MOV CH,DI INC CH mov DI,CH OTHER: INC OTHER

25、S ;OTHERS+ ;比較結束 RET PUTCH ENDP SHOW PROC LEA SI,ARRAY MOV DI,41HLOOP3: LEA DX,STRING1 ;字符串的輸出Number of MOV AH,09H INT 21H MOV DX,DI MOV AH,02H INT 21H LEA DX, STRING2 ;字符串的輸出 MOV AH,09H INT 21H XOR AX,AX MOV Al,SI ;將統(tǒng)計的數字送AX ADD SI,1 CALL DISPLAY ;調用輸出兩位數字的子程序 CALL ENDLINE INC DI CMP DI,5BH JB LOOP3 MOV AH,4CH INT 21H RET SHOW ENDP ENDLINE PROC NEAR;控制輸出格式,輸出回車換行子程序 MOV AH,02H MOV DL,0AH ; INT 21H ;輸出換行符 MOV AH,02H MOV DL,0DH ; INT 21H ;輸出回車符 RET ENDLINE ENDP DISPLAY PROC NEAR;輸出兩位數字的子程序(輸出兩位數字為十進制) MOV BL,10 DIV BL

溫馨提示

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

評論

0/150

提交評論