




已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微機(jī)原理實(shí)驗(yàn)課,西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院實(shí)驗(yàn)教學(xué)中心,MASM 611使用簡(jiǎn)要說(shuō)明,Microsoft宏匯編程序MASM611有建立匯編語(yǔ)言所需的全部工具, 我們簡(jiǎn)要介紹其集成開(kāi)發(fā)軟件PWB。PWB是集匯編程序的編輯、編 譯、連接、調(diào)試、運(yùn)行于一體的綜合軟件。 運(yùn)行 PWB 在計(jì)算機(jī) C:盤(pán)上 具體使用方法結(jié)合實(shí)例介紹,軟件實(shí)驗(yàn)部分,本部分共進(jìn)行4次實(shí)驗(yàn),實(shí)驗(yàn)內(nèi)容如下:,實(shí)驗(yàn)一 BCD碼的運(yùn)算,一實(shí)驗(yàn)?zāi)康?1.熟悉在MASM611集成環(huán)境下建立、匯編、鏈接、調(diào)試和運(yùn)行匯編語(yǔ)言程序的全過(guò)程。 2.掌握匯編語(yǔ)言程序結(jié)構(gòu)中數(shù)據(jù)段、堆棧段、代碼段定義及內(nèi)存分配方法。 3.學(xué)會(huì)DEBUG調(diào)試程序主要命令的使用方法。 4.掌握用組合BCD碼表示數(shù)據(jù)的方法,并熟悉其加、減、乘、除運(yùn)算。 二實(shí)驗(yàn)內(nèi)容 1.多位十進(jìn)制數(shù)加法。 2.兩位十進(jìn)制數(shù)乘法。 三實(shí)驗(yàn)要求 1.多位十進(jìn)制數(shù)加法:在內(nèi)存中以DATA1和DATA2為首址,各分配5個(gè)字節(jié)單元,分別存入兩個(gè)8位組合BCD碼數(shù)據(jù)(低位在前),將兩數(shù)相加,結(jié)果送回到DATA2處。 2.兩位十進(jìn)制數(shù)乘法:將被乘數(shù)和乘數(shù)以組合BCD碼形式分別存放于DATA1和DATA2定義的節(jié)單元中,經(jīng)乘法運(yùn)算,乘積存入DATA3定義的兩個(gè)內(nèi)存單元中。 3.用DEBUG調(diào)試程序、查看運(yùn)算結(jié)果,進(jìn)行手工驗(yàn)證;并且用DEBUG修改數(shù)據(jù),重新執(zhí)行。,關(guān)于BCD碼、十六進(jìn)制數(shù)的說(shuō)明,BCD碼用4位二進(jìn)制編碼表示一個(gè)十進(jìn)制數(shù),又稱(chēng)二十進(jìn)制數(shù)。由于這4位二進(jìn)制數(shù) 的權(quán)值為8421,故也稱(chēng)BCD碼為8421碼。在計(jì)算機(jī)里,用一個(gè)字節(jié)的低4位表示一位 十進(jìn)制數(shù)非組合BCD碼;用一個(gè)字節(jié)表示兩位十進(jìn)制數(shù)組合BCD碼。,在計(jì)算機(jī)里,所有的運(yùn)算都是按二進(jìn)制進(jìn)行的,運(yùn)算結(jié)果是二進(jìn)制數(shù)(即十六進(jìn)制數(shù)) 。為了把十六進(jìn)制運(yùn)算結(jié)果轉(zhuǎn)換成十進(jìn)制,匯編語(yǔ)言中引進(jìn)了組合BCD碼加法調(diào)整指令DAA和減法調(diào)整指令DAS。,DAA 加法的十進(jìn)制調(diào)整指令 該指令之前要執(zhí)行ADD或ADC。 調(diào)整方法:若AF為1,或AL中的低4位是十六進(jìn)制的A F,則AL內(nèi)容加06H,AF置1; 若CF為1,或AL中的高4位是十六進(jìn)制的A F,則AL內(nèi)容加60H,CF置1。 AF 輔助進(jìn)位標(biāo)志 CF進(jìn)位標(biāo)志,多位十進(jìn)制數(shù)加法,.model small .data data1 db 11h,22h,33h,44h,00h data2 db 99h,88h,77h,66h,00h .code .startup mov si,offset data1 ;設(shè)指針 mov di,offset data2 clc ;清進(jìn)位 mov cx,5 ;設(shè)加法次數(shù) lop: mov al,si ;取第一加數(shù) adc al,di ;取第二加數(shù) daa ;十進(jìn)制調(diào)整 mov di,al ;結(jié)果存入指定單元 inc si ;指針加1 inc di loop lop ;循環(huán) .exit end,流程圖:,開(kāi)始,清進(jìn)位,設(shè)加法次數(shù),十進(jìn)制調(diào)整; 部分和回送,指向下單元數(shù),AL AL+第二加數(shù),CX-1=0?,結(jié)束,Y,N,兩位十進(jìn)制數(shù)乘法,.model small .586 .data data1 db 34h data2 db 56h data3 dw 1 dup (?) .code .startup mov bl,data1 ;第一乘數(shù)轉(zhuǎn)換成16進(jìn)制數(shù) 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 ;置加法次數(shù)計(jì)數(shù)器,mov bl,data2 ; 第二乘數(shù)做BCD 加法,加第一乘數(shù)次 mov ax,0 clc lop: add al,bl daa xchg ah,al adc al,0 daa xchg ah,al loop lop mov data3,ax ;積送乘積存儲(chǔ)單元 nop nop nop .exit end,兩位十進(jìn)制數(shù)乘法流程圖:,開(kāi)始,分離出第一乘數(shù)的“個(gè)位”,分離出第一乘數(shù)的“十位”,第一乘數(shù)的“十位”移到 “個(gè)位”后,再乘 10,合成得到16進(jìn)制 的第一乘數(shù),BCD碼轉(zhuǎn)換成16進(jìn)制數(shù),1,1,清進(jìn)位,第二乘數(shù)做加法次數(shù),十進(jìn)制調(diào)整,AL與AH內(nèi)容交換,AL與AH內(nèi)容交換,十進(jìn)制調(diào)整,CX-1=0?,N,Y,存儲(chǔ)結(jié)果,結(jié)束,一、實(shí)驗(yàn)?zāi)康?掌握循環(huán)結(jié)構(gòu)程序的設(shè)計(jì)、調(diào)試。 二、實(shí)驗(yàn)內(nèi)容 1 多字節(jié)無(wú)符號(hào)數(shù)加法。 2 設(shè)計(jì)一軟件延時(shí)器,并在屏幕上顯示軟件延時(shí)倒計(jì)時(shí)過(guò)程。 三、實(shí)驗(yàn)要求 1多字節(jié)無(wú)符號(hào)加法:在DATAS中存放10個(gè)雙字節(jié)無(wú)符號(hào)數(shù), 用循環(huán)結(jié)構(gòu)設(shè)計(jì)程序,通過(guò)程序運(yùn)算,把這10個(gè)雙字節(jié)無(wú)符號(hào) 數(shù)相加,其和存入緊鄰加數(shù)之后的四個(gè)單元中。 2軟件延時(shí)器:做一延時(shí)約1秒的軟件延時(shí)器,在屏幕上按9、 8、0順序顯示軟件延時(shí)倒計(jì)時(shí)過(guò)程。,實(shí)驗(yàn)三 循環(huán)結(jié)構(gòu)程序,有關(guān)問(wèn)題的說(shuō)明,循環(huán)程序的三個(gè)組成部分: 循環(huán)初始狀態(tài)設(shè)置。設(shè)置循環(huán)次數(shù)、為循環(huán)體正常工作建立初始狀態(tài)等。 循環(huán)體。循環(huán)工作的主體,包含循環(huán)的工作部分和修改部分。循環(huán)的工作部分是為完成程序功能而設(shè)計(jì)的程序段;循環(huán)的修改部分是為保證每一次重復(fù)時(shí),參加執(zhí)行的信息能發(fā)生有規(guī)律的變化而建立的程序段。 循環(huán)控制部分。選擇一個(gè)循環(huán)控制條件來(lái)控制循環(huán)的運(yùn)行和結(jié)束。 循環(huán)程序的結(jié)構(gòu):,循環(huán)初始狀態(tài),循環(huán)控制條件,循環(huán)體,Y,N,循環(huán)初始狀態(tài),循環(huán)體,循環(huán)控制條件,Y,N,DO-WHILE結(jié)構(gòu),DO-UNTIL結(jié)構(gòu),子程序結(jié)構(gòu): procedure name PROC Attribute RET procedure name ENDP Attribute,NEAR 調(diào)用程序和過(guò)程在同一個(gè)代碼段中,FAR 調(diào)用程序和過(guò)程不在同一個(gè)代碼段中,系統(tǒng)功能調(diào)用:系統(tǒng)功能調(diào)用是DOS為方便匯編語(yǔ)言編寫(xiě)而提供的一組約80個(gè)功能調(diào)用的常用子程序,它分為設(shè)備管理、文件管理和目錄管理等幾類(lèi)。DOS規(guī)定用軟中斷指令 INT 21H 進(jìn)入各功能調(diào)用子程序的總?cè)肟冢贋槊總€(gè)功能調(diào)用規(guī)定一個(gè)功能號(hào),以便進(jìn)入相應(yīng)各用子程序的入口。系統(tǒng)功能調(diào)用的使用方法:,EX1:從鍵盤(pán)輸入單字符 MOV AH,01H ;1號(hào)功能調(diào)用 INT 21H 將鍵盤(pán)輸入字符的ASCII碼送到 AL。 EX2:從鍵盤(pán)輸入字符串 BUF DB 10 DUP(?) LEA DX,BUF MOV AH,0AH ;0A號(hào)功能調(diào)用 INT 21H 將鍵盤(pán)輸入的字符串寫(xiě)到 RAM 中去,擊 回車(chē)鍵表示字符串結(jié)束。字符數(shù)與予留 空間的關(guān)系為:少補(bǔ)零多丟失。 EX3:輸出單字符 MOV DL,M MOV AH,02H; 2號(hào)功能調(diào)用 INT 21H 將 DL 中字符從屏幕上顯示出來(lái)。,EX4:輸出字符串 BUF DB Thank you MOV DX,OFFSET BUF MOV AH,09H;9號(hào)功能調(diào)用 INT 21H 將 指定 RAM 緩沖區(qū)中的字符串從屏幕 上顯示出來(lái)。 為字符串結(jié)束符。 EX5:直接控制臺(tái)輸入/輸出單字符 MOV DL,0FFH;DL=0FFH時(shí), MOV AH,06H; 6號(hào)功能調(diào)用 INT 21H; 將鍵盤(pán)輸入字符 送到 AL 中。 MOV DL,M; DL 0FFH時(shí), MOV AH,06H; 6號(hào)功能調(diào)用 INT 21H; 將 DL 中字符送到 屏幕上顯示。,多字節(jié)無(wú)符號(hào)數(shù)加法,.MODEL SMALL .586 .DATA DATAS DW 1111H,2222H,3333H,4444H,5555H DW 6666H,7777H,8888H,9999H,0AAAAH RESULT DD 1 DUP(?) .CODE .STARTUP MOV SI,OFFSET DATAs ;設(shè)指針 MOV CX,10 ;累加次數(shù) MOV EAX,0 ;清累加器 CLC ;清進(jìn)位 LOP: MOV BX,SI ;取加數(shù)到BX MOVZX EBX,BX ;將BX擴(kuò)展成32位 ADC EAX,EBX ;帶進(jìn)位加 INC SI ;改指針 INC SI LOOP LOP ;循環(huán)加 MOV RESULT,EAX ;存結(jié)果 .EXIT END,開(kāi)始,清進(jìn)位,將BX擴(kuò)展為32位,SI 指向下一加數(shù),CX-1=0?,N,Y,存結(jié)果,結(jié)束,軟件延時(shí)器,.model small .data data db 20h,20h,20h,20h,20h,39h,0dh,$ .code .startup mov cx,09h ; 設(shè)循環(huán)次數(shù) lop: mov ah,09h ;顯示功能調(diào)用 lea dx,data int 21h call near ptr delay ;調(diào)用延時(shí)子程序 dec data+5 ;修改顯示數(shù)字 loop lop .exit Delay proc near uses cx ;延時(shí)子程序 mov bx,06ffh ;設(shè)第二時(shí)常數(shù) Delay1 :mov cx,0h loop $ ;自身循環(huán)CX次 dec bx ;第二時(shí)常數(shù)減1 jnz delay1 ;不為零循環(huán) ret Delay endp end,開(kāi)始,字符串 顯示功能調(diào)用,延時(shí)子程序調(diào)用,顯示數(shù)字修改,CX-1=0?,N,Y,結(jié)束,主程序流程:,延時(shí)子程序流程:,實(shí)驗(yàn)四 排序程序,一實(shí)驗(yàn)?zāi)康?1學(xué)習(xí)無(wú)符號(hào)數(shù)比較大小指令; 2掌握多重循環(huán)編程方法; 3掌握匯編語(yǔ)言編寫(xiě)排序程序的思路和方法。 二實(shí)驗(yàn)內(nèi)容 1單字節(jié)無(wú)符號(hào)數(shù)排序。 2去極值濾波。 三實(shí)驗(yàn)要求 1單字節(jié)無(wú)符號(hào)數(shù)排序:DATANUM單元開(kāi)始存放雙字節(jié)無(wú)符號(hào)數(shù),表示要排序數(shù)據(jù) 的個(gè)數(shù),DATAS單元開(kāi)始存放要排序的數(shù)據(jù),數(shù)據(jù)個(gè)數(shù)至少10個(gè),程序運(yùn)行之后, 這些數(shù)據(jù)按照由小到大的順序仍然存放于DATAS單元開(kāi)始的位置。 2 去極值濾波:某控制系統(tǒng)為了抗干擾,采用去極值濾波法處理采集數(shù)據(jù),取連 續(xù)6個(gè)A/D采樣值(12位雙字節(jié),低12位),要求去掉最大值和最小值,將 余下4個(gè)數(shù)求平均值,用該平均值代表當(dāng)前時(shí)刻系統(tǒng)狀態(tài)的真值。試編一程序完 成這個(gè)濾波過(guò)程。,單字節(jié)無(wú)符號(hào)數(shù)排序,流程圖:,開(kāi)始,數(shù)據(jù)指針 SI 置 0,前數(shù)與后數(shù)比較,前數(shù)后數(shù),前、后數(shù)交換,數(shù)據(jù)指針 SI 指向下一數(shù),數(shù)據(jù)指針 SI 指向下一數(shù),Y,N,BL-1,CX-1=0?,CX-1=0?,N,N,Y,Y,ZF=1?,N,結(jié)束,Y,.model small .586 .data datanum db 10 datas db 21h,13h,4h,5h,7h db 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 lop next: dec bl jz finish jmp lop0 finish: nop .exit end,去極值濾波,.model small .586 .data datanum db 6 datas dw 0123h,0abch,0234h dw 0345h,0456h,0567h .code .startup call px ;排序 mov si,offset datas+2 ;掐頭去尾送指針 mov cx,4 ;送累加次數(shù) clc ;清進(jìn)位 mov ax,0 ;取首數(shù) qh: adc ax,si ;累加 inc si inc si loop qh shr ax,2 ;除4 mov datas,ax ;存結(jié)果到DATAS首位 .exit,px proc near mov bl,datanum ;取字長(zhǎng) dec bl lop0: movzx cx,bl ;送比較次數(shù) mov si,0 lop: mov ax,datassi ;送前數(shù) cmp ax,datassi+2 ;與后數(shù)比較 ja jh ;前大于后,轉(zhuǎn)交換 inc si inc si ;指針加 1 loop lop ;循環(huán)比較 jmp next ;一輪排序完 jh: xchg ax,datassi+2 ;交換 mov datassi,ax inc si inc si loop lop next: dec bl ;修改比較次數(shù) jz finish jmp lop0 finish: nop ;結(jié)束 ret px endp end,實(shí)驗(yàn)五 分支程序,一、實(shí)驗(yàn)?zāi)康?掌握分支程序編程方法,復(fù)雜分支程序的查表法等。 二、實(shí)驗(yàn)內(nèi)容 1、 學(xué)生課程成績(jī)分段統(tǒng)計(jì)。 2、 鍵盤(pán)及屏幕顯示功能調(diào)用。 三、實(shí)驗(yàn)要求 1、 學(xué)生課程成績(jī)分段統(tǒng)計(jì):用單字節(jié)表示每個(gè)學(xué)生的學(xué)號(hào),學(xué)生的課程成績(jī)用兩位十進(jìn)制數(shù)表示(最低0分,最高99分),規(guī)定0F0H表示作弊,0F1H表示缺考,0FFH為一組學(xué)生成績(jī)的結(jié)束符。學(xué)生成績(jī)?cè)趦?nèi)存的存放形式為“學(xué)號(hào),成績(jī)”,每個(gè)學(xué)生占兩個(gè)字節(jié),從內(nèi)存SCORE為首址開(kāi)始存放。要求學(xué)生人數(shù)不少于10個(gè),試編程序,按0 9、10 19、20 29、80 89、90 99及作弊、缺考等12種情況把學(xué)生的課程成績(jī)進(jìn)行分段統(tǒng)計(jì),將統(tǒng)計(jì)結(jié)果存入以COUNT為首址的12個(gè)單元中。 2、試編一程序掃描鍵盤(pán),當(dāng)B鍵按下時(shí),在屏幕上顯示09循環(huán)計(jì)數(shù);S鍵按下時(shí)停止計(jì)數(shù);再按B鍵繼續(xù)計(jì)數(shù)過(guò)程。E鍵按下時(shí)退出程序。 3、用DEBUG調(diào)試程序預(yù)置數(shù)據(jù)和查看程序運(yùn)行結(jié)果,以驗(yàn)證程序正確性。,學(xué)生課程成績(jī)分段統(tǒng)計(jì),開(kāi)始,設(shè)置學(xué)號(hào)、成績(jī)指針,取學(xué)號(hào),取成績(jī),是結(jié)束標(biāo)志?,取十分位,并將十分值擴(kuò)展為16位送DI,對(duì)DI所指統(tǒng)計(jì)區(qū)段統(tǒng)計(jì)值加1,是作弊?,是缺考?,修改指針,CX-1=0?,1,1,作弊統(tǒng)計(jì)區(qū)段統(tǒng)計(jì)值加1,缺考統(tǒng)計(jì)區(qū)段統(tǒng)計(jì)值加1,結(jié)束,Y,Y,Y,Y,N,N,N,N,.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,12h,0f1h,0ffh count db 12 dup(?) .code .startup mov cx,20 ;送統(tǒng)計(jì)上限 mov si,0 ;SCORE 統(tǒng)計(jì)指針 statistic: mov al,scoresi ;取學(xué)號(hào) cmp al,0ffh ;判是否為結(jié)束 je sta_end ;轉(zhuǎn)統(tǒng)計(jì)結(jié)束 mov bl,scoresi+1 ;取成績(jī) cmp bl,0f0h ;是否作弊 je fake ;是,轉(zhuǎn)作弊處理 cmp bl,0f1h ;是否缺考 je miss ;是,轉(zhuǎn)缺考處理 shr bl,4 ;取十分位 movzx di,bl ;將十分值擴(kuò)展為16位送DI inc countdi ;相應(yīng)區(qū)段統(tǒng)計(jì)值加1 down: inc si ;改指針 inc si loop statistic ;循環(huán) sta_end:nop ;結(jié)束 .exit,fake: mov di,10 ;作弊處理 inc countdi jmp down miss: mov di,11 ;缺考處理 inc countdi jmp down end,鍵盤(pán)及屏幕顯示功能調(diào)用,開(kāi)始,顯示提示信息,置處理指針為“停止”,調(diào)延時(shí)、鍵盤(pán)掃描程序,有鍵動(dòng)?,轉(zhuǎn)處理指針處,B 鍵?,S 鍵?,E 鍵?,轉(zhuǎn)處理指針處,結(jié)束,置處理指針為“計(jì)數(shù)”,置處理指針為“停止”,N,Y,Y,Y,Y,N,N,N,處理指針 為“計(jì)數(shù)”,處理指針 為“停止”,計(jì)數(shù)顯示,延時(shí)、鍵盤(pán)掃描程序,子程序定義,CX-1=0?,N,Y,監(jiān)測(cè)鍵動(dòng),有鍵動(dòng)?,做鍵動(dòng)標(biāo)志bx=1,N,Y,.model small .data Mess1 db press b button - count,0dh,0ah mess2 db press s button - stop,0dh,0ah Mess3 db press e button - exit,0dh,0ah,$ count db 20h,20h,20h,20h,20h,30h,0dh,$ .code .startup mov ah,09h ;顯示提示信息 mov dx,offset mess1 int 21h mov si,stop ;設(shè)處理指針 scan: call near ptr delay ;調(diào)延時(shí)、鍵掃程序 or bx,bx ;判有無(wú)鍵動(dòng) jnz scan1 ;有鍵動(dòng),轉(zhuǎn)鍵處理 jmp si ;無(wú)鍵動(dòng),轉(zhuǎn)當(dāng)前處理程序 scan1: cmp al,b ;鍵處理程序 je b_proc cmp al,s je s_proc cmp al,e je e_proc call delay jmp si b_proc: mov si,count_ ;B鍵處理 jmp scan s_proc: mov si,stop ;S鍵處理 jmp scan e_proc: nop ;E鍵處理 nop .exit,count_: inc count+5 ;修改顯示數(shù)字 mov al,3ah ;比較超限 cmp al,count+5 ja down ;若不超限,調(diào)顯示 mov count+5,30h ;超限,設(shè)啟始值 down: mov ah,09h ;顯示功能調(diào)用 lea dx,count int 21h jmp scan stop: jmp scan nop Delay proc near uses cx ;延時(shí)子程序 mov bx,380h ;設(shè)第二時(shí)常數(shù) delay1: mov cx,0h loop $ ;自身循環(huán)CX次 mov dl,0ffh ;監(jiān)測(cè)鍵動(dòng) mov ah,06h int 21h jnz key_ret ;若有鍵動(dòng),延時(shí)終止,轉(zhuǎn)鍵處理 dec bx ;第二時(shí)常數(shù)減1 jnz delay1 ;不為零循環(huán) jmp delay_ret key_ret: mov bx,1 ;做鍵動(dòng)標(biāo)志 delay_ret: ret Delay endp end,硬件實(shí)驗(yàn)部分,本部分共進(jìn)行3次實(shí)驗(yàn),實(shí)驗(yàn)內(nèi)容如下: 1 實(shí)驗(yàn)六 并行接口技術(shù)實(shí)驗(yàn) 2 實(shí)驗(yàn)七 8254定時(shí)/計(jì)數(shù)器實(shí)驗(yàn) 3 實(shí)驗(yàn)九 A/D轉(zhuǎn)換實(shí)驗(yàn) (下面根據(jù)實(shí)驗(yàn)臺(tái)實(shí)物介紹實(shí)驗(yàn)臺(tái)),特別說(shuō)明:為了方便實(shí)驗(yàn),實(shí)驗(yàn)臺(tái)設(shè)計(jì)時(shí)已將實(shí)驗(yàn)用相關(guān)器件的地址線(xiàn)、數(shù)據(jù)總線(xiàn)及除片選(CS)外的控制線(xiàn)連接到位,并在每一個(gè)實(shí)驗(yàn)電路附近予留有若干信號(hào)連線(xiàn)插孔。實(shí)驗(yàn)時(shí)只要將相應(yīng)插孔用單股導(dǎo)線(xiàn)對(duì)應(yīng)相連即可組成完整的實(shí)驗(yàn)電路。在給出的實(shí)驗(yàn)電路圖中,線(xiàn)路所帶小圓圈即表示連線(xiàn)插孔。 硬件實(shí)驗(yàn)注意事項(xiàng): 1.在實(shí)驗(yàn)臺(tái)斷電條件下,才能用單股導(dǎo)線(xiàn)連接電路; 2.線(xiàn)路連接完成、檢查確認(rèn)沒(méi)有錯(cuò)誤后,再開(kāi)通實(shí)驗(yàn)臺(tái)電源; 3.用單股導(dǎo)線(xiàn)連接電路時(shí),要將單股導(dǎo)線(xiàn)線(xiàn)頭整直,并確認(rèn)線(xiàn)頭沒(méi)有斷裂; 4.實(shí)驗(yàn)完成后,關(guān)斷實(shí)驗(yàn)臺(tái)電源,再一根一根垂直拔掉連接導(dǎo)線(xiàn),并把連接導(dǎo)線(xiàn)整好放入線(xiàn)盒。,實(shí)驗(yàn)六 并行接口技術(shù)實(shí)驗(yàn),一實(shí)驗(yàn)?zāi)康?1.掌握8255A并行接口的基本使用方法。 2.理解數(shù)碼管掃描顯示原理,學(xué)習(xí)數(shù)碼管掃描顯示方法。 二實(shí)驗(yàn)內(nèi)容 1.用8255A作為并行接口,從8255A的一個(gè)端口輸入開(kāi)關(guān)量到CPU或內(nèi)存,再將這一數(shù)據(jù)通過(guò)數(shù)據(jù)總線(xiàn)和8255A的另一個(gè)端口掃描輸出到數(shù)碼管。設(shè)8255A的A口為輸入方式,接邏輯電平開(kāi)關(guān);8255A的B口為輸出方式,通過(guò)MC1413驅(qū)動(dòng)器接數(shù)碼管的位選端;數(shù)碼管的字劃端通過(guò)74HC573與數(shù)據(jù)總線(xiàn)相連;邏輯電平開(kāi)關(guān)SK1SK6按16編號(hào)。試編一程序,用一位數(shù)碼管指示出邏輯電平開(kāi)關(guān)為“0”狀態(tài)的開(kāi)關(guān)編號(hào),即當(dāng)1號(hào)邏輯電平開(kāi)關(guān)為“0”時(shí),所選數(shù)碼管顯示“1”,2號(hào)邏輯電平開(kāi)關(guān)為“0”時(shí),數(shù)碼管顯示“2”,6號(hào)邏輯電平開(kāi)關(guān)為“0”時(shí),數(shù)碼管顯示“6”。所有邏輯開(kāi)關(guān)的初始狀態(tài)為“1”。 2.設(shè)8255A的B口為輸出方式,通過(guò)MC1413驅(qū)動(dòng)器接數(shù)碼管的位選端;數(shù)碼管的字劃端通過(guò)74HC573與數(shù)據(jù)總線(xiàn)相連。試編一動(dòng)態(tài)掃描程序,讓6個(gè)數(shù)碼管“同時(shí)”點(diǎn)亮,顯示“1、2、3、4、5、6”。 三實(shí)驗(yàn)電路及設(shè)計(jì) 1.實(shí)驗(yàn)電路圖,2.實(shí)驗(yàn)連線(xiàn) (1)邏輯電平開(kāi)關(guān)輸出孔K1K6對(duì)應(yīng)連接到8255A的PA0PA5; (2)8255A的PB0PB5對(duì)應(yīng)連接到數(shù)碼管的位選端JM1JM6; (3)數(shù)據(jù)總線(xiàn)D0、D1、D2、D3、D4、D5、D6、D7對(duì)應(yīng)連接到數(shù)碼 管的字劃端a、b、c、d、e、f、g、dp; (4)8255A的片選端CS8255連到譯碼控制單元的300-303H; (5)74HC573的使能端CS573連到譯碼控制單元的310H。 3.8255A的端口地址 PA口:300H,PB 口:301H,PC口:302H,控制寄存器:303H。 4.數(shù)碼管編碼表 “0”-3FH “1”-06H “2”-5BH “3”-4FH “4”-66H “5”-6DH “6”-7DH “7”-07H “8”-7FH “9”-6FH “A”-77H “B”-7CH “C”-39H “D”-3EH “E”-79H “F”-71H,有關(guān)問(wèn)題的說(shuō)明,數(shù)碼管(共陰):,DP,DP,共陰,地,不閉合,數(shù)碼管就點(diǎn)不亮,多個(gè)數(shù)碼管掃描顯示:,多個(gè)數(shù)碼管掃描顯示:,限流電阻,鎖存器,JM3、JM2、JM1誰(shuí)為,誰(shuí)連接的數(shù)碼管就顯示鎖存器當(dāng)前鎖存的值,所謂掃描顯示是: 對(duì)個(gè)數(shù)碼管: .給鎖存器送第個(gè)數(shù)碼管顯示內(nèi)容,而后第個(gè)數(shù)碼管公共端接低,延時(shí) .給鎖存器送第個(gè)數(shù)碼管顯示內(nèi)容,而后第個(gè)數(shù)碼管公共端接低,延時(shí) .給鎖存器送第個(gè)數(shù)碼管顯示內(nèi)容,而后第個(gè)數(shù)碼管公共端接低,延時(shí) 第步后,再?gòu)拈_(kāi)始,周而復(fù)始。,那么, JM3、JM2、JM1是互斥的了!,連接數(shù)據(jù)總線(xiàn)D7D0,驅(qū)動(dòng)器,實(shí)驗(yàn) 6.1,74HC573鎖存器,A口,K6 K5 K4 K3 K2 K1 開(kāi)關(guān),A B C D E F G DP,A口,開(kāi)始,初始化8255,點(diǎn)亮一位數(shù)碼管,讀鍵盤(pán),有鍵?,讀開(kāi)關(guān)量,并取反,位掃描,確定開(kāi)關(guān)號(hào),取對(duì)應(yīng)開(kāi)關(guān)號(hào)的字型碼,輸出對(duì)應(yīng)的數(shù)字,結(jié)束,; CS8255 - 300_303h ; CS573 - 310h ; k1.k6 - PA0.PA5 ; JM1.JM6-PB0.PB5 ; D0.D7-A.BDP .model small .586 p8255 equ 0300h ;片選地址 p_ctl equ 90h ;8255控制字 s_l_a equ 310h ;573鎖存地址 .data table db 3fh,06h,5bh,4fh,66h ;0,1,2,3,4字型 db 6dh,7dh,07h,7fh,6fh ;5,6,7,8,9 .code .startup mov dx , p8255+3 ;8255初始化 mov al , p_ctl out dx,al mov dx , p8255 +1 ;點(diǎn)亮數(shù)碼管SM1 mov al, 01h out dx,al,lop: mov ah,06h ;鍵入“e”結(jié)束執(zhí)行 mov dl,0ffh int 21h cmp al,e je scan_end mov dx,p8255 ;讀開(kāi)關(guān) in al,dx not al movzx ax,al bsf bx,ax ;從ax低位起掃描,將第一個(gè) ; 為1的位號(hào)存BX xchg al,bl mov bx,offset table ;讀字型碼 xlat ;查表,BX+AL送AL mov dx,s_l_a ;輸出對(duì)應(yīng)的數(shù)字 out dx,al jmp lop ;循環(huán)掃描 scan_end:.exit end,實(shí)驗(yàn) 6.2,限流電阻,Dbus D7D0,8255,MC1413驅(qū)動(dòng)器,B口,Dbus D7D0,CS573,CS8255,74HC573鎖存器,A B C D E F G DP,開(kāi)始,初始化,查表取顯示數(shù)字字型碼,顯示字型碼送鎖存器(輸出),取對(duì)應(yīng)數(shù)碼管字位、并輸出,+(下一掃描位置),掃描位數(shù)?,調(diào)延時(shí),讀鍵盤(pán),有鍵動(dòng)?,結(jié)束,延時(shí)程序流程見(jiàn)前,; CS8255 - 300_303h ; CS573 - 310h ; JM1.JM6-PB0.PB5 ; D0.D7-A.BDP ; .model small p8255 equ 300h ;片選地址 p_ctl equ 10010000b ;8255控制字 s_l_a equ 310h ;573鎖存地址 .data table db 3FH,06H,5BH,4FH ,66H ;0,1,2,3,4 db 6DH,7DH,07H,7FH ,6FH ;5,6,7,8,9 .code .startup mov dx,p8255+3 ;發(fā)控制字 mov al,p_ctl out dx,al mov cl,1 ;設(shè)掃描位置,lop: mov al,cl ;取顯示數(shù)字 mov bx,offset table ;讀字型碼 xlat mov dx,s_l_a ;輸出字型碼 out dx,al mov al,80h rol al,cl ;左循環(huán)移位 mov dx,p8255+1 out dx,al ;送B口控制的數(shù)碼管位 inc cl cmp cl,6 jbe down ;若顯示位置大于等于6, ;返回啟始位置1 mov cl,1 down: call delay mov ah,06 ;判有鍵動(dòng),跳出循環(huán) mov dl,0ffh int 21h jnz scan_end jmp lop ;循環(huán)掃描 scan_end:nop .exit,delay proc near uses cx ;延時(shí)子程序 mov bx,02h delay1: mov cx,0h loop $ dec bx jnz delay1 ret delay endp end,實(shí)驗(yàn)七 8254定時(shí)/計(jì)數(shù)器實(shí)驗(yàn),一實(shí)驗(yàn)?zāi)康?1.掌握8254定時(shí)/計(jì)數(shù)器的基本使用方法。 2.了解8254定時(shí)/計(jì)數(shù)器利用級(jí)連擴(kuò)大計(jì)數(shù)范圍的方法。 3.了解多I/O芯片協(xié)同工作的原理和方法。 二實(shí)驗(yàn)內(nèi)容 1.將8254定時(shí)器0設(shè)置為方式2(分頻),定時(shí)器1設(shè)置為方式3(方波),定時(shí)器0的CLK0端接1M或2M時(shí)鐘,定時(shí)器0的輸出脈沖作為定時(shí)器1的時(shí)鐘輸入。將定時(shí)器1的輸出脈沖接在一個(gè)LED燈上或風(fēng)鳴器上。編程使8254工作,觀(guān)察燈的狀態(tài)或風(fēng)鳴器聲響。 2.用8254做秒信號(hào)源,用8255A控制交通燈的紅綠變化,完成一交通燈控制系統(tǒng),使每10秒切換一次通行方向。 三實(shí)驗(yàn)電路及設(shè)計(jì) 1 .實(shí)驗(yàn)電路圖,2.“實(shí)驗(yàn)內(nèi)容1”實(shí)驗(yàn)連線(xiàn) (1)8254的GATE0、GATE1接高電平; (2)8254 T0的CLK0接1M或2M時(shí)鐘孔; (3)8254 T1的CLK1接T0的OUT0; (4)8254的片選端CS8254連到譯碼控制單元的304-307H; (5)8254 T1的OUT1接LED燈或風(fēng)鳴器的輸入端L1或BJ孔。 3.“實(shí)驗(yàn)內(nèi)容2”實(shí)驗(yàn)連線(xiàn) 以下連線(xiàn)假設(shè)8255A的A口為輸入方式、B口為輸出方式,8255A的PA1 連接8254 T1的OUT1,8255A的B口控制交通燈的八只LED燈。 (1)連線(xiàn)同“實(shí)驗(yàn)內(nèi)容1”的(1)(4); (2)8254 T1的OUT1接8255A的PA1孔; (3)8255A的PB7PB0對(duì)應(yīng)連接到dp、g、f、e、d、c、b、a,它們對(duì) 應(yīng)交通燈的Wr、 Er、 Wg、 Eg、 Nr、 Sr、 Ng、 Sg燈; (4)交通燈八只LED發(fā)光管的公共控制端JTD孔接高電平; (5)8255A的片選端CS8255連到譯碼控制單元的300-303H。,4.8254和8255A的端口地址 8254的端口地址: 定時(shí)器0分頻系數(shù)寄存器 304H, 定時(shí)器1分頻系數(shù)寄存器 305H, 控制寄存器 307H。 8255A的端口地址: PA口:300H,PB 口:301H,PC口:302H,控制寄存器:303H。,實(shí)驗(yàn) .1,開(kāi)始,初始化T0,初始化T,裝T0低字節(jié)計(jì)數(shù)初值,結(jié)束,裝T0高字節(jié)計(jì)數(shù)初值,裝T低字節(jié)計(jì)數(shù)初值,裝T高字節(jié)計(jì)數(shù)初值,;cs8253-304_307h ;clk0 - 1M ;out0 -CLK1 ;out1 - BJ 或 DL1 ;gate0 - K1,令k1=“1“ ;gate1 - K2,令k2=“1“ .MODEL SMALL CS8253 EQU 304H T0_CTL EQU 00110100B ; 對(duì)T0 兩次讀寫(xiě),先低后 ;高。 T0為方式2(分頻) T1_CTL EQU 01110110B ;對(duì)T1 兩次讀寫(xiě),先低 ;后高。 T1為方式3(方波) .DATA T0_DATA DB 0FFH,040H T1_DATA DB 0FFH,0,.CODE .STARTUP MOV DX,CS8253+3 ;初始化T0 MOV AL,T0_CTL OUT DX,AL MOV DX,CS8253 ;給T0低字節(jié)裝計(jì)數(shù)初值 MOV AL,T0_DATA OUT DX,AL MOV AL,T0_DATA+1 ;給T0高字節(jié)裝計(jì)數(shù)初值 OUT DX,AL MOV DX,CS8253+3 ;初始化T1 MOV AL,T1_CTL OUT DX,AL MOV DX,CS8253+1 MOV AL,T1_DATA ;給T1低字節(jié)裝計(jì)數(shù)初值 OUT DX,AL MOV AL,T1_DATA+1 ;給T1高字節(jié)裝計(jì)數(shù)初值 OUT DX,AL .EXIT END,實(shí)驗(yàn) .,開(kāi)始,8254 T0 初始化,給8254 T0裝初值,8254 T 初始化,給8254 T裝初值,8255初始化為A口入、B口出,8255 B口輸出方向初值,讀8255 PA1、測(cè)試8255 PA1,PA1?,讀8255 PA1、測(cè)試8255 PA1,PA1?,控制換向 8255 B口輸出方向值,檢查鍵盤(pán),有鍵盤(pán)動(dòng)?,結(jié)束,;cs8254-304_307h ;clk0 - 1M ;out0 - clk1 ;out1 - 8255 的 PA1 ;gate0 - k1,令k1=“1“ ;gate1 - k2,令k2=“1“ ;JTD- k3,令k3=“1“ ;cs8255 - 300_303h ;8255(PB7 . PB0)- (dp.G.F.E.D.C.B.A) .MODEL SMALL T8254 EQU 304H T0_CTL EQU 00110100B T1_CTL EQU 01110110B p8255 equ 300h ;片選地址 p_ctl equ 10010000B ;8255控制字 .DATA T0_DATA DB 0FFH,040H T1_DATA DB 0FFH,0 dir_data DB 00111100B,.CODE .STARTUP MOV DX,T8254+3 ;8254 T0 初始化 MOV AL,T0_CTL OUT DX,AL MOV DX,T8254 ;給8254 T0裝初值 MOV AL,T0_DATA OUT DX,AL MOV AL,T0_DATA+1 OUT DX,AL MOV DX,T8254+3 ;8254 T1初始化 MOV AL,T1_CTL OUT DX,AL MOV DX,T8254+1 ;給8254 T1裝初值 MOV AL,T1_DATA OUT DX,AL MOV AL,T1_DATA+1 OUT DX,AL,mov dx,p8255+3 ;8255為A口入,B口出 mov al,p_ctl out dx,al mov dx,p8255+1 ;8255 B口輸出方向初值 mov al,dir_data out dx,al bit_test0: ;掃描上升沿 mov dx,p8255 in al,dx test al,2 ;測(cè)試8255 PA1,等待PA1=0 jz bit_test1 ;PA1=0轉(zhuǎn) jmp bit_test0 ;PA1=1再測(cè),bit_test1: mov dx,p8255 in al,dx test al,2 ; 測(cè)試8255 PA1,等待PA1=1 jnz dir_ctl ;有上升沿轉(zhuǎn) jmp bit_test1 ;上升沿沒(méi)到再測(cè) dir_ctl: mov al,dir_data ;方向控制 not al ;換向 mov dir_data,al mov dx,p8255+1 ;8255 B口輸出方向值 out dx,al mov ah,0bh ;檢查鍵盤(pán) int 21h or al,al ;有鍵盤(pán)輸入轉(zhuǎn) jnz dir_end jmp bit_test0 dir_end: .EXIT END,實(shí)驗(yàn)九 A/D轉(zhuǎn)換實(shí)驗(yàn),一實(shí)驗(yàn)?zāi)康?學(xué)習(xí)模/數(shù)轉(zhuǎn)換器使用方法,理解模/數(shù)轉(zhuǎn)換原理。 二實(shí)驗(yàn)內(nèi)容 1給A/D轉(zhuǎn)換器輸入一可調(diào)節(jié)的電壓信號(hào),假設(shè)該輸入信號(hào)為一水塔的水位高度信號(hào),請(qǐng)結(jié)合應(yīng)用8255A接口芯片,編程完成以下功能:當(dāng)水位低于PL時(shí)開(kāi)報(bào)警、并打開(kāi)水泵(點(diǎn)亮一指示燈),水位在PLPH之間時(shí)關(guān)閉報(bào)警,水位高于PH時(shí)開(kāi)報(bào)警、并關(guān)閉水泵(指示燈熄滅)。設(shè)PH=0B4H (約3.5V),PL=66H (約2.0V)。 2用A/D轉(zhuǎn)換器對(duì)電壓信號(hào)V4連續(xù)采集4次,求出均值,放入指定單元;并把采集均值轉(zhuǎn)換為電壓,通過(guò)8255在數(shù)碼管上顯示。 三實(shí)驗(yàn)電路及設(shè)計(jì) 1.實(shí)驗(yàn)電路圖,.“實(shí)驗(yàn)內(nèi)容1”實(shí)驗(yàn)連線(xiàn) 以下連線(xiàn)假設(shè)8255A的A口為輸出方式,8255A的PA6控制一LED燈、8255A的 PA7控制報(bào)警風(fēng)鳴器。 (1)J18、J19短路塊接到I/O端; (2)A/D轉(zhuǎn)換單元的AD_S連接譯碼控制單元的AD_S(318_31FH); (3)A/D轉(zhuǎn)換單元的AD_OE連接譯碼控制單元的AD_OE(318_31FH); (4)A/D轉(zhuǎn)換器的IN0輸入端連接到直流電壓?jiǎn)卧腣4孔。直流電
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國(guó)氨酚偽麻那敏片行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 2025至2030中國(guó)芒果行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及商業(yè)模式與投資發(fā)展報(bào)告
- 2025至2030中國(guó)語(yǔ)言識(shí)別行業(yè)市場(chǎng)深度研究與戰(zhàn)略咨詢(xún)分析報(bào)告
- 2025至2030巴斯德微量移液器行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢(xún)研究報(bào)告
- 2025至2030中國(guó)化妝品級(jí)蘆薈提取物行業(yè)調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 2025至2030中國(guó)防爆電動(dòng)執(zhí)行機(jī)構(gòu)行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 2025至2030精密合金材料市場(chǎng)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025至2030中國(guó)異丁醇(CAS78831)行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025至2030中國(guó)線(xiàn)粒體呼吸鏈復(fù)合物酶聯(lián)免疫吸附試驗(yàn)試劑盒行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025至2030中國(guó)空心膠囊行業(yè)市場(chǎng)發(fā)展分析及發(fā)展戰(zhàn)略與投資前景預(yù)測(cè)報(bào)告
- JBT 3997-2011 金屬切削機(jī)床灰鑄鐵件 技術(shù)條件
- 畜禽解剖生理學(xué)-課程說(shuō)課課件
- 2024北京海淀區(qū)初二(下)期末物理及答案
- 廣東省深圳市福田區(qū)2023-2024學(xué)年七年級(jí)下學(xué)期期末數(shù)學(xué)試題
- 防水包工包料合同范本
- 一年級(jí)下冊(cè)《讀讀童謠和兒歌》試題及答案共10套
- 衛(wèi)生管理(副高)考試題庫(kù)
- 電梯維保服務(wù)售后服務(wù)方案
- 一例異常子宮出血的個(gè)案護(hù)理2
- 九年級(jí)上語(yǔ)文課本同步規(guī)范漢字字帖
- JTJ300-2000 港口及航道護(hù)岸工程設(shè)計(jì)與施工規(guī)范
評(píng)論
0/150
提交評(píng)論