版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、80X86微機(jī)原理及接口技術(shù)實(shí)驗教程80X86微機(jī)原理及接口技術(shù)實(shí)驗教程PAGE 1目 錄 TOC o 1-2 h z u HYPERLINK l _Toc338345076 目 錄 PAGEREF _Toc338345076 h 1 HYPERLINK l _Toc338345077 第1章 16位微機(jī)原理及其程序設(shè)計實(shí)驗 PAGEREF _Toc338345077 h 2 HYPERLINK l _Toc338345078 1.1 系統(tǒng)認(rèn)識實(shí)驗 PAGEREF _Toc338345078 h 2 HYPERLINK l _Toc338345079 1.2 數(shù)制轉(zhuǎn)換實(shí)驗 PAGEREF _T
2、oc338345079 h 9 HYPERLINK l _Toc338345080 1.3 運(yùn)算類編程實(shí)驗 PAGEREF _Toc338345080 h 18 HYPERLINK l _Toc338345081 1.4 分支程序設(shè)計實(shí)驗 PAGEREF _Toc338345081 h 24 HYPERLINK l _Toc338345082 1.5 循環(huán)程序設(shè)計實(shí)驗 PAGEREF _Toc338345082 h 28 HYPERLINK l _Toc338345083 1.6 排序程序設(shè)計實(shí)驗 PAGEREF _Toc338345083 h 31 HYPERLINK l _Toc33834
3、5084 1.7 子程序設(shè)計實(shí)驗 PAGEREF _Toc338345084 h 35 HYPERLINK l _Toc338345085 1.8 查表程序設(shè)計實(shí)驗 PAGEREF _Toc338345085 h 40 HYPERLINK l _Toc338345086 第2章 80X86微機(jī)接口技術(shù)及其應(yīng)用實(shí)驗 PAGEREF _Toc338345086 h 42 HYPERLINK l _Toc338345087 2.1 靜態(tài)存儲器擴(kuò)展實(shí)驗 PAGEREF _Toc338345087 h 42 HYPERLINK l _Toc338345088 2.2 8259中斷控制實(shí)驗 PAGEREF
4、 _Toc338345088 h 46 HYPERLINK l _Toc338345089 2.3 8254定時/計數(shù)器應(yīng)用實(shí)驗 PAGEREF _Toc338345089 h 56 HYPERLINK l _Toc338345090 2.4 8255并行接口實(shí)驗 PAGEREF _Toc338345090 h 63 HYPERLINK l _Toc338345091 2.5 8251串行接口應(yīng)用實(shí)驗 PAGEREF _Toc338345091 h 69 HYPERLINK l _Toc338345092 2.6 實(shí)時時鐘綜合設(shè)計實(shí)驗 PAGEREF _Toc338345092 h 84 HY
5、PERLINK l _Toc338345093 2.7 鍵盤掃描及顯示設(shè)計實(shí)驗 PAGEREF _Toc338345093 h 86 HYPERLINK l _Toc338345094 2.8 電子發(fā)聲設(shè)計實(shí)驗 PAGEREF _Toc338345094 h 92 HYPERLINK l _Toc338345095 2.9 點(diǎn)陣LED顯示設(shè)計實(shí)驗 PAGEREF _Toc338345095 h 98 HYPERLINK l _Toc338345096 2.10 圖形LCD顯示設(shè)計實(shí)驗 PAGEREF _Toc338345096 h 107 HYPERLINK l _Toc338345097 2
6、.11 步進(jìn)電機(jī)實(shí)驗 PAGEREF _Toc338345097 h 116 HYPERLINK l _Toc338345098 2.12 直流電機(jī)閉環(huán)調(diào)速實(shí)驗 PAGEREF _Toc338345098 h 120 HYPERLINK l _Toc338345099 2.13 溫度閉環(huán)控制實(shí)驗 PAGEREF _Toc338345099 h 131PAGE 115第1章 16位微機(jī)原理及其程序設(shè)計實(shí)驗本章主要介紹匯編語言程序設(shè)計,通過實(shí)驗來學(xué)習(xí)80X86的指令系統(tǒng)、尋址方式以及程序的設(shè)計方法,同時掌握聯(lián)機(jī)軟件的使用。1.1 系統(tǒng)認(rèn)識實(shí)驗1.1.1 實(shí)驗?zāi)康恼莆誘D系列微機(jī)原理及接口技術(shù)教學(xué)實(shí)
7、驗系統(tǒng)的操作,熟悉Wmd86聯(lián)機(jī)集成開發(fā)調(diào)試軟件的操作環(huán)境。1.1.2 實(shí)驗設(shè)備PC機(jī)一臺,TD-PITE實(shí)驗裝置一套。1.1.3 實(shí)驗內(nèi)容編寫實(shí)驗程序,將00H0FH共16個數(shù)寫入內(nèi)存3000H開始的連續(xù)16個存儲單元中。1.1.4 實(shí)驗步驟1. 運(yùn)行Wmd86軟件,進(jìn)入Wmd86集成開發(fā)環(huán)境。2. 根據(jù)程序設(shè)計使用語言的不同,通過在“設(shè)置”下拉列表來選擇需要使用的語言和寄存器類型,這里我們設(shè)置成“匯編語言”和“16位寄存器”,如圖1.1、圖1.2所示。設(shè)置選擇后,下次再啟動軟件,語言環(huán)境保持這次的修改不變。本章選擇16位寄存器。圖1.1 語言環(huán)境設(shè)置界面圖1.2 寄存器設(shè)置界面3. 語言和
8、寄存器選擇后,點(diǎn)擊新建或按Ctrl+N組合鍵來新建一個文檔,如圖1.3所示。默認(rèn)文件名為Wmd861。圖1.3 新建文件界面4. 編寫實(shí)驗程序,如圖1.4所示,并保存,此時系統(tǒng)會提示輸入新的文件名,輸完后點(diǎn)擊保存。圖1.4 程序編輯界面5. 點(diǎn)擊,編譯文件,若程序編譯無誤,則可以繼續(xù)點(diǎn)擊進(jìn)行鏈接,鏈接無誤后方可以加載程序。編譯、鏈接后輸出如圖1.5所示的輸出信息。圖1.5 編譯輸出信息界面6. 連接PC與實(shí)驗系統(tǒng)的通訊電纜,打開實(shí)驗系統(tǒng)電源。7. 編譯、鏈接都正確并且上下位機(jī)通訊成功后,就可以下載程序,聯(lián)機(jī)調(diào)試了??梢酝ㄟ^端口列表中的“端口測試”來檢查通訊是否正常。點(diǎn)擊下載程序。為編譯、鏈接、
9、下載組合按鈕,通過該按鈕可以將編譯、鏈接、下載一次完成。下載成功后,在輸出區(qū)的結(jié)果窗中會顯示“加載成功!”,表示程序已正確下載。起始運(yùn)行語句下會有一條綠色的背景。如圖1.6所示。圖1.6 加載成功顯示界面8. 將輸出區(qū)切換到調(diào)試窗口,使用D0000:3000命令查看內(nèi)存3000H起始地址的數(shù)據(jù),如圖1.7所示。存儲器在初始狀態(tài)時,默認(rèn)數(shù)據(jù)為CC。圖1.7 內(nèi)存地址單元數(shù)據(jù)顯示9. 點(diǎn)擊按鈕運(yùn)行程序,待程序運(yùn)行停止后,通過D0000:3000命令來觀察程序運(yùn)行結(jié)果。如圖1.8所示。圖1.8 運(yùn)行程序后數(shù)據(jù)變化顯示10. 也可以通過設(shè)置斷點(diǎn),斷點(diǎn)顯示如圖1.9所示,然后運(yùn)行程序,當(dāng)遇到斷點(diǎn)時程序會
10、停下來,然后觀察數(shù)據(jù)??梢允褂肊0000:3000來改變該地址單元的數(shù)據(jù),如圖1.10所示,輸入11后,按“空格”鍵,可以接著輸入第二個數(shù),如22,結(jié)束輸入按“回車”鍵。 圖1.9 斷點(diǎn)設(shè)置顯示 圖1.10 修改內(nèi)存單元數(shù)據(jù)顯示界面 實(shí)驗例程文件名為Wmd861.asm。1.1.5 操作練習(xí)編寫程序,將內(nèi)存3500H單元開始的8個數(shù)據(jù)復(fù)制到3600H單元開始的數(shù)據(jù)區(qū)中。通過調(diào)試驗證程序功能,使用E命令修改3500H單元開始的數(shù)據(jù),運(yùn)行程序后使用D命令查看3600H單元開始的數(shù)據(jù)。1.2 數(shù)制轉(zhuǎn)換實(shí)驗1.2.1 實(shí)驗?zāi)康?. 掌握不同進(jìn)制數(shù)及編碼相互轉(zhuǎn)換的程序設(shè)計方法,加深對數(shù)制轉(zhuǎn)換的理解。2.
11、 熟悉程序調(diào)試的方法。1.2.2 實(shí)驗設(shè)備PC機(jī)一臺,TD-PITE實(shí)驗裝置一套。1.2.3 實(shí)驗內(nèi)容及步驟計算機(jī)輸入設(shè)備輸入的信息一般是由ASCII碼或BCD碼表示的數(shù)據(jù)或字符,CPU一般均用二進(jìn)制數(shù)進(jìn)行計算或其它信息處理,處理結(jié)果的輸出又必須依照外設(shè)的要求變?yōu)锳SCII碼、BCD碼或七段顯示碼等。因此,在應(yīng)用軟件中,各類數(shù)制的轉(zhuǎn)換是必不可少的。計算機(jī)與外設(shè)間的數(shù)制轉(zhuǎn)換關(guān)系如圖1.11所示,數(shù)制對應(yīng)關(guān)系如表1.1所示。圖1.11 數(shù)制轉(zhuǎn)換關(guān)系1. 將ASCII碼表示的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)十進(jìn)制表示為: (1)Di代表十進(jìn)制數(shù)0,1,2,9;上式轉(zhuǎn)換為: (2)由式(2)可歸納十進(jìn)制數(shù)轉(zhuǎn)換為
12、二進(jìn)制數(shù)的方法:從十進(jìn)制數(shù)的最高位Dn開始作乘10加次位的操作,依次類推,則可求出二進(jìn)制數(shù)的結(jié)果。表1.1 數(shù)制對應(yīng)關(guān)系表十六進(jìn)制BCD碼二進(jìn)制機(jī)器碼ASCII碼七段碼共陽共陰00000000030H40H3FH10001000131H79H06H20010001032H24H5BH30011001133H30H4FH40100010034H19H66H50101010135H12H6DH60110011036H02H7DH70111011137H78H07H81000100038H00H7FH91001100139H18H67HA101041H08H77HB101142H03H7CHC110
13、043H46H39HD110144H21H5EHE111045H06H79HF111146H0EH71H程序流程圖如圖1.12所示。實(shí)驗參考程序如下。實(shí)驗程序清單(例程文件名:A2-1.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSDATASEGMENTSADDDB 30H,30H,32H,35H,36H ;十進(jìn)制數(shù):00256DATAENDSCODESEGMENTASSUME CS:CODE, DS:DATASTART:MOV AX, DATAMOV DS, AXMOV AX, OFFSET SADDMOV SI, AXMOV BX, 000AHM
14、OV CX, 0004HMOV AH, 00HMOV AL, SISUB AL, 30HA1:IMUL BXMOV DX, SI+01AND DX, 00FFHADC AX, DXSBB AX, 30HINC SILOOP A1A2:JMP A2CODE ENDS END START實(shí)驗步驟(1)繪制程序流程圖,編寫實(shí)驗程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng)。(2)待轉(zhuǎn)換數(shù)據(jù)存放于數(shù)據(jù)段,根據(jù)自己要求輸入,默認(rèn)為30H,30H,32H,35H,36H。(3)運(yùn)行程序,然后停止程序。(4)查看AX寄存器,即為轉(zhuǎn)換結(jié)果,應(yīng)為:0100 。(5)反復(fù)試幾組數(shù)據(jù),驗證程序的正確性。2. 將十進(jìn)制數(shù)的ASCI
15、I碼轉(zhuǎn)換為BCD碼從鍵盤輸入五位十進(jìn)制數(shù)的ASCII碼,存放于3500H起始的內(nèi)存單元中,將其轉(zhuǎn)換為BCD碼后,再按位分別存入350AH起始的內(nèi)存單元內(nèi)。若輸入的不是十進(jìn)制的ASCII碼,則對應(yīng)存放結(jié)果的單元內(nèi)容為“FF”。由表1.1可知,一字節(jié)ASCII碼取其低四位即變?yōu)锽CD碼。實(shí)驗程序清單(例程文件名:A2-2.ASM)SSTACKSEGMENT STACK DW 64 DUP(?)SSTACKENDS 圖1.12 轉(zhuǎn)換程序流程圖CODESEGMENTASSUME CS:CODESTART:MOV CX, 0005H;轉(zhuǎn)換位數(shù)MOV DI, 3500H;ASCII碼首地址A1:MOV B
16、L, 0FFH;將錯誤標(biāo)志存入BLMOV AL, DICMP AL, 3AH JNB A2;不低于3AH則轉(zhuǎn)A2SUB AL, 30HJB A2;低于30H則轉(zhuǎn)A2MOV BL, ALA2:MOV AL, BL;結(jié)果或錯誤標(biāo)志送入ALMOV DI+0AH,AL;結(jié)果存入目標(biāo)地址INC DILOOP A1MOV AX,4C00HINT 21H;程序終止CODEENDSEND START實(shí)驗步驟(1)自己繪制程序流程圖,然后編寫程序,編譯、鏈接無誤后裝入系統(tǒng)。(2)在3500H3504H單元中存放五位十進(jìn)制數(shù)的ASCII碼,即:鍵入E3500后,輸入31,32,33,34,35。(3)運(yùn)行程序,待
17、程序運(yùn)行停止。(4)在調(diào)試窗口鍵入D350A,顯示運(yùn)行結(jié)果,應(yīng)為: 0000:350A 01 02 03 04 05 CC (5)反復(fù)測試幾組數(shù)據(jù),驗證程序功能。3. 將十六位二進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼表示的十進(jìn)制數(shù)十六位二進(jìn)制數(shù)的值域為065535,最大可轉(zhuǎn)換為五位十進(jìn)制數(shù)。五位十進(jìn)制數(shù)可表示為:Di:表示十進(jìn)制數(shù)09將十六位二進(jìn)制數(shù)轉(zhuǎn)換為五位ASCII碼表示的十進(jìn)制數(shù),就是求D1D4,并將它們轉(zhuǎn)換為ASCII碼。自行繪制程序流程圖,編寫程序可參考例程。例程中源數(shù)存放于3500H、3501H中,轉(zhuǎn)換結(jié)果存放于3510H3514H單元中。實(shí)驗程序清單(例程文件名:A2-3.ASM)SSTACK
18、SEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV SI,3500H;源數(shù)據(jù)地址MOV DX,SIMOV SI,3515H;目標(biāo)數(shù)據(jù)地址A1:DEC SIMOV AX,DXMOV DX,0000HMOV CX,000AH;除數(shù)10DIV CX;得商送AX, 得余數(shù)送DXXCHG AX,DXADD AL,30H;得Di的ASCII碼MOV SI,AL;存入目標(biāo)地址CMP DX,0000HJNE A1;判斷轉(zhuǎn)換結(jié)束否,未結(jié)束則轉(zhuǎn)A1A2:CMP SI,3510H;與目標(biāo)地址得首地址比較JZ A3;等于首地址則轉(zhuǎn)
19、A3,否則將剩余地址中填30HDEC SIMOV AL,30HMOV SI,ALJMP A2A3: MOV AX,4C00HINT 21H;程序終止CODEENDSEND START實(shí)驗步驟(1)編寫程序,經(jīng)編譯、鏈接無誤后,裝入系統(tǒng)。(2)在3500H、3501H中存入0C 00。(3)運(yùn)行程序,待程序運(yùn)行停止。(4)檢查運(yùn)行結(jié)果,鍵入D3510,結(jié)果應(yīng)為:30 30 30 31 32。(5)可反復(fù)測試幾組數(shù)據(jù),驗證程序的正確性。4. 十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼由表1.1中十六進(jìn)制數(shù)與ASCII碼的對應(yīng)關(guān)系可知:將十六進(jìn)制數(shù)0H09H加上30H后得到相應(yīng)的ASCII碼,AHFH加上37H可
20、得到相應(yīng)的ASCII碼。將四位十六進(jìn)制數(shù)存放于起始地址為3500H的內(nèi)存單元中,把它們轉(zhuǎn)換為ASCII碼后存入起始地址為350AH的內(nèi)存單元中。自行繪制流程圖。實(shí)驗程序清單(例程文件名為A2-4.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV CX,0004HMOV DI,3500H;十六進(jìn)制數(shù)源地址MOV DX,DIA1:MOV AX,DXAND AX,000FH;取低4位CMP AL,0AHJB A2;小于0AH則轉(zhuǎn)A2ADD AL,07H;在AFH之間,需多加上7HA2:ADD
21、 AL,30H;轉(zhuǎn)換為相應(yīng)ASCII碼MOV DI+0DH,AL;結(jié)果存入目標(biāo)地址DEC DIPUSH CXMOV CL,04HSHR DX,CL;將十六進(jìn)制數(shù)右移4位POP CXLOOP A1MOV AX,4C00HINT 21H;程序終止CODEENDSEND START實(shí)驗步驟(1)編寫程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng)。(2)在3500H、3501H中存入四位十六進(jìn)制數(shù)203B,即鍵入E3500,然后輸入3B 20。(3)先運(yùn)行程序,待程序運(yùn)行停止。(4)鍵入D350A,顯示結(jié)果為:0000:350A 32 30 33 42 CC 。(5)反復(fù)輸入幾組數(shù)據(jù),驗證程序功能。5. BCD碼轉(zhuǎn)
22、換為二進(jìn)制數(shù)將四個二位十進(jìn)制數(shù)的BCD碼存放于3500H起始的內(nèi)存單元中,將轉(zhuǎn)換的二進(jìn)制數(shù)存入3510H起始的內(nèi)存單元中,自行繪制流程圖并編寫程序。實(shí)驗程序清單(例程文件名為:A2-5.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:XOR AX, AXMOV CX, 0004HMOV SI, 3500HMOV DI, 3510HA1:MOV AL, SIADD AL, ALMOV BL, ALADD AL, ALADD AL, ALADD AL, BLINC SIADD AL, SIMOV
23、 DI, ALINC SIINC DILOOP A1MOV AX,4C00HINT 21H;程序終止CODEENDSEND START實(shí)驗步驟(1)編寫程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng)。(2)將四個二位十進(jìn)制數(shù)的BCD碼存入3500H3507H中,即:先鍵入E3500,然后輸入01 02 03 04 05 06 07 08。(3)先運(yùn)行程序,待程序運(yùn)行停止。(4)鍵入D3510顯示轉(zhuǎn)換結(jié)果,應(yīng)為:0C 22 38 4E。(5)反復(fù)輸入幾組數(shù)據(jù),驗證程序功能。1.2.4 思考題1. 實(shí)驗內(nèi)容1中將一個五位十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)(十六位)時,這個十進(jìn)制數(shù)最小可為多少,最大可為多少?為什么?2. 將
24、一個十六位二進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼十進(jìn)制數(shù)時,如何確定Di的值?3. 在十六進(jìn)制轉(zhuǎn)換為ASCII碼時,存轉(zhuǎn)換結(jié)果后,為什么要把DX向右移四次?4. 自編ASCII碼轉(zhuǎn)換十六進(jìn)制、二進(jìn)制轉(zhuǎn)換BCD碼的程序,并調(diào)試運(yùn)行。1.3 運(yùn)算類編程實(shí)驗1.3.1 實(shí)驗?zāi)康?. 掌握使用運(yùn)算類指令編程及調(diào)試方法。2. 掌握運(yùn)算類指令對各狀態(tài)標(biāo)志位的影響及其測試方法。3. 學(xué)習(xí)使用軟件監(jiān)視變量的方法。1.3.2 實(shí)驗設(shè)備PC機(jī)一臺,TD-PITE實(shí)驗裝置一套。1.3.3 實(shí)驗內(nèi)容及步驟80X86指令系統(tǒng)提供了實(shí)現(xiàn)加、減、乘、除運(yùn)算的基本指令,可對表1.2所示的數(shù)據(jù)類型進(jìn)行算術(shù)運(yùn)算。表1.2 數(shù)據(jù)類型算術(shù)運(yùn)算表
25、數(shù)制二進(jìn)制BCD碼帶符號無符號組合非組合運(yùn)算符、操作數(shù)字節(jié)、字、多精度字節(jié)(二位數(shù)字)字節(jié)(一位數(shù)字)1. 二進(jìn)制雙精度加法運(yùn)算計算XYZ,將結(jié)果Z存入某存儲單元。實(shí)驗程序參考如下。本實(shí)驗是雙精度(2個16位,即32位)加法運(yùn)算,編程時可利用累加器AX,先求低16位的和,并將運(yùn)算結(jié)果存入低地址存儲單元,然后求高16位的和,將結(jié)果存入高地址存儲單元中。由于低16運(yùn)算后可能向高位產(chǎn)生進(jìn)位,因此高16位運(yùn)算時使用ADC指令,這樣在低16位相加運(yùn)算有進(jìn)位時,高位相加會加上CF中的1。實(shí)驗程序清單(例程文件名為:A3-1.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACK
26、ENDSPUBLIC XH, XL, YH, YL, ZH, ZL;設(shè)置全局變量DATASEGMENTXLDW ?;X低位XHDW ?;X高位YLDW ?;Y低位YHDW ?;Y高位ZLDW ?;Z低位ZHDW ?;Z高位DATAENDSCODESEGMENTASSUME CS:CODE, DS:DATASTART:MOV AX, DATAMOV DS, AXMOV AX, XLADD AX, YL;X低位加Y低位MOV ZL, AX;低位和存到Z的低位MOV AX, XHADC AX, YH;高位帶進(jìn)位加MOV ZH, AX;存高位結(jié)果JMP START;在此行設(shè)置斷點(diǎn),以觀察變量值CODE
27、ENDSEND START實(shí)驗步驟(1)編寫程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng)。(2)程序裝載完成后,點(diǎn)擊變量區(qū)標(biāo)簽將觀察窗切換到變量監(jiān)視窗口。(3)點(diǎn)擊,將變量XH,XL,YH,YL,ZH,ZL添加到變量監(jiān)視窗中,然后修改XH,XL,YH,YL的值,如圖2.13所示,修改XH為0015,XL為65A0,YH為0021,YL為B79E。(4)在JMP START語句行設(shè)置斷點(diǎn),然后運(yùn)行程序。(5)當(dāng)程序遇到斷點(diǎn)后停止運(yùn)行,查看變量監(jiān)視窗口,計算結(jié)果ZH為0037,ZL為1D3E。(6)修改XH,XL,YH和YL的值,再次運(yùn)行程序,觀察實(shí)驗結(jié)果,反復(fù)測試幾組數(shù)據(jù),驗證程序的功能。思考題:求累加和程
28、序設(shè)計,在偏移地址為1000H開始依順序填入16個字(16個16位數(shù)),利用程序求和,存放在偏移地址2000H;多字節(jié)加法程序設(shè)計,參考原程序,編寫個兩個64位數(shù)的減法程序,結(jié)果保存到具體內(nèi)存單元,調(diào)試并記錄。 圖1.13 變量監(jiān)視窗口 2. 十進(jìn)制的BCD碼減法運(yùn)算計算XYZ,其中X、Y、Z為BCD碼。實(shí)驗程序參考例程。實(shí)驗程序清單(例程文件名為A3-2.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSPUBLIC X, Y, Z;定義全局變量DATASEGMENTXDW ?YDW ?ZDW ?DATAENDSCODESEGMENTASSUME CS
29、:CODE, DS:DATASTART:MOV AX, DATAMOV DS, AXMOV AH, 00HSAHFMOV CX, 0002HMOV SI, OFFSET XMOV DI, OFFSET ZA1:MOV AL, SISBBAL, SI+02HDASPUSHFAND AL, 0FHPOPFMOV DI, ALINC DIINC SILOOP A1JMP START;設(shè)置斷點(diǎn),以方便觀察變量。CODE ENDSEND START實(shí)驗步驟(1)輸入程序,編譯、鏈接無誤后裝入系統(tǒng)。(2)點(diǎn)擊將變量X,Y,Z添加到變量監(jiān)視窗中,并為X,Y賦值,假定存入40與12的BCD碼,即X為0400,
30、Y為0102。(3)在JMP START語句行設(shè)置斷點(diǎn),然后運(yùn)行程序。(4)程序遇到斷點(diǎn)后停止運(yùn)行,觀察變量監(jiān)視窗,Z應(yīng)為0208。(5)重新修改X與Y的值,運(yùn)行程序,觀察結(jié)果,反復(fù)測試幾次,驗證程序正確性。3. 乘法運(yùn)算實(shí)現(xiàn)十進(jìn)制數(shù)的乘法運(yùn)算,被乘數(shù)與乘數(shù)均以BCD碼的形式存放在內(nèi)存中,乘數(shù)為1位,被乘數(shù)為5位,結(jié)果為6位。實(shí)驗程序參考例程。實(shí)驗程序清單(例程文件名為A3-3.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSDATASEGMENTDATA1 DB 5 DUP(?);被乘數(shù)DATA2 DB ?;乘數(shù)RESULT DB 6 DUP(?);
31、計算結(jié)果DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXCALL INIT;初始化目標(biāo)地址單元為0MOV SI,OFFSET DATA2MOV BL,SIAND BL,0FH;得到乘數(shù)CMP BL,09HJNC ERRORMOV SI,OFFSET DATA1MOV DI,OFFSET RESULTMOV CX,0005HA1:MOV AL,SI+04HAND AL,0FHCMP AL,09HJNC ERRORDEC SIMUL BLAAM;乘法調(diào)整指令A(yù)DD AL,DI+05HAAAMOV DI+05H,A
32、LDEC DIMOV DI+05H,AHLOOP A1A2:MOV AX,4C00HINT 21H;程序終止;=將RESULT所指內(nèi)存單元清零=INIT:MOV SI,OFFSET RESULTMOV CX,0003HMOV AX,0000HA3:MOV SI,AXINC SIINC SILOOP A3RET;=錯誤處理=ERROR:MOV SI,OFFSET RESULT;若輸入數(shù)據(jù)不符合要求則RESULT所指向內(nèi)存單元全部寫入EMOV CX,0003HMOV AX,0EEEEHA4:MOV SI,AXINC SIINC SILOOP A4JMP A2CODE ENDSENDSTART實(shí)驗步
33、驟(1)編寫程序,編譯、鏈接無誤后裝入系統(tǒng)。(2)查看寄存器窗口獲得CS的值,使用U命令可得到數(shù)據(jù)段段地址DS,然后通過E命令為被乘數(shù)及乘數(shù)賦值,如被乘數(shù):01 02 03 04 05,乘數(shù):01,方法同實(shí)驗內(nèi)容1。(3)運(yùn)行程序,待程序運(yùn)行停止。(4)通過D命令查看計算結(jié)果,應(yīng)為:00 01 02 03 04 05;當(dāng)在為被乘數(shù)和乘數(shù)賦值時,如果一個數(shù)的低4位大于9,則查看計算結(jié)果將全部顯示為E。(5)反復(fù)測試幾組數(shù)據(jù),驗證程序的正確性。1.4 分支程序設(shè)計實(shí)驗1.4.1 實(shí)驗?zāi)康?. 掌握分支程序的結(jié)構(gòu)。2. 掌握分支程序的設(shè)計、調(diào)試方法。1.4.2 實(shí)驗設(shè)備PC機(jī)一臺,TD-PITE實(shí)驗
34、裝置一套。1.4.3 實(shí)驗內(nèi)容設(shè)計一數(shù)據(jù)塊間的搬移程序。設(shè)計思想:程序要求把內(nèi)存中一數(shù)據(jù)區(qū)(稱為源數(shù)據(jù)塊)傳送到另一存儲區(qū)(成為目的數(shù)據(jù)塊)。源數(shù)據(jù)塊和目的數(shù)據(jù)塊在存儲中可能有三種情況,如圖1.14所示。 (a) (b) (c)圖1.14 源數(shù)據(jù)塊與目的數(shù)據(jù)塊在存儲中的位置情況對于兩個數(shù)據(jù)塊分離的情況,如圖1.14(a),數(shù)據(jù)的傳送從數(shù)據(jù)塊的首地址開始,或從數(shù)據(jù)塊的末地址開始均可。但是對于有重疊的情況,則要加以分析,否則重疊部分會因“搬移”而遭到破壞,可有如下結(jié)論:當(dāng)源數(shù)據(jù)塊首地址目的塊首地址時,從數(shù)據(jù)塊末地址開始傳送數(shù)據(jù),如圖1.14(b)所示。當(dāng)源數(shù)據(jù)塊首地址目的塊首地址時,從數(shù)據(jù)塊首地址
35、開始傳送數(shù)據(jù),如圖1.14(c)所示。實(shí)驗程序流程圖如圖1.15所示。圖1.15 程序流程圖實(shí)驗程序清單(例程文件名為:A4-1.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV CX, 0010HMOV SI, 3100HMOV DI, 3200HCMP SI, DIJA A2ADD SI, CXADD DI, CXDEC SIDEC DIA1:MOV AL, SIMOV DI, ALDEC SIDEC DIDEC CXJNE A1JMP A3A2:MOV AL, SIMOV DI,
36、 ALINC SIINC DIDEC CXJNE A2A3:MOV AX,4C00HINT 21H;程序終止CODEENDSEND START1.4.4 實(shí)驗步驟1. 按流程圖編寫實(shí)驗程序,經(jīng)編譯、鏈接無誤后裝入系統(tǒng)。2. 用E命令在以SI為起始地址的單元中填入16個數(shù)。3. 運(yùn)行程序,待程序運(yùn)行停止。4. 通過D命令查看DI為起始地址的單元中的數(shù)據(jù)是否與SI單元中數(shù)據(jù)相同。5. 通過改變SI、DI的值,觀察在三種不同的數(shù)據(jù)塊情況下程序的運(yùn)行情況,并驗證程序的功能。思考題:將源數(shù)據(jù)首址改為3100H,目的數(shù)據(jù)地址改為310A,再加以驗證(注意單步調(diào)試);將源數(shù)據(jù)首址改為310AH,目的數(shù)據(jù)地址
37、改為3100,再加以驗證(注意單步調(diào)試)。1.5 循環(huán)程序設(shè)計實(shí)驗1.5.1 實(shí)驗?zāi)康?. 加深對循環(huán)結(jié)構(gòu)的理解。2. 掌握循環(huán)結(jié)構(gòu)程序設(shè)計的方法以及調(diào)試方法。1.5.2 實(shí)驗設(shè)備PC機(jī)一臺,TD-PITE實(shí)驗裝置一套。1.5.3 實(shí)驗內(nèi)容及步驟1. 計算S1233445N(N1),直到N(N1)項大于200為止。編寫實(shí)驗程序,計算上式的結(jié)果,參考流程圖如圖1.16所示。實(shí)驗程序清單(例程文件名為:A5-1.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV DX,0001HMOV BL
38、,02HA1:MOV AL,BLINC BLMUL BLADD DX,AX;結(jié)果存于DX中CMP AX,00C8H;判斷N(N+1)與200的大小JNA A1MOV AX,4C00HINT 21H;程序終止CODEENDSEND START實(shí)驗步驟(1)編寫實(shí)驗程序,編譯、鏈接無誤后裝入系統(tǒng)。 圖1.16 程序流程圖(2)運(yùn)行程序,待程序運(yùn)行停止。 (3)運(yùn)算結(jié)果存儲在寄存器DX中,查看結(jié)果是否正確。(4)可以改變N(N1)的條件來驗證程序功能是否正確,但要注意,結(jié)果若大于0FFFFH將產(chǎn)生數(shù)據(jù)溢出。2. 求某數(shù)據(jù)區(qū)內(nèi)負(fù)數(shù)的個數(shù)設(shè)數(shù)據(jù)區(qū)的第一單元存放區(qū)內(nèi)單元數(shù)據(jù)的個數(shù),從第二單元開始存放數(shù)據(jù),
39、在區(qū)內(nèi)最后一個單元存放結(jié)果。為統(tǒng)計數(shù)據(jù)區(qū)內(nèi)負(fù)數(shù)的個數(shù),需要逐個判斷區(qū)內(nèi)的每一個數(shù)據(jù),然后將所有數(shù)據(jù)中凡是符號位為1的數(shù)據(jù)的個數(shù)累加起來,即得到區(qū)內(nèi)所包含負(fù)數(shù)的個數(shù)。實(shí)驗程序流程圖如圖1.17所示。實(shí)驗程序清單(例程文件名為:A5-2.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV DI, 3000H;數(shù)據(jù)區(qū)首地址MOV CL, DI;取數(shù)據(jù)個數(shù)XOR CH, CHMOV BL, CHINC DI;指向第一個數(shù)據(jù)A1:MOV AL, DITEST AL, 80H;檢查數(shù)據(jù)首位是否為1J
40、E A2INC BL;負(fù)數(shù)個數(shù)加1A2:INC DILOOP A1MOV DI, BL;保存結(jié)果MOV AX,4C00HINT 21H;程序終止CODEENDSEND START實(shí)驗步驟(1)按實(shí)驗流程編寫實(shí)驗程序。(2)編譯、鏈接無誤后裝入系統(tǒng)。(3)鍵入E3000,輸入數(shù)據(jù)如下: 300006 (數(shù)據(jù)個數(shù)) 300112 300288 300382 300490 300522 300633 圖1.17 程序流程圖(4)先運(yùn)行程序,待程序運(yùn)行停止。(5)查看3007內(nèi)存單元或寄存器BL中的內(nèi)容,結(jié)果應(yīng)為03。(6)可以進(jìn)行反復(fù)測試來驗證程序的正確性。1.6 排序程序設(shè)計實(shí)驗1.6.1 實(shí)驗?zāi)?/p>
41、的1. 掌握分支、循環(huán)、子程序調(diào)用等基本的程序結(jié)構(gòu)。2. 學(xué)習(xí)綜合程序的設(shè)計、編制及調(diào)試。1.6.2 實(shí)驗設(shè)備PC機(jī)一臺,TD-PITE實(shí)驗裝置一套。1.6.3 實(shí)驗內(nèi)容及步驟1. 氣泡排序法在數(shù)據(jù)區(qū)中存放著一組數(shù),數(shù)據(jù)的個數(shù)就是數(shù)據(jù)緩沖區(qū)的長度,要求采用氣泡法對該數(shù)據(jù)區(qū)中的數(shù)據(jù)按遞增關(guān)系排序。設(shè)計思想:(1)從最后一個數(shù)(或第一個數(shù))開始,依次把相鄰的兩個數(shù)進(jìn)行比較,即第N個數(shù)與第N1個數(shù)比較,第N1個數(shù)與第N2個數(shù)比較等等;若第N1個數(shù)大于第N個數(shù),則兩者交換,否則不交換,直到N個數(shù)的相鄰兩個數(shù)都比較完為止。此時,N個數(shù)中的最小數(shù)將被排在N個數(shù)的最前列。(2)對剩下的N1個數(shù)重復(fù)(1)這一
42、步,找到N1個數(shù)中的最小數(shù)。(3)再重復(fù)(2),直到N個數(shù)全部排列好為止。實(shí)驗程序清單(例程文件名為:A6-1.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV CX, 000AHMOV SI, 300AHMOV BL, 0FFHA1:CMP BL, 0FFHJNZ A4MOV BL, 00HDEC CXJZ A4PUSH SIPUSH CXA2:DEC SIMOV AL, SIDEC SICMP AL, SIJA A3XCHG AL, SIMOV SI+01H, ALMOV BL,
43、0FFHA3:INC SILOOP A2POP CXPOP SIJMP A1A4: MOV AX,4C00HINT 21H;程序終止CODEENDSEND START實(shí)驗步驟(1)分析參考程序,繪制流程圖并編寫實(shí)驗程序。(2)編譯、鏈接無誤后裝入系統(tǒng)。(3)鍵入E3000命令修改3000H3009H單元中的數(shù),任意存入10個無符號數(shù)。(4)先運(yùn)行程序,待程序運(yùn)行停止。(5)通過鍵入D3000命令查看程序運(yùn)行的結(jié)果。(6)可以反復(fù)測試幾組數(shù)據(jù),觀察結(jié)果,驗證程序的正確性。思考題:注意兩個循環(huán)是如何循環(huán)的,如果想減少判斷次數(shù),比如說幾次交換后就不再有數(shù)據(jù)交換了,如何修改程序來減少程序執(zhí)行時間;編一
44、程序把3000H-3009H中內(nèi)容按從大到小排列;如果是有符號數(shù)怎么改寫程序。2. 學(xué)生成績名次表將分?jǐn)?shù)在1100之間的10個成績存入首地址為3000H的單元中,3000HI表示學(xué)號為I的學(xué)生成績。編寫程序,將排出的名次表放在3100H開始的數(shù)據(jù)區(qū),3100HI中存放的為學(xué)號為I的學(xué)生名次。實(shí)驗程序清單(例程文件名為:A6-2.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV AX,0000HMOV DS,AXMOV ES,AXMOV SI,3000H;存放學(xué)生成績MOV CX,000
45、AH;共10個成績MOV DI,3100H;名次表首地址A1:CALL BRANCH;調(diào)用子程序MOV AL,0AHSUB AL,CLINC ALMOV BX,DXMOV BX+DI,ALLOOP A1MOV AX,4C00HINT 21H;程序終止;=掃描成績表,得到最高成績者的學(xué)號=BRANCH:PUSH CXMOV CX,000AHMOV AL,00HMOV BX,3000HMOV SI,BXA2:CMP AL,SIJAE A3MOV AL,SIMOV DX,SISUB DX,BXA3:INC SILOOP A2ADD BX,DXMOV AL,00HMOV BX,ALPOP CXRETC
46、ODEENDSEND START實(shí)驗步驟(1)繪制流程圖,并編寫實(shí)驗程序。(2)編譯、鏈接無誤后裝入系統(tǒng)。(3)將10個成績存入首地址為3000H的內(nèi)存單元中。(4)調(diào)試并運(yùn)行程序。(5)檢查3100H起始的內(nèi)存單元中的名次表是否正確。1.7 子程序設(shè)計實(shí)驗1.7.1 實(shí)驗?zāi)康?. 學(xué)習(xí)子程序的定義和調(diào)用方法。2. 掌握子程序、子程序的嵌套、遞歸子程序的結(jié)構(gòu)。3. 掌握子程序的程序設(shè)計及調(diào)試方法。1.7.2 實(shí)驗設(shè)備PC機(jī)一臺,TD-PITE實(shí)驗裝置一套。1.7.3 實(shí)驗內(nèi)容及步驟1. 求無符號字節(jié)序列中的最大值和最小值設(shè)有一字節(jié)序列,其存儲首地址為3000H,字節(jié)數(shù)為08H。利用子程序的方法
47、編程求出該序列中的最大值和最小值。程序流程圖如圖1.18所示。圖1.18 程序流程圖實(shí)驗程序清單(例程文件名為:A7-1.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV AX, 0000HMOV DS, AXMOV SI, 3000H; 數(shù)據(jù)區(qū)首址MOV CX, 0008HCALL BRANCH; 調(diào)用子程序HERE:JMP HEREBRANCHPROC NEAR; 子程序,返回參數(shù)在AX中JCXZ A4PUSH SIPUSH CXPUSH BXMOV BH, SIMOV BL, B
48、HCLDA1:LODSBCMP AL, BHJBE A2MOV BH, ALJMP A3A2:CMP AL, BLJAE A3MOV BL, ALA3:LOOP A1MOV AX, BXPOP BXPOP CXPOP SIA4:RETBRANCHENDPCODE ENDSEND START實(shí)驗步驟(1)根據(jù)程序流程圖編寫實(shí)驗程序。(2)經(jīng)編譯、鏈接無誤后裝入系統(tǒng)。(3)鍵入E3000命令,輸入8個字節(jié)的數(shù)據(jù),如:D9 07 8B C5 EB 04 9D F9。(4)運(yùn)行實(shí)驗程序。(5)點(diǎn)擊停止按鈕,停止程序運(yùn)行,觀察寄存器窗口中AX的值,AX應(yīng)為F9 04,其中AH中為最大值,AL中為最小值。
49、(6)反復(fù)測試幾組數(shù)據(jù),檢驗程序的正確性。程序說明:該程序使用BH和BL暫存現(xiàn)行的最大值和最小值,開始時初始化成首字節(jié)的內(nèi)容,然后進(jìn)入循環(huán)操作,從字節(jié)序列中逐個取出一個字節(jié)的內(nèi)容與BH和BL相比較,若取出的字節(jié)內(nèi)容比BH的內(nèi)容大或比BL的內(nèi)容小,則修改之。當(dāng)循環(huán)操作結(jié)束時,將BH送AH,將BL送AL,作為返回值,同時恢復(fù)BX原先的內(nèi)容。2. 求N!利用子程序的嵌套和子程序的遞歸調(diào)用,實(shí)現(xiàn)N!的運(yùn)算。根據(jù)階乘運(yùn)算法則,可以得:N!N(N1)!N(N1)(N2)!0!1由此可知,欲求N的階乘,可以用一遞歸子程序來實(shí)現(xiàn),每次遞歸調(diào)用時應(yīng)將調(diào)用參數(shù)減1,即求(N1)的階乘,并且當(dāng)調(diào)用參數(shù)為0時應(yīng)停止遞
50、歸調(diào)用,且有0!1,最后將每次調(diào)用的參數(shù)相乘得到最后結(jié)果。因每次遞歸調(diào)用時參數(shù)都送入堆棧,當(dāng)N為0而程序開始返回時,應(yīng)按嵌套的方式逐層取出相應(yīng)的調(diào)用參數(shù)。定義兩個變量N及RESULT,RESULT中存放N!的計算結(jié)果,N在00H08H之間取值。實(shí)驗程序清單(例程文件名為:A7-2.ASM)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSPUBLICN, RESULT;設(shè)置全局變量DATASEGMENTNDB ?;N的范圍在18之間RESULTDW ?;N!的結(jié)果存于該變量中DATAENDSCODESEGMENTASSUME CS:CODE, DS:DATAST
51、ART:MOV AX, DATAMOV DS, AXMOV AX, OFFSET RESULTPUSH AXMOV AL, NMOV AH, 00HPUSH AXMOV DI, 0000HCALL branchJMP START;在此處設(shè)置斷點(diǎn),觀察變量;=子程序=branch:PUSH BPMOV BP,SPPUSH BXPUSH AXMOV BX,BP+DI+06HMOV AX,BP+DI+04HCMP AX,0000HJZ A1PUSH BXDEC AXPUSH AXCALL branch;遞歸調(diào)用MOV BX,BP+DI+06HMOV AX,BXPUSH BXMOV BX,BP+DI+
52、04HMUL BXPOP BXJMP A2A1:MOV AX, 0001HA2:MOV RESULT, AX;結(jié)果存入RESULT中POP AXPOP BX POP BPRET 0004HCODEENDSEND START實(shí)驗步驟(1)依據(jù)設(shè)計思想繪制程序流程圖,編寫實(shí)驗程序。(2)經(jīng)編譯、鏈接無誤后裝入系統(tǒng)。(3)將變量N及RESULT加入變量監(jiān)視窗口,并修改N值,N在0008H之間取值。(4)在JMP START語句行設(shè)置斷點(diǎn),然后運(yùn)行程序。(5)當(dāng)程序遇到斷點(diǎn)后停止運(yùn)行,此時觀察變量窗口中RESULT的值是否正確,驗證程序的正確性。(6)改變變量N的值,然后再次運(yùn)行程序,當(dāng)程序停止在斷點(diǎn)
53、行后觀察實(shí)驗結(jié)果。表1.3 階乘表N012345678RESULT112618H78H02D0H13B0H9D80H1.8 查表程序設(shè)計實(shí)驗1.8.1 實(shí)驗?zāi)康膶W(xué)習(xí)查表程序的設(shè)計方法。1.8.2 實(shí)驗設(shè)備PC機(jī)一臺,TD-PITE實(shí)驗裝置一套。1.8.3 實(shí)驗內(nèi)容所謂查表,就是根據(jù)某個值,在數(shù)據(jù)表格中尋找與之對應(yīng)的一個數(shù)據(jù),在很多情況下,通過查表比通過計算要使程序更簡單,更容易編制。通過查表的方法實(shí)現(xiàn)十六進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼。根據(jù)1.2章節(jié)的表1.1可知,09的ASCII碼為30H39H,而AF的ASCII碼為41H46H,這樣就可以將09與AF對應(yīng)的ASCII碼保存在一個數(shù)據(jù)表格中。當(dāng)給
54、定一個需要轉(zhuǎn)換的十六進(jìn)制數(shù)時,就可以快速的在表格中找出相應(yīng)的ASCII碼值。實(shí)驗程序清單(例程文件名為:A8-1.ASM)SSTACKSEGMENT STACKDW 32 DUP(?)SSTACKENDSPUBLICASCH, ASCL, HEX;定義全局變量DATASEGMENT;十六進(jìn)制數(shù)09,A,B,C,D,E,F對應(yīng)ASC碼表TABDB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39HDB 41H,42H,43H,44H,45H,46HHEXDB ?;待轉(zhuǎn)換的十六進(jìn)制數(shù)ASCHDB ?;高4位轉(zhuǎn)換的ASCII碼ASCLDB ?;低4位轉(zhuǎn)換的ASCII碼DA
55、TAENDSCODESEGMENTASSUME CS:CODE, SS:SSTACK, DS:DATASTART:PUSH DSXOR AX, AXMOV AX, DATAMOV DS, AXAA1:MOV AL, HEX;需轉(zhuǎn)換的十六進(jìn)制數(shù)MOV AH, ALAND AL, 0F0HMOV CL, 04HSHR AL, CLMOV BX, OFFSET TAB;表首地址存放于BX中XLATMOV ASCH, AL;存放十六進(jìn)制數(shù)高4位的BCD碼MOV AL, AHAND AL, 0FHXLATMOV ASCL, AL;存放十六進(jìn)制數(shù)低4位的BCD碼NOPJMP AA1;在此處設(shè)置斷點(diǎn),觀察轉(zhuǎn)
56、換結(jié)果CODEENDSEND START1.8.4 實(shí)驗步驟1. 根據(jù)設(shè)計思想繪制程序流程圖,編寫實(shí)驗程序。2. 經(jīng)編譯、鏈接無誤后,將目標(biāo)代碼裝入系統(tǒng)。3. 將變量HEX,ASCH,ASCL添加到變量監(jiān)視窗口中,并修改HEX的值,如12。4. 在語句JMP AA1處設(shè)置斷點(diǎn),然后運(yùn)行程序。5. 程序會在斷點(diǎn)行停止運(yùn)行,并更新變量窗口中變量的值,查看變量窗,ASCH應(yīng)為31,ASCL應(yīng)為32。6. 反復(fù)修改HEX的值,觀察ASCH與ASCL的值,驗證程序功能。第2章 80X86微機(jī)接口技術(shù)及其應(yīng)用實(shí)驗接口技術(shù)是把由處理器、存儲器等組成的基本系統(tǒng)與外部設(shè)備連接起來,從而實(shí)現(xiàn)CPU與外部設(shè)備通信的
57、一門技術(shù)。微機(jī)的應(yīng)用是隨著外部設(shè)備的不斷更新和接口技術(shù)的不斷發(fā)展而深入到各行各業(yè),任何微機(jī)應(yīng)用開發(fā)工作都離不開接口的設(shè)計、選用及連接。微機(jī)應(yīng)用系統(tǒng)需要設(shè)計的硬件是一些接口電路,所要編寫的軟件是控制這些接口電路按要求工作的驅(qū)動程序。因此,接口技術(shù)是微機(jī)應(yīng)用中必不可少的基本技能。2.1 靜態(tài)存儲器擴(kuò)展實(shí)驗2.1.1 實(shí)驗?zāi)康?. 了解存儲器擴(kuò)展的方法和存儲器的讀/寫。2. 掌握CPU對16位存儲器的訪問方法。2.1.2 實(shí)驗設(shè)備PC機(jī)一臺,TD-PITE實(shí)驗裝置一套,示波器一臺。2.1.3 實(shí)驗內(nèi)容編寫實(shí)驗程序,將0000H000FH共16個數(shù)寫入SRAM的從0000H起始的一段空間中,然后通過系
58、統(tǒng)命令查看該存儲空間,檢測寫入數(shù)據(jù)是否正確。2.1.4 實(shí)驗原理存儲器是用來存儲信息的部件,是計算機(jī)的重要組成部分,靜態(tài)RAM是由MOS管組成的觸發(fā)器電路,每個觸發(fā)器可以存放1位信息。只要不掉電,所儲存的信息就不會丟失。因此,靜態(tài)RAM工作穩(wěn)定,不要外加刷新電路,使用方便。但一般 圖2.1 62256引腳圖SRAM 的每一個觸發(fā)器是由6個晶體管組成,SRAM芯片的集成度不會太高,目前較常用的有6116(2K8位),6264(8K8位)和62256(32K8位)。本實(shí)驗平臺上選用的是62256,兩片組成32K16位的形式,共64K字節(jié)。62256的外部引腳圖如圖4.1所示。本系統(tǒng)采用準(zhǔn)32位CP
59、U,具有16位外部數(shù)據(jù)總線,即D0、D1、D15,地址總線為BHE(表示該信號低電平有效)、BLE、A1、A2、A20。存儲器分為奇體和偶體,分別由字節(jié)允許線BHE和BLE選通。存儲器中,從偶地址開始存放的字稱為規(guī)則字,從奇地址開始存放的字稱為非規(guī)則字。處理器訪問規(guī)則字只需要一個時鐘周期,BHE和BLE同時有效,從而同時選通存儲器奇體和偶體。處理器訪問非規(guī)則字卻需要兩個時鐘周期,第一個時鐘周期BHE有效,訪問奇字節(jié);第二個時鐘周期BLE有效,訪問偶字節(jié)。處理器訪問字節(jié)只需要一個時鐘周期,視其存放單元為奇或偶,而BHE或BLE有效,從而選通奇體或偶體。寫規(guī)則字和非規(guī)則字的簡單時序圖如圖2.2所示
60、。 圖2.2 寫規(guī)則字(左)和非規(guī)則字(右)簡單時序圖實(shí)驗單元電路圖圖2.3 SRAM單元電路圖實(shí)驗程序清單(MEM1.ASM)SSTACKSEGMENT STACKDW 32 DUP(?)SSTACKENDSCODESEGMENTSTARTPROC FARASSUME CS:CODE MOV AX, 8000H; 存儲器擴(kuò)展空間段地址MOV DS, AXAA0:MOV SI, 0000H; 數(shù)據(jù)首地址MOV CX, 0010HMOV AX, 0000HAA1:MOV SI, AXINC AXINC SIINC SILOOP AA1MOV AX,4C00HINT 21H;程序終止STARTEN
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)習(xí)貫徹黨的XX屆一中全會精神模板
- 二零二五年度產(chǎn)權(quán)置換簡易房屋買賣合同3篇
- 研發(fā)部門年終總結(jié)
- 二零二五年度房地產(chǎn)開發(fā)項目合伙人股權(quán)入股合同范本9篇
- 基于結(jié)構(gòu)化主題的單元整體教學(xué)-以小學(xué)數(shù)學(xué)學(xué)科為例
- 二零二五年度房產(chǎn)抵押貸款合同范本一(房屋抵押借款合同模板)15篇
- 四川省綿陽市江油市2024-2025學(xué)年八年級上學(xué)期期末教學(xué)質(zhì)量監(jiān)測道德與法治試題(含答案)
- 陜西省寶雞市鳳翔區(qū)2024-2025學(xué)年八年級上學(xué)期期末質(zhì)量檢測道德與法治試卷(含答案)
- 白嶺礦硐提升改造及螢石精粉浮選項目可行性研究報告模板-立項備案
- 湖南省常德市高中學(xué)校聯(lián)盟2024-2025學(xué)年高一上學(xué)期期末質(zhì)量檢測地理試題( 含答案)
- 銀行資產(chǎn)保全員工年度工作總結(jié)
- 鋼結(jié)構(gòu)網(wǎng)架驗收施工質(zhì)量自評報告-副本
- 《修心三不 不生氣 不計較 不抱怨》讀書筆記思維導(dǎo)圖
- 妊娠劇吐的護(hù)理查房
- GB/T 5023.5-2008額定電壓450/750 V及以下聚氯乙烯絕緣電纜第5部分:軟電纜(軟線)
- GB/T 36127-2018玉雕制品工藝質(zhì)量評價
- GB/T 23445-2009聚合物水泥防水涂料
- 漆畫漆藝 第三章
- (完整版)100道湊十法練習(xí)題
- 光伏逆變器一課件
- 2023年上海師范大學(xué)輔導(dǎo)員招聘考試筆試題庫及答案解析
評論
0/150
提交評論