微機原理實驗課_第1頁
微機原理實驗課_第2頁
微機原理實驗課_第3頁
微機原理實驗課_第4頁
微機原理實驗課_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、王虎朝西北工業(yè)大學計算機實驗教學中心l實驗共20學時,分七次:軟件4次,硬件3次。l實驗報告完成后,以小班為單位按學號順序排放,在下次試 驗前兩天放在 B309-2。實驗報告每次批改三分之一。l實驗用計算機系統(tǒng)為Windows98,計算機C盤設置為保護方式,只有D盤對學生開放。因此,編寫的程序只能存在D盤。l1、實驗課程為單獨設課,實驗成績按百分制給出。l2、考核內容及各部分比例: 實驗內容完成質量和進度占60%, 實驗報告占40%(批改兩次,每次10分,余5次每完成一次4分)。l3、學生實驗出勤和紀律(曠課一次扣15分,遲到一次扣110分,違紀一次扣15分。l4、有

2、事請假同學持假條,有病請假同學持醫(yī)院診斷證明,在微機原理實驗室上班且有空閑設備的情況下,取得上課老師允許后,即可進行實驗,實驗完成后寫一實驗內容說明,請輔導老師簽字,交原帶課老師即可記入成績。l 利用Editplus和匯編相關軟件建立起基于Win98平臺的匯編語言集成調試環(huán)境,對我們學習匯編語言、開發(fā)匯編軟件將十分方便,它將我們學習匯編程序時的編輯、編譯、調試等工具集成于一體。對源程序的編譯和連接對目標程序的調試幫助文件源程序窗口寄存器窗口命令行窗口l F2:寄存器窗口的開/關l F3:在源程序方式和匯編方式之間切換l F4:切換到輸出屏幕l F5:執(zhí)行到下一個斷點或到程序結束(沒斷點)l F

3、6:激活各調試窗口 l F7:在光標所在行設置一個臨時斷點,并執(zhí)行到該行l(wèi) F8:執(zhí)行跟蹤命令l F9:在光標所在行設置或清除一個斷點(雙擊鼠標左鍵功能相同)l F10:執(zhí)行Program Step命令l PgUp:上卷一頁 PgDn:下卷一頁l Home:上卷到文件或命令緩沖區(qū)頂部 End: 下卷到文件或命令緩沖區(qū)底部本部分共進行4次實驗,實驗內容如下: 1實驗一 BCD碼的運算 2實驗三 循環(huán)結構程序 3實驗四 排序程序 4實驗五 分支程序 一實驗目的一實驗目的 1.熟悉在Editplus集成環(huán)境下建立、匯編、鏈接、調試和運行匯編語言程序的全過程。 2.掌握匯編語言程序結構中數據段、堆棧段

4、、代碼段定義及內存分配方法。 3.學會DEBUG調試程序主要命令的使用方法。 4.掌握用組合BCD碼表示數據的方法,并熟悉其加、減、乘、除運算。二實驗內容 1.多位十進制數加法。 2.兩位十進制數乘法。三實驗要求 1.多位十進制數加法:在內存中以DATA1和DATA2為首址,各分配5個字節(jié)單元,分別存入兩個8位組合BCD碼數據(低位在前),將兩數相加,結果送回到DATA2處。 2.兩位十進制數乘法:將被乘數和乘數以組合BCD碼形式分別存放于DATA1和DATA2定義的節(jié)單元中,經乘法運算,乘積存入DATA3定義的兩個內存單元中。 3.用DEBUG調試程序、查看運算結果,進行手工驗證;并且用DE

5、BUG修改數據,重新執(zhí)行。 .model small .data data1 db 11h,22h,33h,44h,00h data2 db 99h,88h,77h,66h,00h .code .startup mov si,offset data1 ;設指針 mov di,offset data2 clc ;清進位 mov cx,5 ;設加法次數lop: mov al,si ;取第一加數 adc al,di ;取第二加數 daa ;十進制調整 mov di,al ;結果存入指定單元 inc si ;指針加1 inc diloop lop ;循環(huán) .exit end 流程圖:開始SI Data

6、1首址DI Data2首址清進位設加法次數十進制調整; 部分和回送指向下單元數AL 第一加數AL AL+第二加數+CFCX-1=0?結束YN開始BL 第一乘數BH 第一乘數分離出第一乘數的“個位”分離出第一乘數的“十位”第一乘數的“十位”移到“個位”后,再乘 10合成得到16進制的第一乘數CX 16進制的第一乘數BCD碼轉換成16進制數11AX 0清進位BL 第二乘數第二乘數做加法次數十進制調整AL與AH內容交換AL AL+0+CFAL AL+BLAL與AH內容交換十進制調整CX-1=0?NY存儲結果結束.model small.586.datadata1 db 34hdata2 db 56h

7、data3 dw 1 dup (?).code.startup mov bl,data1 ;第一乘數轉換成16進制數 mov bh,bl and bh,0fh and bl,0f0h mov cL,4 shr bl,cL mov al,10 mul bl add al,bh movzx cx, al ;置加法次數計數器 mov bl,data2 ; 第二乘數做BCD 加法,加第一乘數次 mov ax,0clclop: add al,bl daa xchg ah,al adc al,0 daa xchg ah,al loop lop mov data3,ax;積送乘積存儲單元 nop nop n

8、op .exit end一、實驗目的一、實驗目的 掌握循環(huán)結構程序的設計、調試。二、實驗內容二、實驗內容l1 多字節(jié)無符號數加法。l2 設計一軟件延時器,并在屏幕上顯示軟件延時倒計時過程。三、實驗要求三、實驗要求l1多字節(jié)無符號加法:在DATAS中存放10個雙字節(jié)無符號數, l 用循環(huán)結構設計程序,通過程序運算,把這10個雙字節(jié)無符號 l 數相加,其和存入緊鄰加數之后的四個單元中。l2軟件延時器:做一延時約1秒的軟件延時器,在屏幕上按9、l 8、0 順序顯示軟件延時倒計時過程。l3. 修改實驗2,做一延時約1秒的軟件延時器,在屏幕上按99、l 98、00 順序顯示軟件延時倒計時過程。 循環(huán)程序

9、的三個組成部分: 循環(huán)初始狀態(tài)設置。設置循環(huán)次數、為循環(huán)體正常工作建立初始狀態(tài)等。 循環(huán)體。循環(huán)工作的主體,包含循環(huán)的工作部分和修改部分。循環(huán)的工作部分是為完成程序功能而設計的程序段;循環(huán)的修改部分是為保證每一次重復時,參加執(zhí)行的信息能發(fā)生有規(guī)律的變化而建立的程序段。 循環(huán)控制部分。選擇一個循環(huán)控制條件來控制循環(huán)的運行和結束。循環(huán)程序的結構:循環(huán)初始狀態(tài)循環(huán)控制條件循環(huán)體YN循環(huán)初始狀態(tài)循環(huán)體循環(huán)控制條件YNDO-WHILE結構DO-UNTIL結構子程序結構: procedure name PROC Attribute RET procedure name ENDP Attribute NEA

10、R 調用程序和過程在同一個代碼段中FAR 調用程序和過程不在同一個代碼段中系統(tǒng)功能調用:系統(tǒng)功能調用是DOS為方便匯編語言編寫而提供的一組約80個功能調用的常用子程序,它分為設備管理、文件管理和目錄管理等幾類。DOS規(guī)定用軟中斷指令 INT 21H 進入各功能調用子程序的總入口,再為每個功能調用規(guī)定一個功能號,以便進入相應各自子程序的入口。系統(tǒng)功能調用的使用方法:指定的寄存器入口參數AH調用功能的功能號INT 21HEX1:從鍵盤輸入單字符:從鍵盤輸入單字符 MOV AH,01H ;1號功能調用 INT 21H將鍵盤輸入字符的ASCII碼送到 AL。EX2:從鍵盤輸入字符串:從鍵盤輸入字符串

11、BUF DB 10 DUP(?) LEA DX,BUF MOV AH,0AH ;0A號功能調用 INT 21H將鍵盤輸入的字符串寫到 RAM 中去,擊回車鍵表示字符串結束。字符數與予留空間的關系為:少補零多丟失。EX3:輸出單字符:輸出單字符 MOV DL,M MOV AH,02H; 2號功能調用 INT 21H將 DL 中字符從屏幕上顯示出來。EX4:輸出字符串:輸出字符串 BUF DB Thank you MOV DX,OFFSET BUF MOV AH,09H;9號功能調用 INT 21H將 指定 RAM 緩沖區(qū)中的字符串從屏幕上顯示出來。 為字符串結束符。EX5:直接控制臺輸入/輸出單

12、字符 MOV DL,0FFH;DL=0FFH時, MOV AH,06H; 6號功能調用 INT 21H; 將鍵盤輸入字符 送到 AL 中。 MOV DL,M; DL 0FFH時, MOV AH,06H; 6號功能調用 INT 21H; 將 DL 中字符送到 屏幕上顯示。 .MODEL SMALL.MODEL SMALL .586 .586 .DATA .DATADATAS DW 1111H,2222H,3333H,4444H,5555H DATAS DW 1111H,2222H,3333H,4444H,5555H DW 6666H,7777H,8888H,9999H,0AAAAH DW 666

13、6H,7777H,8888H,9999H,0AAAAHRESULT DD 1 DUP(?) RESULT DD 1 DUP(?) .CODE.CODE.STARTUP.STARTUP MOV SI,OFFSET DATAS MOV SI,OFFSET DATAS;設指針 MOV CX,10MOV CX,10;累加次數 MOV EAX,0MOV EAX,0;清累加器LOP: MOV BX,SILOP: MOV BX,SI;取加數到BX MOVZX EBX,BXMOVZX EBX,BX ;將BX擴展成32位 ADD EAX,EBXADD EAX,EBX; 加 INC SIINC SI;改指針 IN

14、C SIINC SI LOOP LOPLOOP LOP;循環(huán)加 MOV RESULT,EAXMOV RESULT,EAX;存結果 .EXIT.EXIT ENDEND開始SI DATAS的首址CX 累加次數EAX 0清進位BX SI所指加數將BX擴展為32位EAX EAX+EBX+CFSI 指向下一加數CX-1=0?NY存結果 結束.model small.data data db 20h,20h,20h,20h,20h,39h,0dh,$.code.startupmov cx,0Ah; 設循環(huán)次數lop:mov ah,09h;顯示功能調用lea dx,dataint 21hcall near

15、ptr delay;調用延時子程序dec data+5;修改顯示數字loop lop.exitDelay proc near uses cx ;延時子程序 mov bx,06ffh ;設第二時常數Delay1 :mov cx,0h loop $ ;自身循環(huán)CX次 dec bx ;第二時常數減1 jnz delay1 ;不為零循環(huán) retDelay endpend開始CX 循環(huán)次數字符串顯示功能調用延時子程序調用顯示數字修改CX-1=0?NY結束主程序流程:主程序流程:延時子程序流程:延時子程序流程:延時子程序定義BX 第二時常數CX 第一時常數CX-1=0?NYBX-1BX=0?NY子程序返回

16、子程序結束關鍵詞一實驗目的一實驗目的 1學習無符號數比較大小指令; 2掌握多重循環(huán)編程方法; 3掌握匯編語言編寫排序程序的思路和方法。二實驗內容二實驗內容 1單字節(jié)無符號數排序。 2去極值濾波。三實驗要求三實驗要求 1單字節(jié)無符號數排序:DATANUM單元開始存放單字節(jié)無符號數,表示要排序數據 的個數,DATAS單元開始存放要排序的數據,數據個數至少10個,程序運行之后,這些數據按照由小到大的順序仍然存放于DATAS單元開始的位置。 2 去極值濾波:某控制系統(tǒng)為了抗干擾,采用去極值濾波法處理采集數據,取連 續(xù)6個A/D采樣值(12位雙字節(jié),低12位),要求去掉最大值和最小值,將 余下4個數求平

17、均值,用該平均值代表當前時刻系統(tǒng)狀態(tài)的真值。試編一程序完 成這個濾波過程。 3. 擴展1:對實驗2的排序結果,在屏幕上顯示出來屏幕上顯示出來。 4。擴展1:對實驗2中預排序的數用鍵盤輸入鍵盤輸入,排序結果在屏幕上顯示出來屏幕上顯示出來。流程圖:開始BL 數據個數-1CX BL擴展數據指針 SI 置 0累加器 前數 前數與后數比較前數后數前、后數交換數據指針 SI 指向下一數數據指針 SI 指向下一數YNBL-1CX-1=0?CX-1=0?NNYYZF=1?N結束Y .model small .586 .data datanum db 10 datas db 21h,13h,4h,5h,7h d

18、b 6h,8h,20h,9h,11h .code .startup mov bl,datanum dec bl lop0: movzx cx,bl mov si,0 lop: mov al,datassi cmp al,datassi+1 ja jh inc si loop lop jmp next jh: xchg al,datassi+1 mov datassi,al inc si loop lopnext: dec bl jz finish jmp lop0finish: nop .exit end開始調排序子程序對數據進行排序對排完序的數據掐頭去尾求和求均值保存結果結束 .model

19、small .586 .datadatanum db 6datasdw 0123h,0abch,0234h dw 0345h,0456h,0567h .code.startupcall px ;排序mov si,offset datas+2 ;掐頭去尾送指針mov cx,4 ;送累加次數clc ;清進位mov ax,0 ;取首數qh: adc ax,si ;累加inc siinc siloop qhshr ax,2 ;除4mov datas,ax ;存結果到DATAS首位 .exitpxproc near mov bl,datanum;取字長 dec bllop0: movzx cx,bl;送

20、比較次數 mov si,0lop:mov ax,datassi;送前數cmp ax,datassi+2;與后數比較 ja jh;前大于后,轉交換inc siinc si;指針加 1 loop lop;循環(huán)比較 jmp next;一輪排序完jh: xchg ax,datassi+2;交換 mov datassi,ax inc siinc si loop lopnext: dec bl;修改比較次數 jz finish jmp lop0finish: nop;結束 retpx endp end一、實驗目的一、實驗目的 掌握分支程序編程方法,復雜分支程序的查表法等。二、實驗內容二、實驗內容 1、 學

21、生課程成績分段統(tǒng)計。 2、 鍵盤及屏幕顯示功能調用。三、實驗要求三、實驗要求 1、 學生課程成績分段統(tǒng)計:用單字節(jié)表示每個學生的學號,學生的課程成績用兩位十進制數表示(最低0分,最高99分),規(guī)定0F0H表示作弊,0F1H表示缺考,0FFH為一組學生成績的結束符。學生成績在內存的存放形式為“學號,成績”,每個學生占兩個字節(jié),從內存SCORE為首址開始存放。要求學生人數不少于10個,試編程序,按0 9、10 19、20 29、80 89、90 99及作弊、缺考等12種情況把學生的課程成績進行分段統(tǒng)計,將統(tǒng)計結果存入以COUNT為首址的12個單元中。 2、試編一程序掃描鍵盤,當B鍵按下時,在屏幕上

22、顯示09循環(huán)計數;S鍵按下時停止計數;再按B鍵繼續(xù)計數過程。E鍵按下時退出程序。 3、用DEBUG調試程序預置數據和查看程序運行結果,以驗證程序正確性。 開始設置學號、成績指針取學號取成績是結束標志?取十分位,并將十分值擴展為16位送DI,對DI所指統(tǒng)計區(qū)段統(tǒng)計值加1是作弊?是缺考?修改指針CX-1=0?11CX 統(tǒng)計上限作弊統(tǒng)計區(qū)段統(tǒng)計值加1缺考統(tǒng)計區(qū)段統(tǒng)計值加1結束YYYYNNNN .model small .586 .data score db 1,10h,2,20h,3,30h,4,40h,5,50h,6,77h,7,70h db 8,80h,9,90h,10h,08,11h,0f0h

23、,12h,0f1h,0ffhcount db 12 dup(?) .code .startup mov cx,30;送統(tǒng)計上限 mov si,0;SCORE 統(tǒng)計指針statistic: mov al,scoresi ;取學號 cmp al,0ffh ;判是否為結束 je sta_end;轉統(tǒng)計結束 mov bl,scoresi+1 ;取成績 cmp bl,0f0h;是否作弊 je fake;是,轉作弊處理 cmp bl,0f1h;是否缺考 je miss;是,轉缺考處理 shr bl,4;取十分位 movzx di,bl ;將十分值擴展為16位送DI inc countdi ;相應區(qū)段統(tǒng)計值

24、加1down: inc si ;改指針 inc si loop statistic;循環(huán)sta_end:nop;結束 .exitfake: mov di,10;作弊處理 inc countdi jmp downmiss: mov di,11;缺考處理 inc countdi jmp down end開始顯示提示信息置處理指針為“停止”調延時、鍵盤掃描程序有鍵動?轉處理指針處B 鍵?S 鍵?E 鍵?轉處理指針處結束置處理指針為“計數”置處理指針為“停止”NYYYYNNN處理指針為“計數”處理指針為“停止”計數顯示延時、鍵盤掃描程序子程序定義BX 第二時常數CX 第一時常數CX-1=0?NYBX-

25、1BX=0?NY子程序返回監(jiān)測鍵動有鍵動?做鍵動標志BX=1NY.model small.dataMess1 db press b button - count,0dh,0ahmess2 db press s button - stop,0dh,0ahMess3 db press e button - exit,0dh,0ah,$count db 20h,20h,20h,20h,20h,30h,0dh,$.code.startupmov ah,09h;顯示提示信息mov dx,offset mess1int 21hmov si,stop;設處理指針scan: call near ptr del

26、ay ;調延時、鍵掃程序 or bx,bx;判有無鍵動 jnz scan1;有鍵動,轉鍵處理 jmp si;無鍵動,轉當前處理程序scan1: cmp al,b ;鍵處理程序 je b_proc cmp al,s je s_proc cmp al,e je e_proc call delay jmp sib_proc: mov si,count_;B鍵處理 jmp scans_proc: mov si,stop;S鍵處理 jmp scane_proc: nop;E鍵處理 nop .exitcount_: inc count+5;修改顯示數字 mov al,3ah;比較超限 cmp al,cou

27、nt+5 ja down;若不超限,調顯示 mov count+5,30h;超限,設啟始值down: mov ah,09h;顯示功能調用 lea dx,count int 21h jmp scanstop: jmp scan nopDelay proc near uses cx;延時子程序 mov bx,380h;設第二時常數delay1: mov cx,0h loop $;自身循環(huán)CX次 mov dl,0ffh;監(jiān)測鍵動 mov ah,06h int 21h jnz key_ret ;若有鍵動,延時終止,轉鍵處理 dec bx;第二時常數減1 jnz delay1;不為零循環(huán) jmp del

28、ay_retkey_ret: mov bx,1;做鍵動標志delay_ret: retDelay endp end本部分共進行3次實驗,實驗內容如下:1 實驗六 并行接口技術實驗 2 實驗七 8254定時/計數器實驗3 實驗九 A/D轉換實驗 (下面根據實驗臺實物介紹實驗臺)特別說明:特別說明:為了方便實驗,實驗臺設計時已將實驗用相關器件的地 址線、數據總線及除片選(CS)外的控制線連接到位,并在每一 個實驗電路附近予留有若干信號連線插孔(或插針排)。實驗時 只要將相應插孔用單股導線(或相應插針排用扁平電纜)對應相 連即可組成完整的實驗電路。在給出的實驗電路圖中,線路所 帶小圓圈即表示連線插孔。各芯片的片選(CS)可用單股導線連 接,也可通過將8位鉛筆開關的對應位置ON連接。硬件實驗注意事項:硬件實驗注意事項: 1.在實驗臺斷電條件下,才能用單股導線(或扁平電纜)連接電路; 2.線路連接完成、檢查確認沒有錯誤后,再開通實驗臺電源; 3.用單股導線連接電路時,要將單股導線線頭整直,并確認線頭沒有 斷裂; 4.實驗完成后,關斷實驗臺電源,再抓住導線(或扁平電纜)的根 部,一根一根垂直拔掉連接導

溫馨提示

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

評論

0/150

提交評論