




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一篇匯編語言程序設計實驗一匯編語言上機操作比較字符串1-1實驗二循環程序設計建立學生名次表1-5實驗三顯示器界面設計光標軌跡程序1-8實驗四鍵盤界面設計鍵盤輸入程序1-10實驗五算術程序設計判斷閏年程序1-22第二篇微機硬件實驗系統實驗一簡單I/O口擴展實驗2-1實驗二8255并行口實驗2-實驗三8253定時器/計數器接口實驗2-實驗四8250串口實驗2-實驗五存儲器擴展實驗2-實驗六8259中斷控制器實驗2-實驗七基于定時中斷的實時控制綜合實驗2-附錄1ASCII碼表3-1附錄2常用BIOS中斷調用3-2附錄3INT21HDOS系統功能調用3-5附錄4PCIBIOS中斷調用INT1AH3-
2、11附錄5漢字字符集表3-13附錄6DEBUG主要命令3-21第一篇匯編語言實驗一匯編語言上機操作比較字符串實驗項目名稱:比較字符串實驗項目性質:普通所屬課程名稱:微機原理與應用實驗計劃學時:2一、實驗目的1 、學習程序設計的基本方法和技能;2、熟練掌握匯編語言設計、編寫、調試和運行;二、實驗內容和要求2 、匯編語言上機操作方法編寫程序,比較兩個字符串STRING儕口STRING新含字符是否相同,若相同則在屏幕上顯示MATCH,否則顯示NOTMATCH。3 、系統操作練習三、實驗主要儀器設備和材料計算機四、實驗方法、步驟及結構測試1、建立ASMfc件1)在Windows系統環境下,調用寫字板編
3、輯程序,建立匯編語言ASM®文件。2)在Dos系統環境下,調用EDIT編輯器建立匯編語言ASM源文件。;ProgramTitleGoesHereComparestring;Datasegment;definedatasegmentString1dbMovethecursorbackward.String2dbMovethecursorbackward.Mess1dbMatch.,13,10,$Mess1dbMatch.,13,10,$Dataends*Programsegment;definecodesegmentMainprocfarAssumecs:program,ds:data
4、,es:dataStart:;startingexecutionaddressPushds;setupstackforreturnSubax,axPushaxMovax,data;datasegmentaddressMovds,axMOVes,ax;mainpartofprogramgoeshereLeasi,string1Leasi,string2CldMovcx,25RepzcmpsbJzMATCHLeadx,mess2JmpshortdispMatch:Leadx,mess1Disp:Movah,09;reture to DOS;end of main part of program;e
5、nd of code segmentInt21hRetMainendpProgramendsEndstart;endassembly寫完后保存文件名為:*.asm2、用匯編程序MASMt源文件“*asm”匯編產生目標文件*.obj。1)在Windows環境,點擊mas似:件,輸入*asm的文件名。2)在Dos環境,輸入命令:C:masm>masm*.asm/TheIBMPersonalComputerMACROAssemblerVersion1.00(C)CopyrightIBMCorp1981WarningSevereErrorError00如匯編過程出錯則在屏幕上顯示出錯信息。3、用
6、連接程序Link產生可執行文件”*.exe”.1)在Windows環境,點擊Link文件,輸入*obj文件名。2)在Dos環境,輸入命令:C:masm>link*obj/IBM5550MultistationLinker2.00(C)CopyrightIBMCorp1983Warning:NoSTACKsegmengtTherewas1arrordetected4、執行程序1)在Windows環境,點擊*.exe文件運行程序。2)在Dos環境,輸入命令:C:masm>*exe/此時在屏幕上可顯示程序的運行結果。屏幕顯示:Match(或NOTMATCH)5、用DEBU闔試程序輸入命令
7、:C:masm>debug*exe/幕上顯示提示符:-G/(運行命令)MATCH.PROGRAMTERMINATEDNORMALLY-U(反匯編命令),屏幕上顯示程序如示U/19F3:00001E19F3:00012BC019F3:00035019F3:0004B8EE1919F3:00078ED819F3:00098EC019F3:000B8D360000 LEA8D3E1900 LEA19F3:000F19F3:0013FC19F3:0014B9190019F3:0017F319F3:0018A619F3:0019740619F3:001B19F3:001F-U19F3:002119
8、F3:00258D163B00 LEAEB04JMP8D163200 LEAB409MOVCD21INT19F3:002719F3:0029CB19F3:002AFF7501PUSH DS SUB AX,AX PUSH AX MOV AX,19EE MOV DS,AX MOV ES,AXSI,0000 DI,1900CLDMOV CX,0019 REPZCMPSBJZ 0021DX,003B 0025DX,0032 AH,09 21RETF將斷點設置在程序的主要部分運行以前,運行輸入的程序為:-G0B/AX=19EEBX=0000CX=007ADX=0000SP=FFFCBP=0000SI=0
9、000DI=0000DS=19EEES=19EESS=19EECS=19F3IP=000BNVUPDIPLZRNAPENC19F3:000B8D360000LEASI,0000DS:0000=6F4D根據其中指示的DS寄存器內容查看數據段的情況如下:-D0/19EE:00004D6F766520746865-20637572736F7220Movethecursor19EE:00106261636B77617264-2E4d6f7665207468backward.Moveth19EE:00206520637572736F72-206261636b776172ecursorbackwar19E
10、E:0030642E4D617463682E-0d0a244E6F206D61d.Match$Noma19EE:0040746368210D0A2400-0000000000000000tch!.$19EE:00501E2BC050B8EE198E-D88EC08D3600008D.+P8N.X.619EE:00603E1900FCB91900F3-A674068D163B00EB>.19.S&T;.K19EE:0070048D163200B409CD-21CBFF7501405A222.4.M!K.u.Z''可用E命令修改數據區的字符串,操作如下:-E29/19
11、EE:002962.6661.6F63.726B.7777.6161.7272.6419EE:003064.2E2E.20再次用D命令查看修改結果:-D0/19EE:00004D6F766520746865-20637572736F7220Movethecursor19EE:00106261636B77617264-2E4d6f7665207468backward.Moveth19EE:00206520637572736F72-20666F7277617264ecursorforkward19EE:00302e204D617463682E-0d0a244E6F206D61.Match$Noma
12、19EE:0040746368210D0A2400-0000000000000000tch!.$19EE:00501E2BC050B8EE198E-D88EC08D3600008D.+P8N.X.619EE:00603E1900FCB91900F3-A674068D163B00EB>.19.S&T;.K19EE:0070048D163200B409CD-21CBFF7501405A222.4.M!K.u.Z''用G命令運行程序,結果為:-G/Nomatch!Programterminatednormally用Q命令退出程序:-Q/至此,程序調試完畢。(DEBU函令
13、詳見附錄2)五、實驗報告要求分析程序功能,匯編語言的集成環境,調試程序過程中遇到的問題。六、思考題1、匯編語言的集成環境有幾個主要環節?2、將程序中的指令JZMATCHY為JNZMATCH程序結果如何?為什么?3、將內存DATA俾元開始的0-15共16個數傳送到DATA2單元開始的數據區中。實驗項目名稱: 實驗項目性質:普通 所屬課程名稱:微機原理與應用 實驗計劃學時:實驗二建立學生名次表RANK建立學生名次表RANK普通微機原理與應用2一、實驗目的1、學習循環程序的設計方法;2、熟練掌握程序的調試方法;二、實驗內容和要求本程序采用兩重循環來實現,內層對應學生的名次計算,外層解決所有學生的名次
14、;以GRADE為首地址的10個字保存學生的成績,RANK為地址的10個字填入學生的名次。本程序對應的寄存器分配情況說明如下:AX:存放當前被測學生的成績;BX:存放當前被測學生的相對地址指針;CX:內循環計數值;DX:當前被測學生的名次計數值;SI:內循環測試時的地址指針;DI:外循環計數值;三、實驗主要儀器設備和材料計算機一臺四、實驗方法、步驟及結構測試1、實驗參考程序如下:;programtitlegoeshere-rank;Datasegment;definedatasegmentGratedw88,75,95,63,98,78,87,73,90,60Rankdw10dup(?)Data
15、ends;Programsegment;definecodesegmentMainprocfarAssumecs:program,ds:dataStart:Pushds;setupstackforretureSubax,axPushaxMovax,dataMovds,axMovdi,10Movbx,0Loop1:Movax,gradebxMovdx,0Movcx,10Leasi,gradeNext:Cmpax,siJgno_countIncdxNo_count:Addsi,2LoopnextMovrankbx,dxAddbx,2DecdiJneloop1RetMainendpProgramen
16、dsEndstart2、程序框圖開始3、程序執行C:>debug*exe/-U19F3:0000 19F3:000119F3:0003 19F3:0004 19F3:0007 19F3:0009 19F3:000C 19F3:000F19F3:0013 19F3:0016 19F3:0019 19F3:001D 19F3:001F1E 2BC0 50 B8EE19 8ED8BF0A00 BB0000PUSH SUBPUSH MOVMOV MOVMOV8B870000 MOVBA0000 MOVB90A00 MOV 8D360000 LEA3B047F01CMPJGDSAX,AXAXAX,
17、19F0DS,AXDI,000ABX,0000AX,BX+0000DX,0000CX,000A SI,0000 AX,SI 0022-U19F3:002142INCDX19F3:002283C602ADDSI,+0219F3:0025E2F6LOOP001D19F3:002789971400MOVBX+0014,DX19F3:002B83C302ADDBX,+0219F3:002E4FDECDI19F3:002F75DEJNZ000F19F3:0031CBRETF19F3:00325APOPDX19F3:003322C2ANDAL,DL19F3:003550PUSHAX-G09AX=19F0B
18、X=0000CX=0062DX=0000SP=FFFCBP=0000SI=0000DI=0000DS=19F0ES=19E0SS=19F0CS=19F3IP=000BNVUPDIPLZRNAPENC19F3:0009BF0A00MOVDI,000A-D0/19F0:000058004B005F003F00-62004E0057004900X.K._.?.b.N.V.I19EE:00105A003C0000000000-0000000000000000Z.<19EE:0020000000000000000000000000000000.+P8p.X?19EE:0030642E4D61746
19、3682E-0d0a244E6F206D61d.Match$Noma19EE:0040746368210D0A2400-0000000000000000tch!.$19EE:00501E2BC050B8EE198E-D88EC08D3600008D.+P8N.X.6-G31AX=003CBX=0014CX=0000DX=000ASP=FFFCBP=0000SI=0014DI=0000DS=19F0ES=19E0SS=19F0CS=19F3IP=0031NVUPDIPLZRNAPENC19F3:0031CBRETF-D019F0:000058004B005F003F00-62004E005700
20、4900X.K._?b.N.V.I19EE:00105A003c0004000700-0200090001000600Z.<19EE:00200500080003000A0000000000000000.+P8p.X?19EE:0030642E4D617463682E-0d0a244E6F206D61d.Match$Noma19EE:0040746368210D0A2400-0000000000000000tch!.$19EE:00501E2BC050B8EE198E-D88EC08D3600008D.+P8N.X.6五、實驗報告要求1、畫出程序框圖并分析雙重循環的結構;2、程序的結果為
21、16進制,可否改為10進制?六、思考題1、調試程序時,當用戶數據設置好后,程序應運行到什么位置才能查看結果?2、程序的數據段定義為字單元,可否用字節來定義?實驗三光標軌跡實驗項目名稱:判斷閏年程序實驗項目性質:普通所屬課程名稱:微機原理與應用實驗計劃學時:2一、實驗目的1、學習顯示器I/O程序設計方法;2、了解系統功能中斷的設計方法;3、了解鍵盤光標鍵是如何控制;二、實驗內容和要求1、用鍵盤上的TJ-一鍵控制光標的移動。2、按行號*列號的形式給方塊字符(ASCII碼為0BDH)在屏幕上定位,按T光標鍵使光標在屏幕上移動,光標的移動由方快字符組成的圖形而在屏幕上保留下軌跡。三、實驗主要儀器設備和
22、材料計算機四、實驗方法、步驟及結構測試1、源程序如下:TITLEDRAW-ProgramtodrawonscreenwithRead_cequ0Key_romequ16hUpequ48hDownequ50hRightequ4dhLiftequ4bhBlockequ0dbhEsc1equ1bhVideosegmentat0b800h;defineextrasegWd_bufflabelwordV_buffdb25*80*2dup(?)VideoendsPro_namsegment;definecodesegmentMainprocfarAssumecs:pro_nam,es:videoStart
23、:Pushds;setupstackforreturnSubax,axPushaxMovax,videoMoves,axMovcx,80*25;clearscreenbywritingzerostoitMovbx,0Clear:Moves:wd_buff+bx,0700hIncbxIncbxLoopclearMovch,12d;setscreenpointertocenterofscreenMovcl,40dGet_char:Movah,read_cIntkey_romCmpal,esc1JzexitMoval,ahCmpal,upJnznot_upDecchNot_upCmpal,downJ
24、nznot_dowdIncchNot_down:Cmpal,rightJnznot_rightIncclNot_right:Cmpal,leftJnzlite_itDecclLite_it:Moval,160dMulchMovbl,clRolbl,1Movbh,0Addbx,axMoval,blockMoves:v_buff+bx,alJmpget_charExit:RetMainendpPro_namendsEndstart2、程序說明:該程序首先定義了一個附加段VIDEO,并用AT偽操作將該段的段地址指定為00B800H,0B800H是彩色顯示器的顯示緩沖區的入口地址。程序分為三段,第一段
25、完成清除屏幕的工作,程序從偏移地址0開始,向顯存的所有單元(25*80)寫入數據0700H,其中07H為正常屬性代碼,00H為ASCII碼;第二段程序用BIOSINT16H功能從鍵盤讀取字符,然后根據按動光標控制鍵增減行號(CH)、列號(CL)。第三段是在當前行號和列號的位置寫入方塊字符(0DBH),行號列號使用轉換公式為:(BX)=行號*80*2+列號*2然后利用間接尋址方式直接將方塊符寫入存儲單元中;運行這個程序,當任意按動T7光標鍵,光標的移動就由方塊符組成的圖形保留下來了;五、實驗報告要求1、顯示器是如何定義窗口的大小的?2、在文本方式下,什么是屬性值?六、思考題1、光標軌跡運行到邊界
26、后,為什么光標會閃爍和改變顏色?若要光標不變,應如何修改程序?實驗四鍵盤程序設計實驗實驗項目名稱:鍵盤處理演示程序實驗項目性質:普通所屬課程名稱:微機原理與應用實驗計劃學時:2一、實驗目的1、 、學習鍵盤I/O口程序設計方法;2、了解系統功能中斷的設計方法;二、實驗內容和要求1、在PC機中,對鍵盤的管理是通過中斷機構和8255可編程外圍接口芯片來實現的。2、 8255芯片中有兩個端口PA(60H)、PB(61H),在這個硬件接口的基礎上,系統BIOS中已配備了鍵盤的服務功能,因此用戶可調用鍵盤的DOSBIOS功能編程。3、 完成對鍵盤的中斷檢測,把鍵盤的83個鍵的掃描碼轉換成相應的ASCII字
27、符碼。三、實驗主要儀器設備和材料計算機四、實驗方法、步驟及結構測試1、源程序如下:TITLEkbdio.asm-KeyboardI/OsupportprogramStacksegmentparastackstackdb256dup(0)StackendsDatasegmentparapublicdataBufferdb16hdup(0)Bufpt1dw0Bufpt2dw0Kbflagdb0Promptdb-kbd_ioprogrambegin-,0dh,0ah,$Scantabdb0,0,1234567890-=,8,0dbqwertyuiop,0dh,0dbasdfghjkl;,0,0,0,
28、0dbzxcvbnm,./,0,0,0db,0,0,0,0,0,0,0,0,0,0,0,0,0db789-456+1230.EvenOldcs9dw?Oldip9dw?DataendsCodesegmentparapubliccodeStartprocfarAssumecs:code,ds:dataPushds;saveforreturnMovax,0PushaxMovax,data;setDStodatasegMovds,axCliMoval,09;saveinterruptvectorofKBDBIOSroutingMovah,35hInt21hMovoldcs9,esMovoldip9,
29、bxPushds;setinterruptvectorofkbintMovdx,offsetkbintMovax,segkbintMovds,axMoval,09Movah,25hInt21hPopdsInal,21h;setkbdinterruptmaskbitAndal,0fdhOut21h,alMovdx,offsetpromptMovah,9Int21hStiForever:Callkbget;waitenterakeyTestkbflag,80hJnzendintPushaxCalldispchar;displaythecharacterPopaxCmpal,0dhJnzforeve
30、rMoval,0ahCalldispchar;displayCR/LFJmpforever;loopforcontinueEndint:Movdx,oldip0;interruptvectorMovax,oldcs9Movds,axMoval,09hMovah,25hInt21hRetStartendpKbgetprocnearPushbxCli;interruptbackoffMovbx,bufpy1;getpointertoheadCmpbx,bufpt2;testemptyofbufferJnzkbget2;no,fetchacharacterCmpkbflag,0Jnzkbget3St
31、i;allowaninterrupttooccurPopbxJmpkbget;loopuntilsomethinginbufKbget2:Moval,buffer+bx;getasciicodeIncbx;incabufferpoiterCmpJcMovbx,16kbget3bx,0;atendofbuffer;no,continue;resettobufbeginningKbget3:Movbufpt1,bx;storevalueinvariablePopbxRetKbgetendpKbintprocfar;keyboardinterruptroutinePushbxPushaxInal,6
32、0h;readinthecharacterPushax;saveitInal,61h;getthecontrolporOral,80;setacknowledgebitforkbdOut61h,alAndal,7fh;resetacknowledgebitOut61h,alPopax;recoverscancodeTestal,80h;ispressorreleasecode?Jnzkbint2;isreleasecode,returnMovbx,offsetscantabXlatscantab;asciicodetoALCmpal,0Jnzkbint4Movkbflag,80hJmpkbin
33、t2Kbint4:Movbx,bufpt2;buffertailpointerMovbuffer+bx,al;asciifillinbufferIncbxCmpbx,16;isendofbuffer?Jckbint3;noMovbx,0;resettobufbeginningKbint3:Cmpbx,bufpt1;isbufferfull?Jzkbint2;yes,losecharacterMovbufpt2,bx;savebuftailpointerKbint2:CliMoval,20hOut20h,alPopaxPopbxStiIretKbintendpDispcharprocnearPu
34、shbxMovbx,0Movah,0ehInt10hPopbxRetDispcharendpCodeendsEndstart;endofinterrupt;interruptreturn;(AL)=displayingchar;callvideoroutine;endofcodesegment2、程序說明主程序START鍵盤中斷向量的保存、設置與恢復;設置中斷屏蔽位并開中斷;從緩沖區讀取鍵入字符并顯示在屏幕上。子程序KBGET檢測并等待鍵盤中斷,如有鍵盤輸入,則從緩沖區取出字符并進行隊列管理。鍵盤中斷處理程序KBINT:從輸入口PA(60H)讀入按鍵的掃描碼并返回應答信號;對通碼進行轉換,將轉
35、換后的ASCII碼存入隊列尾。顯示子程序DISPCHAR調用BIOS顯示功能(INT10H)顯示鍵入的字符。五、實驗報告要求1 、分析程序結構;2 、09號中斷的任務是什么?3、鍵盤隊列有幾種工作狀態?六、思考題1、該程序的鍵盤屬什么編碼方式?2、鍵盤緩沖區占用多少單元?實驗五運算類程序設計(一)實驗項目名稱:判斷閏年程序實驗項目性質:普通所屬課程名稱:微機原理與應用實驗計劃學時:2一、實驗目的1 、了解加、減、乘、除算術運算的編程方法;2、了解變量傳送的方式,如何訪問存貯單元;二、實驗內容和要求2 、是匯編語言程序設計的重要組成部分,在實際應用中,不論是簡單的還是復雜的程序,都或多或少要用到
36、一些算術運算,這些算術運算大多數是加、減、乘、除和乘方等;所以,用匯編語言編寫算術運算程序。3 、用匯編語言編寫判斷某年是否為閏年,年份從鍵盤輸入,通過運行計算后,輸出相應信息。三、實驗主要儀器和材料計算機四、實驗方法、步驟及結構測試1、利用DOS21H中斷類型的10號鍵盤功能調用,將從鍵盤接收的年份數值型字符串按字節存入緩沖區;將字符串中的每個字符轉換為對應的十進制數值(利用09這十個數的ASCII碼值比其本身大30H的關系),通過判斷某年是否為潤年的表達式,判斷輸出是否為潤年的信息。4 、程序框圖如圖6-1:圖6-1判斷是否為閏年的程序框圖3、源程序如圖6-2:DatasegmentInf
37、ondb0dh,0ah,'Pleaseinputayear:$Ydb0dh,oah,'thisisaleapyear!$Ndb0dh,0ah,'thisisnotaleapyear!$wdw0bufdb8db?db8dup(?)dataendsstacksegmentstackdb200dup(0)stackendscodesegmentassumeds:data,ss:stack,cs:codestart:movax,datamovds,axleadx,infonmovah,9int21hleadx,bufmovah,10int21hmovcl,buf+1leadi,
38、buf+2calldatacatecallifyearsjcalleadx,nmovah,9int21hjmpexital:leadx,ymovah,9int21hexit:movah,4chint21hdatacateprocnearpushcxdeccx; 在屏幕上顯示提示信息; 從鍵盤輸入年份字符串; 將數值轉換為 ASCII 碼字符子程序leasi,buf+2tt1:incsilooptt1popcxmovdh,30hmovbl,10movax,111:pushaxSubbyteptrsi,dhMulbyteptrsiAddw,axPopaxMulblDecsiLoopRet11Dat
39、acateendpIfyearsprocnearPushbxPushcxPushdxMovax,wMovcx,axMovdx,0Movbx,4DivbxCmpdx,0Jnzlab1Movax,cxMovbx,100DivbxCmpdx,0Jnzlab2Movax,cxMovbx,400DivbxCmpdx,0Jzlab2Lab1:clcJmplab3Lab2:stccxbxLab3:popdxPopPopRetIfyearsendpCodeendsEndstart圖62程序流程圖4、程序運行結果如圖63Pleaseinoutayear:1996Thisisaleapyear!C:MASM>
40、;ifleapPleaseinoutayear:2003Thisisnotaleapyear!C:MASM>圖63程序運行結果五、實驗報告要求1、分析程序是如何實現判斷是否為潤年?2、小結匯編語言實現算術運算的方法。六、思考題1、寫出實驗中的判斷閏年的表達公式。運算類程序設計(二)第二篇硬件部分實驗一簡單I/O口擴展實驗項目名稱:簡單I/O口擴展實驗項目性質:普通所屬課程名稱:微機原理與應用實驗計劃學時:21、 實驗目的1、熟悉74LS273,74LS244的應用接口方法。2、掌握用鎖存器、三態門擴展簡單并行輸入、輸出口的方法。2、 實驗內容和要求1、用邏輯電平開關作為74LS244的輸
41、入,用發光二極管作為74LS273的輸出編寫程序,使得邏輯電平開關的輸入狀態從發光二極管顯示出來。2、實驗原理圖:實驗主要儀器設備和材料1、EL實驗箱2、計算機3、導線若干4、 實驗方法、步驟及結果測試1、將74LS244的輸入SI0SI7分別與邏輯電平開關電路的K1K8相連,從I/O地址片選信號CS0與U10的片選信號相連。2、將74LS273的輸出SO0SO7分別與發光二極管電路的L1L8相連,從I/O地址片選信號CS1與U8片選信號相連。3、編程并運行。4、撥動開關,其變化反應到發光二極管上,當開關的狀態對應發光二極管的點亮或熄滅。5、程序框圖6、參考程序;Assumecs:codeCo
42、desegmentpublicOrg100hStart:movdx,04a0hInal,dxmovdx,04b0houtdx,aljmpstartcodeendsednstart5、 實驗報告要求1、畫出實驗原理圖2、掌握輸入輸出接口的編程原理和方法。6、 思考題1、本程序是采用什么控制方法2、若采用查詢方式編程,應如何修改程序實驗二8255并行口實驗實驗項目名稱:8255并行口實驗實驗項目性質:普通所屬課程名稱:微機原理與應用實驗計劃學時:21、 實驗目的1 、掌握8255的編程原理;2 、掌握8255并行接口方法;2、 實驗內容和要求1、8255的A口作輸入口,與邏輯電平開關K1K8相連;
43、8255的B口作為輸出口,與發光二極管L1L8相連;編寫程序,使得邏輯電平開關的變化在發光二極管上顯示出來。2、實驗原理圖三、實驗主要儀器設備和材料1、EL實驗箱2、計算機3、導線若干四、實驗方法、步驟及結果測試1、8255的PA0PA7分別與邏輯電平開關的K1K8相連;PB0PB7分別與發光二極管電路的L1L8相連;從CS0與8255的片選端相連。2、編程并運行。3、撥動開關,觀察發光二極管的變化,當開關某位合上時,對應的發光二極管點亮,斷開時熄滅。4、程序框圖5、參考程序Assumecs:codeCodesegmentpublicOrg100hStart:movdx,04a6hMovax,
44、90hOutdx,axStart1:movdx,04a0hInax,dxMovdx,04a2hOutdx,axJmpstart1CodeendsEndstart五、實驗報告要求1 、比較用簡單I/O口與8255接口的方法有什么區別?2 、分析8255采用選通工作方式是如何實現的?六、思考題1、本實驗是實現什么數據傳送方式?若改用查詢方式傳送數據,應該如何修改程序?實驗三8253定時器/計數器實驗項目名稱:8253定時器/計數器實驗項目性質:普通所屬課程名稱:微機原理與應用實驗計劃學時:2一、實驗目的1 、掌握8253定時器/計數器的編程原理;2 、掌握8253計數器的接口方法;二、實驗內容和要
45、求1、將8253計數器的0,1,2通道設置為模式3(方波方式),用示波器觀察其輸出波形。2、實驗原理圖如下:3 、8253的時鐘端口CLK0、CLK1為6/16M,CLK2的時鐘可以自行定義。三、實驗主要儀器設備和材料1、EL實驗箱2、計算機3、導線若干4、示波器四、實驗方法、步驟及結果測試1、將CS0與8253的CS8253相連;2、將8253的OUT0、OUT1接示波器的信號端;3、示波器的地接實驗箱的GND;4、實驗源程序如下:Assumecs:codeCodesegmentpublicOgr100hStart:movdx,04a6h;8253控制端口地址Movax,36h;設置計數器0
46、工作方式3Outdx,axMovdx,04a0h;計數器0地址Movax,24h;設初值為0F424HOutdx,axMovax,0f4hOutdx,axmovdx,04a6h;8253控制端口地址Movax,76h;設置計數器1工作方式3Outdx,axMovdx,04a2hMovax,0ahOutdx,axMovax,0hOutdx,ax1地址0AHmovMovOutdx,04a6hax,0b6hdx,ax;8253控制端口地址;設置計數器2工作方式3Movdx,04a4h;計數器2地址Movax,04h;設初值為04HOutdx,axMovax,0hOutdx,axCodeendsEnd
47、start5、程序框圖如下:五、實驗報告要求1、掌握8253的內部結構,主要功能;2、分析8253計數器的計數方式?3、分析8253計數器的定時時間常數的計算方法?六、思考題1、若改用工作方式2(分頻方式),計數初值為10,計數器0的輸出波形怎樣?2、要求定時時間為2分鐘,定時系數是多少?(假設頻率為6/16M)實驗四8250串口實驗實驗項目名稱:8250串口實驗實驗項目性質:普通所屬課程名稱:微機原理與應用實驗計劃學時:21、 實驗目的1 、熟悉串行通信的原理和8250的工作原理;2、了解RS-232串行接口標準及連接方法;3、掌握8250芯片的編程方法;2、 實驗內容和要求1、在PC機之間
48、實現串行通信,上位機每下傳一個字符,下位機返回一個字符。2、上下位機波特率選用9600BIT。3、上下位機均用查詢方式;4 、8250的端口地址為0480H起始的偶地址單元,時鐘頻率為1.8432MHz;5 、上位機的端口用COM1(或COM2的端口地址2F8H)端口地址3F8H;6、實驗原理圖三、實驗主要儀器設備和材料1、EL實驗箱2、計算機四、實驗方法、步驟及結果測試1、用通信電纜連接EL實驗箱和PC機;2、分別編寫上下位機的程序;3 、在PC機上運行T6UP.EXE程序,選擇串行口(COM1/COM2);4 、在PC機上輸入字符,看是否有返回,退出按回車鍵;5、下位機源程序:Codese
49、gmentAssumecs:codeOrg100hStart:movbx,0480hMovdx,bxAdddx,6Movax,80hOutdx,axMovdx,bxMovax,0ch;設置波特率9600BITOutdx,ax;Adddx,2Movax,0hOutdx,ax;設置中斷方式Adddx,4Movax,07Outdx,ax;設置線路控制寄存器Movdx,bxCrd:CallrecvCallsendJmpcrdRecv:Adddx,0ahRecv3:Inax,dxTestax,01hJnzrecv1Jmprecv3Recv1:Movdx,bxInax,dxRetSend:PushaxAdddx,0ahSend1:Inax,dxTestax,20hJnzrecv2Jmpsend1接收器數據是否就緒 , 就緒則轉移;發送器是否空,空則轉移Recv2:PopaxMovdx,bxOutdx,ax;發送數據RetCodeendsEndstart6、上位機源程序DatasegmentTt1dw0Ttt1dw0Comdw0Messag1dbpleasekeyincom(1,2):,$Messag2dbsend:,$Rcvstrdb255dup(?)Messag3dbreceive:,$DataendsCodesegmentAssumecs:code,d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產委托代持合同樣本
- 銷售合同模板:分期付款協議指南
- 酒店裝修項目工程合同
- 建筑工程合同爭議處理:案例分析及展望
- 包裝設計師試題及答案
- 電導率儀操作規程
- 植物學試題+參考答案
- 裝飾裝修工程分包合同模板
- 相鄰土地購置合同
- 環保清潔工程合同書樣本
- JJF1033-2023計量標準考核規范
- 《地鐵突發大客流應急管理》論文11000字
- 第五章-項目時間管理課件
- 導游人員管理法律制度課件
- 木箱檢驗作業指導書
- 初中級檔案職稱《檔案事業概論》檔案事業題庫一
- 美國地圖高清中文版
- 《中國特色社會主義理論與實踐研究》課程教學大綱
- 金屬監督監理實施細則
- DB13T 1606-2012 糧食作物種子 谷子雜交種
- DB33-T1247-2021《城市河道景觀設計標準》
評論
0/150
提交評論