![匯編實驗講課微機原理實驗課演示文稿_第1頁](http://file4.renrendoc.com/view/f661a0d905db94289bbb85fb2d15267e/f661a0d905db94289bbb85fb2d15267e1.gif)
![匯編實驗講課微機原理實驗課演示文稿_第2頁](http://file4.renrendoc.com/view/f661a0d905db94289bbb85fb2d15267e/f661a0d905db94289bbb85fb2d15267e2.gif)
![匯編實驗講課微機原理實驗課演示文稿_第3頁](http://file4.renrendoc.com/view/f661a0d905db94289bbb85fb2d15267e/f661a0d905db94289bbb85fb2d15267e3.gif)
![匯編實驗講課微機原理實驗課演示文稿_第4頁](http://file4.renrendoc.com/view/f661a0d905db94289bbb85fb2d15267e/f661a0d905db94289bbb85fb2d15267e4.gif)
![匯編實驗講課微機原理實驗課演示文稿_第5頁](http://file4.renrendoc.com/view/f661a0d905db94289bbb85fb2d15267e/f661a0d905db94289bbb85fb2d15267e5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、微機原理實驗課西北工業(yè)大學計算機學院實驗教學中心MASM 611使用簡要說明 Microsoft宏匯編程序MASM611有建立匯編語言所需的全部工具,我們簡要介紹其集成開發(fā)軟件PWB。PWB是集匯編程序的編輯、編譯、連接、調試、運行于一體的綜合軟件。 運行 PWB 在計算機 C:盤上具體使用方法結合實例介紹 MASM611文件夾BINR文件夾運行程序PWB軟件實驗局部 本局部共進行4次實驗,實驗內容如下: 1實驗一 BCD碼的運算 2實驗三 循環(huán)結構程序 3實驗四 排序程序 4實驗五 分支程序 實驗一 BCD碼的運算 一實驗目的 1.熟悉在MASM611集成環(huán)境下建立、匯編、鏈接、調試和運行匯
2、編語言程序的全過程。 2.掌握匯編語言程序結構中數(shù)據(jù)段、堆棧段、代碼段定義及內存分配方法。 3.學會DEBUG調試程序主要命令的使用方法。 4.掌握用組合BCD碼表示數(shù)據(jù)的方法,并熟悉其加、減、乘、除運算。二實驗內容 1.多位十進制數(shù)加法。 2.兩位十進制數(shù)乘法。三實驗要求 1.多位十進制數(shù)加法:在內存中以DATA1和DATA2為首址,各分配5個字節(jié)單元,分別存入兩個8位組合BCD碼數(shù)據(jù)低位在前,將兩數(shù)相加,結果送回到DATA2處。 2.兩位十進制數(shù)乘法:將被乘數(shù)和乘數(shù)以組合BCD碼形式分別存放于DATA1和DATA2定義的節(jié)單元中,經(jīng)乘法運算,乘積存入DATA3定義的兩個內存單元中。 3.用
3、DEBUG調試程序、查看運算結果,進行手工驗證;并且用DEBUG修改數(shù)據(jù),重新執(zhí)行。關于BCD碼、十六進制數(shù)的說明BCD碼用4位二進制編碼表示一個十進制數(shù),又稱二十進制數(shù)。由于這4位二進制數(shù)的權值為8421,故也稱BCD碼為8421碼。在計算機里,用一個字節(jié)的低4位表示一位十進制數(shù)非組合BCD碼;用一個字節(jié)表示兩位十進制數(shù)組合BCD碼。非組合BCD碼uuuu 1001例:計算機里 79d 非組合BCD碼:uuuu0111 uuuu1001組合BCD碼0111 1001例:計算機里 79d 組合BCD碼:0111100116進制數(shù)0123456789ABCDEF二進制碼0000000100100
4、011010001010110011110001001101010111100110111101111BCD碼000000010010001101000101011001111000100110進制數(shù)0123456789在計算機里,所有的運算都是按二進制進行的,運算結果是二進制數(shù)即十六進制數(shù) 。為了把十六進制運算結果轉換成十進制,匯編語言中引進了組合BCD碼加法調整指令DAA和減法調整指令DAS。 DAA 加法的十進制調整指令 該指令之前要執(zhí)行ADD或ADC。調整方法:假設AF為1,或AL中的低4位是十六進制的A F,那么AL內容加06H,AF置1; 假設CF為1,或AL中的高4位是十六進制的
5、A F,那么AL內容加60H,CF置1。 AF 輔助進位標志 CF進位標志AL AL中的十六進制數(shù)調整為BCD格式多位十進制數(shù)加法 .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 ;設加法次數(shù)lop: mov al,si ;取第一加數(shù) adc al,di ;取第二加數(shù) daa ;十進制調整 mov di,al ;結果存入指定單元 inc
6、 si ;指針加1 inc diloop lop ;循環(huán) .exit end 流程圖:開始SI Data1首址DI Data2首址清進位設加法次數(shù)十進制調整; 局部和回送指向下單元數(shù)AL 第一加數(shù)AL AL+第二加數(shù)CX-1=0?結束YN兩位十進制數(shù)乘法.model small.586.datadata1 db 34hdata2 db 56hdata3 dw 1 dup (?).code.startup mov bl,data1 ;第一乘數(shù)轉換成16進制數(shù) mov bh,bl and bh,0fh and bl,0f0h mov cL,4 shr bl,cL mov al,10 mul bl
7、add al,bh movzx cx, al ;置加法次數(shù)計數(shù)器 mov bl,data2 ; 第二乘數(shù)做BCD 加法,加第一乘數(shù)次 mov ax,0 clclop: add al,bl daa xchg ah,al adc al,0 daa xchg ah,al loop lop mov data3,ax;積送乘積存儲單元 nop nop nop .exit end兩位十進制數(shù)乘法流程圖:開始BL 第一乘數(shù)BH 第一乘數(shù)別離出第一乘數(shù)的“個位別離出第一乘數(shù)的“十位第一乘數(shù)的“十位移到“個位后,再乘 10合成得到16進制的第一乘數(shù)CX 16進制的第一乘數(shù)BCD碼轉換成16進制數(shù)11AX 0清進
8、位BL 第二乘數(shù)第二乘數(shù)做加法次數(shù)十進制調整AL與AH內容交換AL AL+0+CFAL AL+BLAL與AH內容交換十進制調整CX-1=0?NY存儲結果結束一、實驗目的 掌握循環(huán)結構程序的設計、調試。二、實驗內容1 多字節(jié)無符號數(shù)加法。2 設計一軟件延時器,并在屏幕上顯示軟件延時倒計時過程。三、實驗要求1多字節(jié)無符號加法:在DATAS中存放10個雙字節(jié)無符號數(shù), 用循環(huán)結構設計程序,通過程序運算,把這10個雙字節(jié)無符號 數(shù)相加,其和存入緊鄰加數(shù)之后的四個單元中。2軟件延時器:做一延時約1秒的軟件延時器,在屏幕上按9、 8、0順序顯示軟件延時倒計時過程。 實驗三 循環(huán)結構程序有關問題的說明循環(huán)程
9、序的三個組成局部: 循環(huán)初始狀態(tài)設置。設置循環(huán)次數(shù)、為循環(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 NE
10、AR 調用程序和過程在同一個代碼段中FAR 調用程序和過程不在同一個代碼段中系統(tǒng)功能調用:系統(tǒng)功能調用是DOS為方便匯編語言編寫而提供的一組約80個功能調用的常用子程序,它分為設備管理、文件管理和目錄管理等幾類。DOS規(guī)定用軟中斷指令 INT 21H 進入各功能調用子程序的總入口,再為每個功能調用規(guī)定一個功能號,以便進入相應各用子程序的入口。系統(tǒng)功能調用的使用方法:指定的寄存器入口參數(shù)AH調用功能的功能號INT 21HEX1:從鍵盤輸入單字符 MOV AH,01H ;1號功能調用 INT 21H將鍵盤輸入字符的ASCII碼送到 AL。EX2:從鍵盤輸入字符串 BUF DB 10 DUP? LE
11、A DX,BUF MOV AH,0AH ;0A號功能調用 INT 21H將鍵盤輸入的字符串寫到 RAM 中去,擊回車鍵表示字符串結束。字符數(shù)與予留空間的關系為:少補零多喪失。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:直接控制臺輸入/輸出單字符 MOV DL,0FFH;DL=0FFH時, MOV AH
12、,06H; 6號功能調用 INT 21H; 將鍵盤輸入字符 送到 AL 中。 MOV DL,M; DL 0FFH時, MOV AH,06H; 6號功能調用 INT 21H; 將 DL 中字符送到 屏幕上顯示。多字節(jié)無符號數(shù)加法 .MODEL SMALL .586 .DATADATAS DW 1111H,2222H,3333H,4444H,5555H DW 6666H,7777H,8888H,9999H,0AAAAHRESULT DD 1 DUP(?) .CODE.STARTUP MOV SI,OFFSET DATAs;設指針 MOV CX,10;累加次數(shù) MOV EAX,0;清累加器 CLC;
13、清進位LOP: MOV BX,SI;取加數(shù)到BX MOVZX EBX,BX ;將BX擴展成32位 ADC EAX,EBX;帶進位加 INC SI;改指針 INC SI LOOP LOP;循環(huán)加 MOV RESULT,EAX;存結果 .EXIT END開始SI DATAS的首址CX 累加次數(shù)EAX 0清進位BX SI所指加數(shù)將BX擴展為32位EAX EAX+EBX+CFSI 指向下一加數(shù)CX-1=0?NY存結果 結束軟件延時器.model small.data data db 20h,20h,20h,20h,20h,39h,0dh,$.code.startupmov cx,09h; 設循環(huán)次數(shù)l
14、op:mov ah,09h;顯示功能調用lea dx,dataint 21hcall near ptr delay;調用延時子程序dec data+5;修改顯示數(shù)字loop lop.exitDelay proc near uses cx ;延時子程序 mov bx,06ffh ;設第二時常數(shù)Delay1 :mov cx,0h loop $ ;自身循環(huán)CX次 dec bx ;第二時常數(shù)減1 jnz delay1 ;不為零循環(huán) retDelay endpend開始CX 循環(huán)次數(shù)字符串顯示功能調用延時子程序調用顯示數(shù)字修改CX-1=0?NY結束主程序流程:延時子程序流程:延時子程序定義BX 第二時常
15、數(shù)CX 第一時常數(shù)CX-1=0?NYBX-1BX=0?NY子程序返回子程序結束關鍵詞實驗四 排序程序 一實驗目的 1學習無符號數(shù)比較大小指令; 2掌握多重循環(huán)編程方法; 3掌握匯編語言編寫排序程序的思路和方法。二實驗內容 1單字節(jié)無符號數(shù)排序。 2去極值濾波。三實驗要求 1單字節(jié)無符號數(shù)排序:DATANUM單元開始存放雙字節(jié)無符號數(shù),表示要排序數(shù)據(jù) 的個數(shù),DATAS單元開始存放要排序的數(shù)據(jù),數(shù)據(jù)個數(shù)至少10個,程序運行之后, 這些數(shù)據(jù)按照由小到大的順序仍然存放于DATAS單元開始的位置。 2 去極值濾波:某控制系統(tǒng)為了抗干擾,采用去極值濾波法處理采集數(shù)據(jù),取連 續(xù)6個A/D采樣值12位雙字節(jié)
16、,低12位,要求去掉最大值和最小值,將 余下4個數(shù)求平均值,用該平均值代表當前時刻系統(tǒng)狀態(tài)的真值。試編一程序完 成這個濾波過程。單字節(jié)無符號數(shù)排序流程圖:開始BL 數(shù)據(jù)個數(shù)-1CX BL擴展數(shù)據(jù)指針 SI 置 0累加器 前數(shù) 前數(shù)與后數(shù)比較前數(shù)后數(shù)前、后數(shù)交換數(shù)據(jù)指針 SI 指向下一數(shù)數(shù)據(jù)指針 SI 指向下一數(shù)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 db 6h,8h,20h,9h,11h .code .startup mov bl,data
17、num 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去極值濾波開始調排序子程序對數(shù)據(jù)進行排序對排完序的數(shù)據(jù)掐頭去尾求和求均值保存結果結束 .model small .586 .datadatanum db 6datasdw 0123
18、h,0abch,0234h dw 0345h,0456h,0567h .code.startupcall px ;排序mov si,offset datas+2 ;掐頭去尾送指針mov cx,4 ;送累加次數(shù)clc ;清進位mov ax,0 ;取首數(shù)qh:adc ax,si ;累加inc siinc siloop qhshr ax,2 ;除4mov datas,ax ;存結果到DATAS首位 .exitpxproc near mov bl,datanum;取字長 dec bllop0: movzx cx,bl;送比較次數(shù) mov si,0lop:mov ax,datassi;送前數(shù)cmp ax
19、,datassi+2;與后數(shù)比較 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;修改比較次數(shù) jz finish jmp lop0finish: nop;結束 retpx endp end實驗五 分支程序一、實驗目的 掌握分支程序編程方法,復雜分支程序的查表法等。二、實驗內容 1、 學生課程成績分段統(tǒng)計。 2、 鍵盤及屏幕顯示功能調用。三、實驗要求 1、 學生課程成績分段統(tǒng)
20、計:用單字節(jié)表示每個學生的學號,學生的課程成績用兩位十進制數(shù)表示最低0分,最高99分,規(guī)定0F0H表示作弊,0F1H表示缺考,0FFH為一組學生成績的結束符。學生成績在內存的存放形式為“學號,成績,每個學生占兩個字節(jié),從內存SCORE為首址開始存放。要求學生人數(shù)不少于10個,試編程序,按0 9、10 19、20 29、80 89、90 99及作弊、缺考等12種情況把學生的課程成績進行分段統(tǒng)計,將統(tǒng)計結果存入以COUNT為首址的12個單元中。 2、試編一程序掃描鍵盤,當B鍵按下時,在屏幕上顯示09循環(huán)計數(shù);S鍵按下時停止計數(shù);再按B鍵繼續(xù)計數(shù)過程。E鍵按下時退出程序。 3、用DEBUG調試程序預
21、置數(shù)據(jù)和查看程序運行結果,以驗證程序正確性。 學生課程成績分段統(tǒng)計開始設置學號、成績指針取學號取成績是結束標志?取十分位,并將十分值擴展為16位送DI,對DI所指統(tǒng)計區(qū)段統(tǒng)計值加1是作弊?是缺考?修改指針CX-1=0?CX 統(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,12h,0f1h,0ffhcount db 12 dup(?) .code .startu
22、p mov cx,20;送統(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)計值加1down: inc si ;改指針 inc si loop statistic;循環(huán)sta
23、_end:nop;結束 .exitfake: mov di,10;作弊處理 inc countdi jmp downmiss: mov di,11;缺考處理 inc countdi jmp down end鍵盤及屏幕顯示功能調用開始顯示提示信息置處理指針為“停止調延時、鍵盤掃描程序有鍵動?轉處理指針處B 鍵?S 鍵?E 鍵?轉處理指針處結束置處理指針為“計數(shù)置處理指針為“停止NYYYYNNN處理指針為“計數(shù)處理指針為“停止計數(shù)顯示延時、鍵盤掃描程序子程序定義BX 第二時常數(shù)CX 第一時常數(shù)CX-1=0?NYBX-1BX=0?NY子程序返回監(jiān)測鍵動有鍵動?做鍵動標志bx=1NY.model sm
24、all.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 delay ;調延時、鍵掃程序 or bx,bx;判有無鍵動 jnz scan1;有鍵動
25、,轉鍵處理 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;修改顯示數(shù)字 mov al,3ah;比較超限 cmp al,count+5 ja down;假設不超限,調顯示 mov count+5,30h;超限
26、,設啟始值down: mov ah,09h;顯示功能調用 lea dx,count int 21h jmp scanstop: jmp scan nopDelay proc near uses cx;延時子程序 mov bx,380h;設第二時常數(shù)delay1: mov cx,0h loop $;自身循環(huán)CX次 mov dl,0ffh;監(jiān)測鍵動 mov ah,06h int 21h jnz key_ret ;假設有鍵動,延時終止,轉鍵處理 dec bx;第二時常數(shù)減1 jnz delay1;不為零循環(huán) jmp delay_retkey_ret: mov bx,1;做鍵動標志delay_ret:
27、 retDelay endp end硬件實驗局部本局部共進行3次實驗,實驗內容如下:1 實驗六 并行接口技術實驗 2 實驗七 8254定時/計數(shù)器實驗3 實驗九 A/D轉換實驗 下面根據(jù)實驗臺實物介紹實驗臺特別說明:為了方便實驗,實驗臺設計時已將實驗用相關器件的地址線、數(shù)據(jù)總線及除片選CS外的控制線連接到位,并在每一個實驗電路附近予留有假設干信號連線插孔。實驗時只要將相應插孔用單股導線對應相連即可組成完整的實驗電路。在給出的實驗電路圖中,線路所帶小圓圈即表示連線插孔。硬件實驗本卷須知:1.在實驗臺斷電條件下,才能用單股導線連接電路;2.線路連接完成、檢查確認沒有錯誤后,再開通實驗臺電源;3.用
28、單股導線連接電路時,要將單股導線線頭整直,并確認線頭沒有斷裂;4.實驗完成后,關斷實驗臺電源,再一根一根垂直拔掉連接導線,并把連接導線整好放入線盒。實驗六 并行接口技術實驗 一實驗目的 1.掌握8255A并行接口的根本使用方法。 2.理解數(shù)碼管掃描顯示原理,學習數(shù)碼管掃描顯示方法。二實驗內容 1.用8255A作為并行接口,從8255A的一個端口輸入開關量到CPU或內存,再將這一數(shù)據(jù)通過數(shù)據(jù)總線和8255A的另一個端口掃描輸出到數(shù)碼管。設8255A的A口為輸入方式,接邏輯電平開關;8255A的B口為輸出方式,通過MC1413驅動器接數(shù)碼管的位選端;數(shù)碼管的字劃端通過74HC573與數(shù)據(jù)總線相連;
29、邏輯電平開關SK1SK6按16編號。試編一程序,用一位數(shù)碼管指示出邏輯電平開關為“0狀態(tài)的開關編號,即當1號邏輯電平開關為“0時,所選數(shù)碼管顯示“1,2號邏輯電平開關為“0時,數(shù)碼管顯示“2,6號邏輯電平開關為“0時,數(shù)碼管顯示“6。所有邏輯開關的初始狀態(tài)為“1。 2.設8255A的B口為輸出方式,通過MC1413驅動器接數(shù)碼管的位選端;數(shù)碼管的字劃端通過74HC573與數(shù)據(jù)總線相連。試編一動態(tài)掃描程序,讓6個數(shù)碼管“同時點亮,顯示“1、2、3、4、5、6。三實驗電路及設計 1.實驗電路圖 2.實驗連線1邏輯電平開關輸出孔K1K6對應連接到8255A的PA0PA5;28255A的PB0PB5對
30、應連接到數(shù)碼管的位選端JM1JM6;3數(shù)據(jù)總線D0、D1、D2、D3、D4、D5、D6、D7對應連接到數(shù)碼 管的字劃端a、b、c、d、e、f、g、dp;48255A的片選端CS8255連到譯碼控制單元的300-303H;574HC573的使能端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
31、“E-79H “F-71H 有關問題的說明數(shù)碼管共陰:DPDP共陰地數(shù)字字型碼5不閉合,數(shù)碼管就點不亮多個數(shù)碼管掃描顯示:多個數(shù)碼管掃描顯示:限流電阻鎖存器JM3、JM2、JM1誰為,誰連接的數(shù)碼管就顯示鎖存器當前鎖存的值所謂掃描顯示是:對個數(shù)碼管:.給鎖存器送第個數(shù)碼管顯示內容,而后第個數(shù)碼管公共端接低,延時.給鎖存器送第個數(shù)碼管顯示內容,而后第個數(shù)碼管公共端接低,延時.給鎖存器送第個數(shù)碼管顯示內容,而后第個數(shù)碼管公共端接低,延時第步后,再從開始,周而復始。那么, JM3、JM2、JM1是互斥的了!連接數(shù)據(jù)總線D7D0 驅動器實驗 6.174HC573鎖存器A口 K6 K5 K4 K3 K2
32、 K1 開關ABCDEFGDP限流電阻DbusD7D08255MC1413驅動器B口COMDbusD7D0CS573CS8255A口開始初始化8255點亮一位數(shù)碼管讀鍵盤有鍵?讀開關量,并取反位掃描,確定開關號取對應開關號的字型碼輸出對應的數(shù)字結束; CS8255 - 300_303h; CS573 - 310h; k1.k6 - PA0.PA5; JM1.JM6-PB0.PB5; D0.D7-A.B.DP.model small .586 p8255 equ 0300h ;片選地址 p_ctl equ 90h ;8255控制字 s_l_a equ 310h ;573鎖存地址.datatabl
33、e 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 ;點亮數(shù)碼管SM1 mov al, 01h out dx,allop: mov ah,06h ;鍵入“e結束執(zhí)行 mov dl,0ffh int 21h cmp al,e je scan_end mov dx,p8255 ;讀開關 in al,dx not al movzx ax,al
34、bsf bx,ax ;從ax低位起掃描,將第一個 ; 為1的位號存BXxchg al,blmov bx,offset table ;讀字型碼xlat ;查表,BX+AL送ALmov dx,s_l_a;輸出對應的數(shù)字out dx,aljmp lop ;循環(huán)掃描scan_end:.exit end實驗 6.2限流電阻DbusD7D08255MC1413驅動器B口COMDbusD7D0CS573CS825574HC573鎖存器COMCOMCOMCOMCOMABCDEFGDP開始初始化查表取顯示數(shù)字字型碼顯示字型碼送鎖存器輸出取對應數(shù)碼管字位、并輸出+下一掃描位置掃描位數(shù)?調延時初始掃描位置(顯示數(shù)字
35、)初始掃描位置讀鍵盤有鍵動?結束延時程序流程見前; CS8255 - 300_303h; CS573 - 310h; JM1.JM6-PB0.PB5; D0.D7-A.B.DP; .model small p8255 equ 300h;片選地址 p_ctl equ 10010000b;8255控制字s_l_a equ 310h ;573鎖存地址.datatable 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_ct
36、lout dx,almov cl,1;設掃描位置lop:mov al,cl;取顯示數(shù)字mov bx,offset table;讀字型碼xlatmov dx,s_l_a;輸出字型碼out dx,al mov al,80hrol al,cl ;左循環(huán)移位mov dx,p8255+1out dx,al ;送B口控制的數(shù)碼管位inc clcmp cl,6jbe down;假設顯示位置大于等于6,;返回啟始位置1mov cl,1down:call delaymov ah,06;判有鍵動,跳出循環(huán)mov dl,0ffhint 21hjnz scan_endjmp lop;循環(huán)掃描scan_end:nop.
37、exit delayproc near uses cx;延時子程序 mov bx,02hdelay1:mov cx,0h loop $ dec bx jnz delay1 retdelayendp end實驗七 8254定時/計數(shù)器實驗 一實驗目的 1.掌握8254定時/計數(shù)器的根本使用方法。 2.了解8254定時/計數(shù)器利用級連擴大計數(shù)范圍的方法。 3.了解多I/O芯片協(xié)同工作的原理和方法。二實驗內容 1.將8254定時器0設置為方式2分頻,定時器1設置為方式3方波,定時器0的CLK0端接1M或2M時鐘,定時器0的輸出脈沖作為定時器1的時鐘輸入。將定時器1的輸出脈沖接在一個LED燈上或風鳴器
38、上。編程使8254工作,觀察燈的狀態(tài)或風鳴器聲響。 2.用8254做秒信號源,用8255A控制交通燈的紅綠變化,完成一交通燈控制系統(tǒng),使每10秒切換一次通行方向。三實驗電路及設計 1 .實驗電路圖 2.“實驗內容1實驗連線 18254的GATE0、GATE1接高電平; 28254 T0的CLK0接1M或2M時鐘孔; 38254 T1的CLK1接T0的OUT0; 48254的片選端CS8254連到譯碼控制單元的304-307H; 58254 T1的OUT1接LED燈或風鳴器的輸入端L1或BJ孔。 3.“實驗內容2實驗連線 以下連線假設8255A的A口為輸入方式、B口為輸出方式,8255A的PA1
39、 連接8254 T1的OUT1,8255A的B口控制交通燈的八只LED燈。 1連線同“實驗內容1的14; 28254 T1的OUT1接8255A的PA1孔; 38255A的PB7PB0對應連接到dp、g、f、e、d、c、b、a,它們對 應交通燈的Wr、 Er、 Wg、 Eg、 Nr、 Sr、 Ng、 Sg燈; 4交通燈八只LED發(fā)光管的公共控制端JTD孔接高電平; 58255A的片選端CS8255連到譯碼控制單元的300-303H。 4.8254和8255A的端口地址 8254的端口地址: 定時器0分頻系數(shù)存放器 304H, 定時器1分頻系數(shù)存放器 305H, 控制存放器 307H。 8255
40、A的端口地址: PA口:300H,PB 口:301H,PC口:302H,控制存放器:303H。 實驗 .1開始初始化T0初始化T裝T0低字節(jié)計數(shù)初值結束裝T0高字節(jié)計數(shù)初值裝T低字節(jié)計數(shù)初值裝T高字節(jié)計數(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 ; 對T0 兩次讀寫,先低后;高。 T0為方式2分頻 T1_CTL EQU 01110110B ;對T1 兩次讀寫,先
41、低;后高。 T1為方式3方波.DATA T0_DATA DB 0FFH,040H T1_DATA DB 0FFH,0.CODE.STARTUPMOV DX,CS8253+3 ;初始化T0MOV AL,T0_CTLOUT DX,ALMOV DX,CS8253 ;給T0低字節(jié)裝計數(shù)初值MOV AL,T0_DATAOUT DX,ALMOV AL,T0_DATA+1 ;給T0高字節(jié)裝計數(shù)初值OUT DX,ALMOV DX,CS8253+3 ;初始化T1MOV AL,T1_CTLOUT DX,ALMOV DX,CS8253+1MOV AL,T1_DATA ;給T1低字節(jié)裝計數(shù)初值OUT DX,ALMOV
42、 AL,T1_DATA+1 ;給T1高字節(jié)裝計數(shù)初值OUT DX,AL.EXITEND實驗 .開始8254 T0 初始化給8254 T0裝初值8254 T 初始化給8254 T裝初值8255初始化為A口入、B口出8255 B口輸出方向初值讀8255 PA1、測試8255 PA1PA1?讀8255 PA1、測試8255 PA1PA1?控制換向8255 B口輸出方向值檢查鍵盤有鍵盤動?結束;cs8254-304_307h;clk0 - 1M;out0 - clk1;out1 - 8255 的 PA1;gate0 - k1,令k1=1;gate1 - k2,令k2=1;JTD- k3,令k3=1;c
43、s8255 - 300_303h;8255(PB7 . PB0)- (dp.G.F.E.D.C.B.A) .MODEL SMALLT8254 EQU 304HT0_CTL EQU 00110100BT1_CTL EQU 01110110Bp8255 equ 300h;片選地址p_ctl equ 10010000B;8255控制字.DATAT0_DATA DB 0FFH,040HT1_DATA DB 0FFH,0dir_data DB 00111100B.CODE.STARTUPMOV DX,T8254+3;8254 T0 初始化MOV AL,T0_CTLOUT DX,ALMOV DX,T825
44、4 ;給8254 T0裝初值MOV AL,T0_DATAOUT DX,ALMOV AL,T0_DATA+1OUT DX,ALMOV DX,T8254+3 ;8254 T1初始化MOV AL,T1_CTLOUT DX,ALMOV DX,T8254+1 ;給8254 T1裝初值MOV AL,T1_DATAOUT DX,ALMOV AL,T1_DATA+1OUT DX,ALmov dx,p8255+3;8255為A口入,B口出 mov al,p_ctlout dx,almov dx,p8255+1;8255 B口輸出方向初值mov al,dir_dataout dx,albit_test0:;掃描上
45、升沿mov dx,p8255in al,dxtest al,2 ;測試8255 PA1,等待PA1=0jz bit_test1 ;PA1=0轉jmp bit_test0 ;PA1=1再測bit_test1:mov dx,p8255in al,dxtest al,2 ; 測試8255 PA1,等待PA1=1jnz dir_ctl ;有上升沿轉jmp bit_test1 ;上升沿沒到再測dir_ctl:mov al,dir_data ;方向控制not al ;換向mov dir_data,almov dx,p8255+1 ;8255 B口輸出方向值out dx,almov ah,0bh ;檢查鍵盤
46、int 21hor al,al ;有鍵盤輸入轉jnz dir_endjmp bit_test0dir_end:.EXITEND實驗九 A/D轉換實驗 一實驗目的 學習模/數(shù)轉換器使用方法,理解模/數(shù)轉換原理。二實驗內容 1給A/D轉換器輸入一可調節(jié)的電壓信號,假設該輸入信號為一水塔的水位高度信號,請結合應用8255A接口芯片,編程完成以下功能:當水位低于PL時開報警、并翻開水泵點亮一指示燈,水位在PLPH之間時關閉報警,水位高于PH時開報警、并關閉水泵指示燈熄滅。設PH=0B4H 約3.5V,PL=66H 約2.0V。 2用A/D轉換器對電壓信號V4連續(xù)采集4次,求出均值,放入指定單元;并把采集均值轉換為電壓,通過8255在數(shù)碼管上顯示。三實驗電路及設計 1.實驗電路圖.“實驗內容1實驗連線 以下連線假設8255A的A口為輸出方式,8255A的PA6控制一LED燈、8255A的PA7控制報警風鳴器。(1)J18、J19短路塊接到I/O端;(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智慧社區(qū)建設采購代理合同樣本
- 2025年專業(yè)音響設備租賃合同規(guī)范范文
- 2025年度建筑勞務合作與分包管理服務合同
- 班級文化中的團隊協(xié)作能力培養(yǎng)
- 書出版簽約合同范本
- 刑事會見合同范本
- 開茶樓申請書
- 家居裝飾裝卸搬運合同
- 社保局社保申請書
- 吸煙撤銷處分申請書
- 派出所校園安全創(chuàng)新
- 飛書項目管理
- 醫(yī)院醫(yī)共體2025年度工作計劃
- UL498標準中文版-2019插頭插座UL標準中文版
- 決戰(zhàn)朝鮮課件
- 《酶聯(lián)免疫分析技術》課件
- 2024年國家電網(wǎng)招聘之電工類考試題庫附答案(滿分必刷)
- 鮮棗貯藏技術規(guī)程
- 滅火應急疏散演練
- 講述京東課件教學課件
- 小學2024-2025?學年課程設置方案
評論
0/150
提交評論