微機原理實驗.docx

(9頁)

'微機原理實驗.docx'
?微機原理實驗一、 實驗目的:1、 應用學過的匯編語言編寫簡單程序,將匯編語言在編程中實際應用。2、 掌握匯編語言的編輯、匯編、連接、調試等基本方法。3、 靈活應用各種語句實現要求的程序功能。4、 在實驗中進一步掌握并熟練應用匯編語言,理解常用指令、偽指令及存儲空間分配等二、 實驗內容:從鍵盤取得一串字符顯示在屏幕上,然后將這串字符以輸入的反序再顯示一遍,并統計這字符串中‘A’的個數,顯示在屏幕上。附加要求:可以從鍵盤輸入需要統計的字符,并統計這字符串中這個字符的個數,顯示在屏幕上。三、 流程圖:開 始結 束輸出相同的字符數量計數加1和輸入字符比較是否相同CX=0?指針指向第一個字符設置CX循環次數即字符串的字符數輸出提示‘輸入字符’‘SHU RU ZI FU ’CX=0?輸出指針指向單元中的字符指針指向 —1指向前一個單元指針指向字符串最后一個字符設置循環次數CX為輸入的字符個數輸出提示“反轉后字符”‘FAN ZHUAN HOU ZI FU ’輸入字符串輸出提示“輸入字符串”‘SHU RU ZI FU CHUAN ’輸入要查找的字符否是是否指向下一個字符是否四、 實驗程序:DATAS SEGMENTPASS DB 20 ;預留20個字節的空間存放輸入的字符BLK1 DB 'SHU RU ZI FU CHUAN: $' ;在屏幕上要顯示的提示語句BLK2 DB 'SHU RU ZI FU : $'BLK3 DB 'SHU LIANG SHI: $'BLK4 DB 'FAN ZHUAN HOU: $'DATAS ENDS;********以上是數據段定義,下面開始代碼段************CODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX ;實現ASSUME中的承諾;**************************************************** MOV AH,09H ;字符串輸出功能09H LEA DX,BLK1 INT 21H ;**********顯示第一句提示語************************* MOV AH,0AH ;字符串輸入功能0AH LEA DX,PASS INT 21H ;********以上完成字符串輸入并顯示出來*************** MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H ;*********以上實現回車換行*************************** MOV AH,09H LEA DX,BLK4 INT 21H ;*******輸出BLK4中定義的內容,提示為反轉后字符串*************** MOV CL,PASS+1 ;PASS+1處是實際輸入的字符個數 MOV CH,0 ;CH置0,CX為循環的次數也就是輸入的字符個數 MOV DL,PASS+1 MOV DH,0 ;DX同樣是字符個數,用于后面的加法運算 LEA SI,PASS+2 ;PASS+2處為實際輸入字符的開始位置; ADD SI,DX ;用加法實現了將SI的指針指向了字符串的最后一個字符S0: DEC SI ;SI不斷減1,指針指向地址不斷前移,也就反向了輸出剛才輸入的字符串 MOV AH,02H ;顯示輸出功能02H MOV DL,[SI] ;輸出指針所指向單元中的內容 INT 21H LOOP S0;**********以上用循實現了字符串的反轉后輸出功能*************** MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H ;***********回車換行******************* MOV AH,09H LEA DX,BLK2 INT 21H;**********顯示提示語BLK2輸入要查找的字符的提示語輸出************************ MOV AH,01H ; 有回顯的輸入,顯示的是輸入的要查找字符 INT 21H MOV CL,PASS+1 XOR CH,CH LEA SI,PASS+2 XOR DL,DL ;和前面相同CX設置了循環次數,SI指向第一個字符S1: CMP AL,[SI] ;進行字符比較,是和Al比較,若相同則計數加1,不同則比較下一個 JNZ NEXT INC DL ;DL記錄的是比較過程中相同的字符數NEXT: INC SI ;指向下一個字符LOOP S1 MOV BL,DL ;DL記錄的數量給BL后面語句輸出之前要用到DL ;*******通過以上循環將所有字符比較一遍得到數量******************************* MOV AH,02H MOV DL,0DH INT 21H MOV DL,0AH INT 21H ;*******************回車換行************************** MOV AH,09H LEA DX,BLK3 INT 21H;*****輸出提示語BLK3相同字符的數量************************** MOV DL,BL ADD DL,30H ;計數加30H是為了轉換成ASC碼輸出。 MOV AH,02H INT 21H MOV AH,4CH INT 21HCODES ENDS END START五、 調試及遇到的問題: 在使用MASA進行連接link的時候出現了語句的錯誤,經過仔細的查找將語句中因為輸入錯誤,符號輸入錯誤,比如出現了漢字輸入的分號等問題加以修改,程序可以正常生成obj文件,進而可以生成exe可執行文件,但是在執行過程中出現了下面幾個比較嚴重的問題,是因為程序編寫邏輯或原理錯誤造成的,雖然可以得到exe可執行文件但是輸出的結果是有問題的,所以經過了改正才得以解決。(1)從輸出的字符串可以看出輸出了亂碼經過查找是因為,定義的字符串地址PASS,其中PASS+1是字符的個數,PASS+2是第一個字符串,所以在程序中將字符個數 MOV CL,PASS+1 語句寫成了MOV CL,PASS就使得程序出現了上面的顯示有亂碼輸出。(2)輸出的字符少了一個問題在相同的位置,字符的第一個實際的位置是在PASS+2,而在編寫程序的時候寫的是PASS+1,所以導致了在程序輸出的時候得到的是少一個字符的情況。這個問題需要仔細看輸出才發現的,所以在編程的時候容易發生錯誤,在認真看輸出后發現少了一個字符。(3)輸出的數量顯示的是一個笑臉圖案而不是數字查找問題后發現,是在定義輸出的時候少了一個步驟,ADD DL,30H ,加30H是讓DL中得到的計數值轉化成為ASC碼輸出然后我們才能看到數字,否則看到的都是對應的亂碼。這個問題是一個編程程序根本問題如果不解決是得不到最終結果的,所以在多次調試和改變之后終于能夠得到最后的正確結果。六、 實驗結果:經過反復的找錯調試,最終程序正確并且得到了輸出的結果,輸入任意的字符串,能夠反序輸出然后輸入要查找的字符,能夠得到要查找的字符的個數。七、 分析總結:通過這次實驗,實際操作編寫一個程序,并運行得到結果,整個過程讓我對匯編語言的理解更為深刻,對匯編語言的各種語句的功能更加熟悉,對匯編程序的運行過程也有了更直觀的了解。課程知識和實驗結合起來,能夠使知識運用更熟悉靈活。同時,編寫程序是一個需要知識和細心地過程,任何的細小的錯誤都會使得程序最終不能正常的運行,所以在查找錯誤的過程中更能學習到匯編語言編程的方法和邏輯。在編寫程序時同樣也遇到了很多的問題,在解決問題的過程中需要耐心的查找錯誤最終改正錯誤??傊?,匯編語言編程能夠讓我對匯編語句,存儲設備,地址單元,指針等問題有了更深和更直觀的了解學習。
關 鍵 詞:
實驗 微機 原理
 天天文庫所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:微機原理實驗.docx
鏈接地址: http://www.476824.live/p-50982483.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服點擊這里,給天天文庫發消息,QQ:1290478887 - 聯系我們

本站為“文檔C2C交易模式”,即用戶上傳的文檔直接賣給(下載)用戶,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有【成交的100%(原創)】。本站是網絡服務平臺方,若您的權利被侵害,侵權客服QQ:1290478887 歡迎舉報。

[email protected] 2017-2027 http://www.476824.live 網站版權所有

粵ICP備19057495號 

收起
展開
球探网即时蓝球比分 极速快三app下载 大乐透选号技巧精准公式 正规股票配资平台有哪些 东莞期货配资公司 山东11选5推荐买号任一 3d选和值技巧规律 江西十一选五开奖结 辽宁11选5与哪个城市像 今天上海快三推荐号码 基金配资比例