歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

北京理工大學(xué)微機原理實驗報告.doc

  • 資源ID:6508984       資源大?。?span id="l0uuqm5" class="font-tahoma">591KB        全文頁數(shù):13頁
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

北京理工大學(xué)微機原理實驗報告.doc

微機原理與接口技術(shù)實驗報告實驗內(nèi)容:匯編語言程序設(shè)計實驗 組別:12姓名: 班級: 學(xué)號:一、實驗?zāi)康?、熟悉IDE86集成開發(fā)環(huán)境的使用。2、通過編程、上機調(diào)試,進一步理解匯編語言的設(shè)計思路與執(zhí)行過程。3、熟悉DOS命令調(diào)用,以達到輸入輸出、返回DOS系統(tǒng)等目的。4、掌握利用匯編實現(xiàn)求和與求最值的方法。5、掌握利用匯編實現(xiàn)數(shù)制轉(zhuǎn)換的方法。6、鞏固理論知識,鍛煉動手編程,獨立思考的能力。二、實驗內(nèi)容(具體內(nèi)容)1、求從TABLE開始的10個無符號字節(jié)數(shù)的和,并將結(jié)果放在SUM字單元中。并查看前5個,前8個數(shù)之和以及各寄存器和內(nèi)存的狀態(tài)。2、在1的基礎(chǔ)上修改程序,求出10個數(shù)中的最大值和最小值,最后將最大最小值分別賦給MAX及MIN。3、求1到 100 的累加和,并用十進制形式將結(jié)果顯示在屏幕上。要求實現(xiàn)數(shù)據(jù)顯示,并返回DOS狀態(tài)。 三、實驗方法1、設(shè)計思路 (1)實驗1的設(shè)計思路:先將10個要相加的數(shù)存在以TABLE為首的10個連續(xù)的存儲單元中,然后利用循環(huán)結(jié)構(gòu)依次取出數(shù)值放在AL中并累加,若有進位則加到AH中直至循環(huán)10次累加結(jié)束,將累加的結(jié)果放在SUM中并返回DOS狀態(tài)。 (2)實驗2的設(shè)計思路:先將10個要比較的數(shù)放在以TABLE為首的10個連續(xù)的存儲單元中。將第一個數(shù)首先賦給AL和AH(分別存儲相對最小和最大值)在利用LOOP循環(huán)結(jié)構(gòu),依次和下面的數(shù)進行比較,每次把相對的最大值與最小值存儲到AH和AL中直至循環(huán)9次比較結(jié)束,將AH和AL里面的最大值與最小值賦給MAX和MIN,返回DOS狀態(tài) (3)實驗3的設(shè)計思路:先在內(nèi)存中定義COUNT=100,表示1-100求和,若相求1-n的和并顯示只需COUNT的值為n即可,同時定義一塊以DNUM為首地址的數(shù)據(jù)區(qū)用于存儲累加和的十進制數(shù)對應(yīng)的ASCII碼。先利用AX和LOOP求出1-COUNT的累加和存在AX中;在進行數(shù)值轉(zhuǎn)化,AX依次除10取余數(shù)保存,將16進制數(shù)轉(zhuǎn)化為10進制ASCII碼值并存在DUNM中。最后在屏幕上顯示并返回DOS狀態(tài)。2程序流程圖 實驗一、二和三的流程圖分別如圖1、圖2和圖3所示數(shù)據(jù)段地址放入相應(yīng)的段寄存器SI指向TABLEAX清零設(shè)置循環(huán)次數(shù),CX=10把AL的值賦給SUMCX =0?將SI指向的數(shù)加到AL中若有進位加到AH中SI加1指向下一個數(shù)CX減1返回DOS狀態(tài)結(jié)束定義數(shù)據(jù)段開始NY圖1 10個數(shù)求和流程圖 圖2 求10個數(shù)最大最小值流程圖返回DOS狀態(tài)結(jié)束數(shù)據(jù)段地址放入相應(yīng)的段寄存器SI指向TABLE第一個數(shù)送入AL和AH設(shè)置循環(huán)次數(shù),CX=9把AL的值賦給MINCX =0?SI指向的值與AL比較,較小的值存入AL中SI=SI+1SI指向的值與AH比較,較大的值存入AH中CX減1定義數(shù)據(jù)段開始NY把AH的值賦給MAXAX的值賦給SUM數(shù)據(jù)段地址放入相應(yīng)的段寄存器COUNT=100, AX=0累加次數(shù)CX=COUNT累加:AX=AX+CX定義數(shù)據(jù)段開始NYCX =0?CX=CX-1DX清零循環(huán)次數(shù)CX=4屏幕顯示數(shù)字和返回DOS狀態(tài)結(jié)束CX =0?DX,AX構(gòu)成的數(shù)除10取余,余數(shù)保存在DX將余數(shù)加上30H保存在DUNM中,CX減1YN圖3 1-100求和并在屏幕顯示流程圖四、實驗源程序(必要的文字注釋) 實驗一: ;求10個無符號字節(jié)數(shù)的和,結(jié)果存在SUM中DATA SEGMENT ;定義數(shù)據(jù)段 TABLE DB 12H,23H,34H,45H,56H ;10個加數(shù) DB 67H,78H,89H,9AH,0FDH SUM DW ?DATA ENDS;CODE SEGMENT ;定義代碼段 ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX ;初始化DS LEA SI,TABLE ;SI指向TABLE MOV CX,10 ;循環(huán)次數(shù)為10 XOR AX,AX ;AX清零NEXT: ADD AL,SI ;把一個數(shù)加到AX中去 ADC AH,0 ;若有進位AH加1 INC SI ;SI指向下一個數(shù) LOOP NEXT ;循環(huán)相加 MOV SUM,AX ;循環(huán)結(jié)束將結(jié)果保存到SUM中 MOV AH,4CH ;返回DOS狀態(tài) INT 21HCODE ENDS ;代碼段結(jié)束 END START ;匯編結(jié)束,起始地址為START實驗二:;求出10個數(shù)中的最大值和最小值。DATA SEGMENTTABLE1 DB 12H,23H,34H,45H,56H ;十個數(shù)據(jù) DB 67H,78H,89H,9AH,0FDHMIN DB ? ;最小值MAX DB ? ;最大值DATA ENDS;CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATA MOV DS,AX ;數(shù)據(jù)段段地址送入DS MOV ES,AX ;附加數(shù)據(jù)段段地址送入ES LEA SI,TABLE1 MOV CX,9 ;比較次數(shù),一共9次 MOV AL,SI ;把第一個數(shù)送入AL,把最小數(shù)存在AL中 MOV AH,SI ;把第一個數(shù)送入AH,把最大數(shù)存在AH中NEXT: INC SI CMP AL,SI ;比較AL中的數(shù)和下一個數(shù)的大小 JC GOON ;如果AL中的數(shù)小轉(zhuǎn)到GOON,繼續(xù)執(zhí)行 MOV AL,SI ;如果AL中的數(shù)大,將小的數(shù)存入ALGOON: CMP AH,SI ;比較AH中的數(shù)和下一個數(shù)的大小 JNC CONTU ;如果AH中的數(shù)大轉(zhuǎn)到CONTU,去下一次循環(huán) MOV AH,SI ;如果AH中的數(shù)大,將大的數(shù)存入AHCONTU: LOOP NEXT ;繼續(xù)循環(huán)直至全部比較完畢 MOV MAX,AH ;將最大的數(shù)存入MAX中 MOV MIN,AL ;將最小的數(shù)存入MIN中 MOV AH,4CH ;返回DOS狀態(tài) INT 21HCODE ENDS ;代碼段結(jié)束END START ;匯編結(jié)束,起始地址為START實驗三:;1-100求和并用十進制在品目上顯示,程序結(jié)束返回DOS狀態(tài)DATA SEGMENT ;數(shù)據(jù)段 SUM DW 0 ;1-100的和 DNUM DB 0000,0DH,0AH,$ ;存儲1-100和的十進制ASCII碼字符串 COUNT DW 100 ;求和的數(shù)目100個,當(dāng)需要求1-n的數(shù)字和時只;需修改100為所需要的n即可DATA ENDS;SSEG SEGMENT ;堆棧段 DW 32 DUP(?)SSEG ENDS;CODE SEGMENT ;代碼段 ASSUME CS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATA MOV DS,AX ;數(shù)據(jù)段的段地址送入DS MOV AX,SSEG MOV SS,AX ;堆棧段的段地址送入SS CALL SUMM ;求1-100的數(shù)據(jù)和,結(jié)果存入AX中 MOV SUM,AX ;和存入SUM中 CALL DISP ;將十六進制數(shù)轉(zhuǎn)化相應(yīng)的十進制ASCII碼值,;存在DNUM中 LEA DX,DNUM ;使用DOS功能調(diào)用,在屏幕上顯示 MOV AH,9 INT 21H MOV AH,4CH ;返回DOS狀態(tài) INT 21HSUMM PROC ;求和子程序 XOR AX,AX ;AX清零 MOV CX,COUNT ;求和的數(shù)目,這里COUNT=100CALCU:ADD AX,CX LOOP CALCU RET ;求和結(jié)束返回,求和值存在AX中SUMM ENDP ;DISP PROC ;轉(zhuǎn)化為十進制ACSII碼值子程序 MOV CX,4 ;要顯示的數(shù)為四位十進制數(shù) MOV BX,10 GOON: LEA SI,DNUM ;顯示的ASCII碼字符串的偏移地址給SI XOR DX,DX ;DX清零,DX、AX存放1-100的和,AX為低位 DIV BX ;每次除10,余數(shù)為顯示數(shù)值, ADD SI,CX ;SI指向存入數(shù)據(jù)的下一位 ADD SI-1,DL ;要顯示的十進制數(shù)轉(zhuǎn)為相應(yīng)的ASCII碼 LOOP GOON ;循環(huán)4次將要顯示的十進制數(shù)由低到高轉(zhuǎn)化 RETDISP ENDP;CODE ENDSEND START5、 實驗結(jié)果1、 實驗一:10個無符號字節(jié)數(shù)加和(1)、TABLE中前5個數(shù)的和為0104H,結(jié)果如圖4所示,存儲在AX中。圖4 TABLE中前5個數(shù)字和 (2)、TABLE中前8個數(shù)的和為026CH,結(jié)果如圖5所示,存儲在AX中。圖5 TABLE中前8個數(shù)字和(3)、程序運行完結(jié)果結(jié)果如圖6所示,十個值的和為0403H,存儲在AX中。圖6 TABLE中前10個數(shù)字和2、實驗二:10個數(shù)求最大最小值 為了保證程序的正確性,在這里我用三組輸入測試,分別為:12H,23H,34H,45H,56H,67H,78H,89H,9AH,0FDH (最大右邊,最小左邊)12H,9H,34H,45H,56H,67H,0FFH,89H,9AH,0FDH (最大最小在中間)0FFH,9H,34H,45H,56H,67H,0FEH,89H,9AH,2H (最大左邊,最小右邊) 實驗結(jié)果分別如圖7,圖8,圖9所示。圖7 第一組輸入運行結(jié)果圖8 第二組輸入運行結(jié)果圖9 第三組輸入運行結(jié)果 3、實驗三:1-100求和并顯示 實驗三的結(jié)果分別如圖10,圖11,圖12所示,其中圖10為1-100的累加和保存在AX中,結(jié)果為13BAH,圖11為轉(zhuǎn)化為相應(yīng)的十進制ASCII碼保存在DS:0002-DS:0005, 圖12為窗口顯示。圖10 1-100的累加和圖11 1-100和的相應(yīng)ASCII碼 圖12 1-100和的屏幕顯示6、 實驗中遇到的問題及解決方法1、在做實驗一時由于對軟件不是很熟悉,做起來不是很順手,而且在編譯時軟件自身有一個控制參數(shù)/zi,當(dāng)時在做實驗時,由于不小心在后面多打上了一個字母,造成無法編譯的情況,經(jīng)過老師的指點才發(fā)現(xiàn)去除后能夠正常編譯了。2、在做實驗二時,剛開始我是用冒泡排序法先排序,這樣第一個和最后一個就是最大最小值,但這樣由于排序的過程中需要不斷交換數(shù)字使得效率很低,后來改成了使用AL和AH存放最大最小值,不去排序大大減少了排序的次數(shù)。3、在做實驗二時,開始循環(huán)次數(shù)我設(shè)成了10,導(dǎo)致出來的結(jié)果總也不對,程序錯誤。后來我使用單步調(diào)試和查看寄存器值相結(jié)合的方法發(fā)現(xiàn)多比較了一次,將CX的初值改成9結(jié)果正確。4、在做實驗三時,由于有了前兩個實驗的基礎(chǔ),在累加部分沒有問題,結(jié)果為13BAH,但在16進制轉(zhuǎn)化為10進制時,單步調(diào)試每到除10的地方總出現(xiàn)“divide by 0”的錯誤提示。經(jīng)一步一步仔細(xì)檢查發(fā)現(xiàn)原來我設(shè)BL=10,這樣做除法時用AX除BL結(jié)果保存在AL中,而1-100相加為5050,第一次除10后變成了505,超出了AL的范圍造成錯誤。使用DX,AX兩個寄存器保存被除數(shù),設(shè)BX為10,這樣商保存在AX里,不會超出范圍,結(jié)果正確。七、心得體會與建議通過這次上機實驗,我了解與熟悉了IDE86集成開發(fā)環(huán)境,以及調(diào)試和使用的方法。與此同時,我對于匯編語言中的編寫習(xí)慣、語法要求等有了更深的認(rèn)識。此外通過此次實驗讓我看到,知識溫故性的重要,對于排序和比較大二時就學(xué)過了,當(dāng)時也做了相應(yīng)的練習(xí)但是從這次實驗來看,還是沒有做到盡善盡美,有很多的漏洞需要補。實驗三讓我看到在編程的過程中不僅要注意語法語句問題,還要注意為數(shù)據(jù)分配的大小是否夠用。對于語法問題可以通過編譯檢查出來,而這種錯誤編譯時檢查不出來的,很難發(fā)現(xiàn),只能一步一步的慢慢來看,很浪費時間,所以在編寫程序的過程中一定要盡量注意一些。

注意事項

本文(北京理工大學(xué)微機原理實驗報告.doc)為本站會員(w****2)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!