版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本實(shí)驗(yàn)的歸西安唐都科教儀器開發(fā),保留一切權(quán)西安唐都科教儀器開發(fā)公司,2009(C),AllRight80X86微機(jī)原理及 術(shù)實(shí)驗(yàn)?嚴(yán) 第1章實(shí)模式下的80X86機(jī)器組 第2章16位微機(jī)原理及其程序設(shè)計(jì)實(shí) 第3章32位指令及其程序設(shè)計(jì)實(shí) 第4章80X86微機(jī)接術(shù)及其應(yīng)用實(shí) I第5章保護(hù)模式下的80X86機(jī)器組 第6章保護(hù)模式微機(jī)原理及其程序設(shè)計(jì)實(shí) 6.2級(jí)變換實(shí) 第7章80X86虛擬器的組織及其管 第8章保護(hù)模式下的器擴(kuò)展及其應(yīng)用實(shí) 附錄ATddebug集成操作軟件使用說(shuō) 附錄BTdpit集成操作軟件使用說(shuō) 附錄C系統(tǒng)實(shí)驗(yàn)程序...............................................................................................................180X86微處理器發(fā)展是從8086/8088開始,經(jīng) 、、、86直到現(xiàn)在的Pentium及Core2等微處理器。無(wú)論哪種微處理器,從80386開始都統(tǒng)稱為80X86系列微機(jī)。80X86支持實(shí)模式和保護(hù)模式兩種運(yùn)行模式。在實(shí)模式下,80X86相當(dāng)于一個(gè)可以進(jìn)行32位處理的快速8086/8088,所有為8086/8088設(shè)計(jì)的程序幾乎都可適用于80X86處理6寄存80X8632只有系統(tǒng)程序才會(huì)使用各種寄存器。這些寄存器是80X86系統(tǒng)微處理器先前處理器(8086/、 部16位寄存器。8086/8088沒(méi)有系統(tǒng)地址寄存器和控制寄存器等。ESP、EBP、ESIEDI161-1-1SP、BP、SI和DI,它們也就是X86系列微處理器先前的8個(gè)16位通用寄存器。這些32位通用寄存器不僅可以傳送數(shù)據(jù)、暫存數(shù)據(jù)、保存數(shù)據(jù),而且還可以在基址和變 在以前的微處理器中,只有BX、BP、SI和DI可以在址和變址尋址時(shí)存放地址,而CSSSDSES處理器中對(duì)應(yīng)段寄存器的功能相同。FS和GS是80X86新增加的段寄存器。因此,80X86上運(yùn)行的程序可同時(shí)多達(dá)6個(gè)段。 AX,SEGBUFFER 標(biāo)志寄存器80X8632EIP。EIP161664K,所以EIP160,仍然相當(dāng)于只有低器相比,增加了4個(gè)控制標(biāo)志,分別為:IO標(biāo)志IOPL、嵌套任務(wù)標(biāo)志NT、重啟動(dòng)標(biāo)志RF、虛擬8086方式標(biāo)志VM。它們分別是:IO標(biāo)志IOPL(I/OPrivilegeLevel位12、13,按級(jí)從高到低取值0,1,2和3。只有當(dāng)前級(jí)CPL在數(shù)值上小于或等于IOPL,I/O指令才可以執(zhí)行TaskFlag:位86VM(Virtual8086Mode17VM=13286以上4個(gè)控制標(biāo)志位在實(shí)模式下不起作用,從80386開始的32位處理器都有。還有4標(biāo)志位CD,后三個(gè)只對(duì)Pentium有效。32位標(biāo)志寄存器的內(nèi)容如圖1-1-2所示。 21207 543 1000000000VIPVIF00011-1-2326器尋80X86支持以前微處理器的各種尋址方式。在立即尋址方式和寄存器尋址方式中,操作數(shù)可達(dá)32位寬。在器尋址方式中,不僅操作數(shù)可達(dá)32位,而且尋址范圍和方式更加靈活。80X86繼續(xù)采用分段的方法管理器。器的邏輯地址由段址和段內(nèi)偏移兩部分表示,單元的地址由段地址加上段內(nèi)偏移所得。段寄存器指示段址,各種尋址方式?jīng)Q定在實(shí)模式下,段址是16的倍數(shù),段的最大長(zhǎng)度是64K。段寄存器內(nèi)所含的是段址對(duì)應(yīng)的段值,單元的物理地址是段寄存器內(nèi)的段值乘16加上段內(nèi)偏移。所以,80X86在實(shí)模式下與8086/8088相似。在以BP或EBP或ESP作為址寄存器堆棧時(shí),默認(rèn)的段寄存器是SS。某些字符串ES段寄存器作為目標(biāo)操作數(shù)的段寄存器。此外CS、SS、ES、FS和GS80X86不僅支持各種16位偏移的器尋址方式,而且還支持32位偏移的器尋址1、2、4832832位的常數(shù)偏移量。如果含在所有尋址方式中,對(duì)數(shù)據(jù)的所默認(rèn)的段寄存器取決于所選擇的基址寄存器。如存器的選擇,包括沒(méi)有基址寄存器的情況,DS仍然是默認(rèn)的段寄存器。據(jù)結(jié)構(gòu)80X86支持的“址+變址+位移量”尋址方式能進(jìn)一步滿足各高級(jí)語(yǔ)言支持的數(shù)據(jù)結(jié)6指令80X86的指令集包含了8086/、 和80286指令集??煞譃槿缦拢簲?shù)據(jù)傳送80X86是328位、16位或者是32位。對(duì)于80X86而位的器操作數(shù)有效地址的擴(kuò)展。所以,80X86支持的32位操作數(shù)的指令往往就是對(duì)令數(shù)據(jù)傳送指令實(shí)現(xiàn)在寄存器、內(nèi)存單元或I/O80X86的數(shù)據(jù)80X86的通用傳送指令組含有如下十條指令:數(shù)值傳送指令MOV、符號(hào)擴(kuò)展指令MOVSXMOVZXXCHGPUSH、PUSHA、PUSHAD、退棧指令POP、POPA、POPAD。 SRC可以是8位或16位寄存器,也可以是8位或16位器操作數(shù)。如果源操作數(shù)和目的操作數(shù)都是字,那么就相當(dāng)于MOV指令。即數(shù)。從80X86開始,操作數(shù)長(zhǎng)度還可以達(dá)32位,那么堆棧指針減4。BX、SP、BP、SI、DISP16SPPUSHAPOPAPUSHAPUSHAESP16EDX、EBX、ESP、EBP、ESI、EDI,然后堆棧指針寄存器ESP的值減32,所以ESP進(jìn)棧的內(nèi)容是PUSHAD執(zhí)行之前的值。POPAD指令從堆棧彈出內(nèi)容以PUSHAD相反的順序送到這些通用寄存器,從而恢復(fù)裝入有效地址指令的格式和功能同8086/8088。源操作數(shù)仍然必須是器操作數(shù),目 LFSREG,OPRDLGSREG,OPRDLSS5OPRD46個(gè)相繼字節(jié)單元的內(nèi)容送16OPRD32位指針。如果目的操作數(shù)是32位通用寄存器,那么源操作數(shù)OPRD含48位指針。如: 和POPFD。32PUSHFPOPF BX令SBB、DEC、CMPNEG80X8632 EAX,DWORD 4MUL、DIV、IMULIDIVMULDIV8086/8088相同。在源操作數(shù)為雙字的情況下,乘法指令MUL默認(rèn)的另一個(gè)操作數(shù)是EAX,其功能是把OF01DIVEDX:EAX,其功能是把指令中給出的操作數(shù)作為除數(shù),所得的商送EAX,余數(shù)送EDX。當(dāng)操作數(shù)為32位時(shí),它與無(wú)符號(hào)數(shù)乘法指令相同。 SRC1SRC2DST和CBW和CWDCWDE和CDQ80X86是指令CBW的擴(kuò)展。移位指令328086/80883SAL/SHL、SARSHRSAL移指令SHL是相同的。達(dá)增強(qiáng)了。實(shí)際移位位數(shù)的變化范圍是0至31。80X86ROLROR中規(guī)定的移位位數(shù)的低5位,再根據(jù)被移位的操作數(shù)的長(zhǎng)度取9、17或32位的模。 OPRD2OPRD116存器或者是32位通用寄存器;m是移位位數(shù),或者是8位立即數(shù),或者是CL。SHLDOPRD1mOPRD2mOPRD2CF中。如果只移1位,當(dāng)進(jìn)位標(biāo)志和最后的符號(hào)位不一致是,置溢出標(biāo)志OF,否則清OF。SHRDOPRD1mOPRD2的m位填補(bǔ),但操作數(shù)OPRD2的內(nèi)容不變,最后移出的位保留在進(jìn)位標(biāo)志CF中。當(dāng)移位位數(shù)是1時(shí),OF標(biāo)志受影響,否則清OF。令無(wú)條件轉(zhuǎn)移指令JMP在分為段內(nèi)直接、段內(nèi)間接、段間直接和段間間接四類的同時(shí),還具有擴(kuò)展形式,擴(kuò)展的無(wú)條件轉(zhuǎn)移指令的轉(zhuǎn)移目的地址偏移采用32允許把32位的段內(nèi)偏移送到EIP,但在實(shí)模式下段最大64K,段內(nèi)偏移過(guò)64K,所以不需要使用32位的段內(nèi)偏移。80X86(JCXZJECXZ)允許用多字節(jié)來(lái)表示轉(zhuǎn)移目的地80X86CX的值為時(shí),轉(zhuǎn)移的指令JCXZ可以被擴(kuò)展到JECXZ,如:JECXZOK3LOOP、LOOPZ/LOOPELOOPNZ/LOOPNE。這三條循CALL為0的雙字,這樣會(huì)壓入堆棧2個(gè)雙字。過(guò)程返回指令RET在分為段內(nèi)返回和段間返回的同時(shí),還分別具有擴(kuò)展形式。擴(kuò)展的過(guò)堆棧彈出包含48位返回地址全指針的2個(gè)雙字。RET8086/8088CALLRET 操作后相應(yīng)指針加4,在DF=1時(shí),每次串操作后相應(yīng)指針減4。實(shí)模式下通常采用16位指針,所以一般仍以CX作為計(jì)數(shù)器。 DXES:DI(EDI)所指 DFSI(ESI。在匯編語(yǔ)言中,三條串輸入指令的格 置指令從80X86開始新增加了一組條件字節(jié)設(shè)置指令。這些指令根據(jù)一些標(biāo)志位設(shè)置某個(gè)字的內(nèi)容為1或0。 從80X86開始增加了位操作指令。這些位操作指令可以直接對(duì)一個(gè)二進(jìn)制位進(jìn)試、1.2BSFBSR 其中操作數(shù)OPRD1和OPRD2可以是16位或32位通用寄存器和16位或32位器單元;但操作數(shù)OPRD1和OPRD2的位數(shù)長(zhǎng)度必須相等。的位的位號(hào)送到操作數(shù)OPRD1。的位的位號(hào)送到操作數(shù)OPRD1。否則零標(biāo)志ZF被清0。 其中操作數(shù)OPRD1可以是16位或32位通用寄存器和16位或32位單元,用于指指CFCLC、STC和CMC設(shè)置方向標(biāo)志DF的指令CLD和STD保持原先相同。(2)前綴216本章主要介紹匯編語(yǔ)言程序設(shè)計(jì),通過(guò)實(shí)驗(yàn)來(lái)學(xué)習(xí)80X86的指令系統(tǒng)、尋址方式以及程序的設(shè)計(jì)方法,同時(shí)掌握集成操作軟件Tdpit的使用。2.1顯示程序?qū)嶒?yàn)2.1.1實(shí)驗(yàn)?zāi)?.掌握部分DOS2.1.2實(shí)驗(yàn)設(shè)PC微機(jī)一臺(tái)、TD-PIT+或TD-PIT++實(shí)驗(yàn)系統(tǒng)一套2.1.3實(shí)驗(yàn)內(nèi)容及說(shuō)明DOS功能調(diào)用完成一些提示信息的顯示。通過(guò)本實(shí)驗(yàn),初步掌握實(shí)驗(yàn)系統(tǒng)配套操作軟件的使DOS取字節(jié)的高4取字節(jié)的高4STACK1SEGMENT數(shù)據(jù)是否數(shù)據(jù)是否yn是A-F,加轉(zhuǎn)換成ASCIISTACK1DATASEGMENT 'Pressanykeytoexit!',0AH,0DH,0AH,0DH,'$' 'Showaashex:',0AH,0DH,'$' DATAENDSCODESEGMENT取字節(jié)的取字節(jié)的低4送屏幕顯 數(shù)據(jù)數(shù)據(jù)是否yn送屏幕轉(zhuǎn)換成ASCII是A-F,加DX,OFFSET轉(zhuǎn)換成ASCII是A-F,加DX,OFFSETDX,OFFSETSI,OFFSET;是否是A的INT16H MOVAX,4C00H INT21HCODEEND2.1.4實(shí)驗(yàn)步2-1-2設(shè)置語(yǔ)言環(huán)默認(rèn)名為Td-pit1。如圖2-1-3所示。2-1-3新建空白文2-1-4程序編輯界2-1-5編譯連接輸出信2.2數(shù)據(jù)傳送實(shí)驗(yàn)2.2.1實(shí)驗(yàn)?zāi)?.2.2實(shí)驗(yàn)設(shè)PC微機(jī)一臺(tái)、TD-PIT+或TD-PIT++實(shí)驗(yàn)系統(tǒng)一套2.2.3實(shí)驗(yàn)內(nèi)實(shí)驗(yàn)程序(例程文件名 DB"O,WORLD!$" EQU$-MSR EXDASEGMENT DBLENDUP(?)EXDAMYSTACKSEGMENTSTACK DW20DUP(?)MYSTACKCODE ASSUMECS:CODE,DS:DDATA,ES:EXDA MOVAX,DDATAMOVDS,AX MOVAX,EXDAMOV MOVSI,OFFSET ;設(shè)置MOVDI,OFFSETMSD ;設(shè)置DIMOVCX,LEN MOVAL,[SI] MOVES:[DI],ALINCINCDECCXJNZNEXTPUSHDX,OFFSETMOVMOVCX,LEN MOVAL,MSR[BX]MOVES:MSD[BX],ALINCBXLOOP2.2.4實(shí)驗(yàn)步2-2-1進(jìn)入調(diào)試環(huán)按F8鍵單步運(yùn)行程序,執(zhí)行完MOVDS,AX語(yǔ)句后,觀察DS寄存器中出現(xiàn)的段地如圖2-2-2所示。可以在Dump數(shù)據(jù)區(qū)看到DS數(shù)據(jù)段中MSR源數(shù)據(jù)串- O,WORLD!$"。如圖2-2-3所示。2-2-3DS源數(shù)2-2-2根據(jù)DS值查看數(shù)據(jù)MOVES,AXES址,用同樣的方法可以查看ES:0000的數(shù)據(jù)。如圖2-2-4所示。2-2-4根據(jù)ES值查看附加數(shù)據(jù)DSES串MSD已經(jīng)被寫入了數(shù)據(jù)串-"O,WORLD!$"。如圖2-2-5所示。2-2-5根據(jù)ES2.3數(shù)碼轉(zhuǎn)換程序?qū)嶒?yàn)2.3.1實(shí)驗(yàn)?zāi)?.3.2實(shí)驗(yàn)設(shè)PC微機(jī)一臺(tái)、TD-PIT+或TD-PIT++實(shí)驗(yàn)系統(tǒng)一套2.3.3實(shí)驗(yàn)內(nèi)容及說(shuō)明ASCIIBCDCPU用二進(jìn)制數(shù)進(jìn)行計(jì)算或其他信息處理,處理結(jié)果的輸出又必須依照外設(shè)的要求變?yōu)锳SCIIBCD計(jì)算機(jī)與外設(shè)間的數(shù)碼對(duì)應(yīng)關(guān)系如表2-3-1所示。數(shù)碼轉(zhuǎn)換關(guān)系如圖2-3-1所示。二進(jìn)鍵ASCII光電ASCII撥鍵ASCII光電ASCII撥碼開CRT顯二進(jìn)數(shù)據(jù)開位顯多二進(jìn)數(shù)據(jù)開位顯多段顯2-3-1計(jì)算機(jī)與外設(shè)間的數(shù)碼轉(zhuǎn)換關(guān)2-3-1數(shù)碼轉(zhuǎn)換對(duì)應(yīng)關(guān)BCDASCⅡ共陽(yáng)七段碼共0123456789ABCDEF1.將ASCII碼表示的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)上式可以轉(zhuǎn)換為:∑Di×10i=((…(Dn×10+Dn-1)×10)+Dn-2)×10+…+D1)×10+D由上式可歸納十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制的方法:從十進(jìn)制數(shù)的最Dn開始作乘10加次位結(jié)果按位顯示在屏幕上。轉(zhuǎn)換過(guò)程的參考流程如圖2-3-2所示。實(shí)驗(yàn)參考程序如下:實(shí)驗(yàn)程序(例程文件名:A3-確定轉(zhuǎn)換數(shù)的確定轉(zhuǎn)換數(shù)的位數(shù)CX=N-DWCX=N-減n轉(zhuǎn)換減n轉(zhuǎn)換完否yII碼減加下一位乘以取第一位ASCII送屏幕顯'Theasciicodeofdecimalcode10HCODESTART:MOVAX,DDATAMOVMOVSI,OFFSETBUFMOVBX,000AHMOVCX,0004HMOVAH,00HMOV SUB IMULADDAL,[SI+01]SUBAL,30HINCSILOOPMOVMOVDX,OFFSETMES1MOVAH,09HINTINC
十進(jìn)制
轉(zhuǎn)換為二進(jìn)制數(shù)參考;是否是A上的;show;showCODEEND2.將十進(jìn)制數(shù)的ASCII碼轉(zhuǎn)換為BCD本實(shí)驗(yàn)要求將鍵盤輸入的一個(gè)五位十進(jìn)制數(shù)54321的ASCⅡ碼存放在數(shù)據(jù)區(qū)中,轉(zhuǎn)換為BCD碼后,并將轉(zhuǎn)換結(jié)果按位分別顯示于屏幕上。若輸入的不是十進(jìn)制數(shù)的ASCⅡ碼,則輸實(shí)驗(yàn)程序(例程文件名:A3-STACK1SEGMENTDW256DUP(?)STACK1ENDS MES1DB'TheBCDcodeofdecimalare:$' 10H CODESEGMENTASSUME確定轉(zhuǎn)確定轉(zhuǎn)換數(shù)的位數(shù)DI,OFFSET是是否0-9的ASCII碼轉(zhuǎn)換完BL=ASCII-BL=CX=送屏幕DX,OFFSET SHOWPROC;是否是A上的;show;show CODEENDSEND3.將十六進(jìn)制數(shù)的ASCII碼轉(zhuǎn)換為十進(jìn)制數(shù)ND=D4×104+D3×103+D2×102+D1×10+D0 在屏幕上。轉(zhuǎn)換部分的實(shí)驗(yàn)流程參見2-3-4。實(shí)驗(yàn)參考程序如下:實(shí)驗(yàn)程序(例程文件名:A3-n商為yn商為yAX除以10,AX=商DX=余SI=SI-SI指 DW256DUP(?)STACK1ENDS MES1DB'Theasciicodeofhexare:$' 10H CODESEGMENTASSUMECS:CODE,DS:DDATASTART:MOV SI,OFFSETBUF 2-3-4將十六進(jìn)制數(shù)的ASCII碼轉(zhuǎn)換為十進(jìn)制數(shù)參考流 XCHG SI,OFFSETDX,OFFSETSHOWPROC;是否是A上的;show;showCODEEND4.BCD碼轉(zhuǎn)換為二進(jìn)制碼本實(shí)驗(yàn)要求將四個(gè)二位十進(jìn)制數(shù)的BCD碼存放在某一內(nèi)存單元中,轉(zhuǎn)換出的二進(jìn)制數(shù)碼實(shí)驗(yàn)程序(例程文件名:A3-STACK1SEGMENTDW256DUP(?)STACK1ENDS 'The'TheBCDcodeofbinary10HCX轉(zhuǎn)換CX轉(zhuǎn)換的個(gè)將指n轉(zhuǎn)換完否y送屏幕顯START:MOV DI,OFFSET LOOP DX,OFFSETMES1 DI,OFFSETBUF CALLSHWORD LOOPWAIT1:MOV PROC CALL CALLSHOW
BCD碼轉(zhuǎn)換為SHOWPROC;是否是A上的;show;showCODEEND2.3.4實(shí)驗(yàn)步2.4運(yùn)算類編程實(shí)驗(yàn)2.4.1實(shí)驗(yàn)?zāi)?.4.2實(shí)驗(yàn)設(shè)PC微機(jī)一臺(tái)、TD-PIT+或TD-PIT++實(shí)驗(yàn)系統(tǒng)一套2.4.3實(shí)驗(yàn)內(nèi)容及說(shuō)明2-4-1數(shù)據(jù)類型算術(shù)運(yùn)算BCD+、-、÷、+、+、-、÷、1.二進(jìn)制雙精度加法運(yùn)算址單元。由于低位和可能向有進(jìn)位,因而字相加語(yǔ)句需用ADC指令,則低位相加有進(jìn)位時(shí),CF=1,字相加時(shí),同時(shí)加上CF中的1。在80386以上微機(jī)中可以直接使用32位寄存器和32位加法指令完成本實(shí)驗(yàn)的功能。實(shí)驗(yàn)程序參考如下。實(shí)驗(yàn)程序(例程文件名為:A4-STACK1SEGMENTDW256DUP(?)STACK1ENDSDATAMES1DB'Theresultis:$' DW65A0H DW DW DW0021HDATAENDSCODEASSUMEDX,OFFSET PROC CALL CALLSHOWPUSHPUSH ;是否是A ;showcharacter ;showcharacter CODEENDSEND2.十進(jìn)制數(shù)的BCD碼減法運(yùn)X-Y=Z,其中,X、Y、ZBCDX=0400H,Y=0102H。實(shí)實(shí)驗(yàn)程序(例程文件名為:A4-STACK1SEGMENTDW256DUP(?)STACK1ENDS MES1 'TheresultDWDW0102HDATAENDSCODEASSUMESI,OFFSETDX,OFFSET PROC CALL CALLSHOW;是否是A上的;showJB;showEND3.乘法運(yùn)為54320H,乘數(shù)為3H,運(yùn)算結(jié)束后,將乘積在屏幕上顯示。實(shí)驗(yàn)程序參考如下。實(shí)驗(yàn)程序(例程文件名為:A4-STACK1SEGMENTDW256DUP(?)STACK1ENDS DB'Theresultis:$'ERRMESDB'Errorexist!$' DB00H,02H,03H,04H,05H DB03H DB06HDUP(0)DATAENDSCODEASSUMECS:CODE,DS:DATASTART:MOV SI,OFFSETDATA2 SI,OFFSETDATA1 DI,OFFSETRESULT DX,OFFSETSI,OFFSETERROR:MOV DX,OFFSETERRMES SHOWPROCNEAR;是否是A上的;show;showCODEENDS 4.用減奇數(shù)開平方運(yùn)算SS1,3,5,7…,一直S0040H實(shí)驗(yàn)程序(例程文件名為:A4-STACK1SEGMENTDW256DUP(?)STACK1ENDS MES1DB'Thesquarerootof$'MES2DB'is:$'NUMBDW0040H ASSUMECS:START:DX,OFFSETSI,OFFSETDX,OFFSET WAIT1: PROC CALL CALLSHOW;是否是A上的;show;showEND2.4.4實(shí)驗(yàn)步2.5分支程序設(shè)計(jì)實(shí)驗(yàn)2.5.1實(shí)驗(yàn)?zāi)?.5.2實(shí)驗(yàn)設(shè)PC微機(jī)一臺(tái)、TD-PIT+或TD-PIT++實(shí)驗(yàn)系統(tǒng)一套2.5.3實(shí)驗(yàn)內(nèi)容及說(shuō)明分支分支程序?qū)峮yny2-5-1分支結(jié)構(gòu)示意和最小值,且在程序的初始,將BH和BL初始化為首比較,若取出的字節(jié)內(nèi)容比BH的內(nèi)容大或比BL中的STACK1SEGMENTDW256DUP(?)STACK1ENDS MES1DB'The number DB0AH,0DH,'Thelargestnumberis:$'NUMBDB0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H CODEASSUMECS:CODE,DS:DDATASTART:MOV SI,OFFSETNUMB JCXZDX,OFFSETDX,OFFSETCODEEND2.5.4實(shí)驗(yàn)步2.6循環(huán)程序設(shè)計(jì)實(shí)驗(yàn)2.6.1實(shí)驗(yàn)?zāi)?.6.2實(shí)驗(yàn)設(shè)PC微機(jī)一臺(tái)、TD-PIT+或TD-PIT++實(shí)驗(yàn)系統(tǒng)一套2.6.3實(shí)驗(yàn)內(nèi)容及說(shuō)明STACK1SEGMENTDW256DUP(?)STACK1ENDS NUMB 循環(huán)條件滿足MES1DB'Thenumberofnegative循環(huán)條件滿足CODE循環(huán)條件滿足循環(huán)條件滿足循環(huán)部n 循環(huán)部 DI,OFFSETNUMB循環(huán)部DX,OFFSET2-6-1循環(huán)結(jié)構(gòu)示意CODEEND2.6.4實(shí)驗(yàn)步2.7子程序設(shè)計(jì)實(shí)驗(yàn)2.7.1實(shí)驗(yàn)?zāi)?.2.7.2實(shí)驗(yàn)設(shè)PC微機(jī)一臺(tái)、TD-PIT+或TD-PIT++實(shí)驗(yàn)系統(tǒng)一套2.7.3實(shí)驗(yàn)內(nèi)容及步驟procedurenamePROCprocedurenameAttributeNEARFAR,調(diào)用程序和過(guò)程在同一個(gè)代碼段中使用NEAR屬性,不在同一個(gè)代碼段中,使用FAR。1.數(shù)據(jù)移動(dòng)實(shí)驗(yàn)源數(shù)據(jù)目標(biāo)源數(shù)據(jù)目標(biāo)數(shù)標(biāo)目 目據(jù) 圖2-7-1源數(shù)據(jù)塊和目標(biāo)數(shù)據(jù)塊在器中的位置示有部分的情況,則要加以分析,否則部分會(huì)因搬移而遭到破壞。所以搬移過(guò)程可以通STACK1SEGMENTDW256DUP(?)STACK1ENDS DB'Thedatainbuf2BUF2DB20HDUP(0) CODESEGMENTASSUMEDX,OFFSETSI,OFFSET;是否是A上的;show;showEND運(yùn)行Tdpit集成操作軟件,根據(jù)實(shí)驗(yàn)要求編寫程序。在數(shù)據(jù)段16字節(jié)的數(shù)據(jù)2.數(shù)碼轉(zhuǎn)換及顯示實(shí)驗(yàn)處理I/O設(shè)備與CPU之間的通信。MOV指令,將中斷參數(shù)裝到INT的一段程序,則需要修改對(duì)應(yīng)中斷的中斷處理程序。微機(jī)系統(tǒng)中可以使用0-255共256256個(gè)中斷的中斷子程序(中斷向量地址2-7-2CSCSIP移CSIP移
系統(tǒng)用或保2-7-2中斷向量47HSTACK1SEGMENTDW256DUP(?)STACK1ENDS DW DW DB DW DB'Thedatainbuf1 ASSUMECS:CODE,DS:DDATA PROCFAR ;保存原有 AX,OFFSETMYINT ;保存原有CS AX,SEGMYINT DX,OFFSETMES1 SI,OFFSET ;顯示BUF1內(nèi) ;返回;自定義顯示中斷,參數(shù)為;是否是A上的CODEEND332在實(shí)模式下,80X86相當(dāng)于一個(gè)可進(jìn)行32位處理的快速8086;在實(shí)模式下為80X86編寫的程序可利用32位的通用寄存器,可使用新的指令,可采用擴(kuò)展尋址方式,但段的最大長(zhǎng)度仍是64K。80X86指令及程序設(shè)計(jì)在缺省情況下,MASMTASM8086/808880X86 和表示始于80X86的指令的助記符。在實(shí)模式下,80X868086/808864K,這樣段 等偽指令指示處理器類型80X86后,缺省的屬性類型是USE32;如果沒(méi)有指示處理器類型80X86,那么缺省的屬性類型是USE16。 SEGMENT SEGMENT 的單元地址,這是利用操作數(shù)長(zhǎng)度前綴66H和器地址長(zhǎng)度前綴67H來(lái)表示的。 SEGMENT 66H1683266H1616 SEGMENT 通過(guò)器地址長(zhǎng)度前綴67H區(qū)分32位器地址和16位器地址的方法與上述通66H321632161632位器地址的指令前加上前綴67H;對(duì)于32位代碼段,在使用16位器地址的指令前加上前綴67H。32位指令及尋址實(shí)驗(yàn)實(shí)驗(yàn)?zāi)繉?shí)驗(yàn)設(shè)PC微機(jī)一臺(tái)、TD-PIT+或TD-PIT++實(shí)驗(yàn)系統(tǒng)一套實(shí)驗(yàn)內(nèi)容及步驟STACK1SEGMENTSTACK STACK1DATASEGMENTMES1DB'Thearrayis:$'MES2DB'Aftersort:$' DATACODESEGMENT START:MOV DX,OFFSETMES1 CALLKENTERCALLSAHEXCALLKENTERCALLBUBBLE DX,OFFSETMES2 WAIT1:SI,OFFSETSI,OFFSET;是否是A上的 CODEENDS 3232Thisistangduspeaking!”進(jìn)行、 STACK1SEGMENTSTACK STACK1DATASEGMENTMES0DB'Thisistangduspeaking!$'MES1DB'Showthissentenceashex:$'BUFDB65DUP(?)DATACODESTART:MOV
DX,OFFSETMES0 ;Show"Thisistangduspeaking!" CALL DX,OFFSETMES1 ;ShowSentenceashex CALLCALL DX,OFFSETBUF CALLWAIT1:MOV DI,OFFSETMOVZX GS SI,OFFSETMOVZX ;是否是A BYTEPTRGS:[ESI+2],20H;在每個(gè)字符間加入空格 LOOP BYTEPTRGS:[ESI],24H;在串尾加上$ CODEENDS 第4章80X86微機(jī)接術(shù)及其應(yīng)用實(shí)接術(shù)是把由處理器、器等組成的基本系統(tǒng)與外部設(shè)備連接起來(lái),從而實(shí)現(xiàn)CPU8/32I/O接口設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)渴煜/O832位I/O實(shí)驗(yàn)設(shè)+實(shí)驗(yàn)內(nèi)2453745748I/O接口,實(shí)現(xiàn)微機(jī)對(duì)外部輸實(shí)驗(yàn)原輸入接口設(shè)計(jì)給微機(jī)系統(tǒng)。74LS245是一種8通道雙向的三態(tài)緩沖器,其管腳結(jié)構(gòu)如圖4-1-1所示。DIR引腳控制緩沖器數(shù)據(jù)方向,DIR1表示數(shù)據(jù)由A[7:0]B[7:0],DIR0B[7:0]至A[7:0]。G引腳為緩沖器的片選信號(hào),低電平有效。
輸出接口設(shè)計(jì)
4-1-174LS245雙向三態(tài)緩沖器管腳74LS574輸出接口一般用鎖存器實(shí)現(xiàn),從總線送出的數(shù)據(jù)可以暫存在鎖存器中。734S7487S744-2D70Q0]KE74LS574
3.8I/O
4-1-274LS574上沿觸發(fā)鎖存器管腳讀信號(hào)IOR和片選信號(hào)CS相“或”來(lái)控制輸入接口74LS245的使能信號(hào)G。總線寫信號(hào)IOW和片選信號(hào)CS相“或”來(lái)控制輸出接口74LS574的鎖存信號(hào)CLK。實(shí)驗(yàn)系統(tǒng)中基本I/O接口單元就實(shí)現(xiàn)了這種的電路,8位I/O電路連接如圖4-1-3所示(在TD-PIT+上也有使用74LS374)。 ;IA[7:0]連接設(shè)備的8位數(shù)據(jù)通過(guò)數(shù)據(jù)總線D[7:0]ALOUT ;AL中的數(shù)據(jù)通過(guò)數(shù)據(jù)總線D[7:0]輸出到OA[7:0]連接的設(shè)備
輸
'0 輸4-1-374LS24574LS5748I/O接口4.32I/O8位的I/O接口電路可以構(gòu)成一個(gè)32位的I/O接口電路,可以一次進(jìn)行32位數(shù)據(jù)8I/OBE[3:0]的控制。32I/O4-1-4所示。I[31:0]連接設(shè)備32數(shù)據(jù)通過(guò)數(shù)據(jù)總線D[31:0]輸入到EAXEAX數(shù)據(jù)通過(guò)數(shù)據(jù)總線D[31:0]輸出到O[31:0]連接的設(shè)備4.1.4實(shí)驗(yàn)說(shuō)明及步驟1.8I/O出數(shù)據(jù)通道將該數(shù)據(jù)輸出到數(shù)據(jù)燈顯示,該程序循環(huán)運(yùn)行,直到按動(dòng)PC鍵盤上任意按鍵再退出程序。實(shí)驗(yàn)程序流程如圖4-1-5所示。參考實(shí)驗(yàn)接線如圖4-1-6所示。系統(tǒng)總線4-1-448I/O接口組成的32I/O圖別,其中帶括號(hào)信號(hào)是TD-PIT+才有的運(yùn)行。開關(guān)開關(guān)LED單CS(C_A(0單(D0)I/O接是退出程將數(shù)據(jù)寫入該端讀低8位端口數(shù)開結(jié)結(jié)圖4-1-58位I/O接口設(shè)計(jì)實(shí)驗(yàn)參考流程 圖4-1-68位I/O接口設(shè)計(jì)實(shí)驗(yàn)參考接線實(shí)驗(yàn)程序(IO- STACK1SEGMENTDW256DUP(?)STACK1ENDS ASSUMESTART:MOV ;讀寫基本I/O元低8端 OUTMOVAH,1 INT16H QUIT:MOVAX,4C00H INT21HCODEENDSEND2.32位I/O操作實(shí)元BE1I/O接口
4-1-732I/O操作實(shí)驗(yàn)參考接線實(shí)驗(yàn)程序(IO-IOY0EQU ;片選IOY0對(duì)應(yīng)的端口始STACK1SEGMENTDW256DUP(?)STACK1ENDS SEGMENTASSUMESTART:MOVMOVHLOOP1:MOV;依次點(diǎn)16OUTCALLROLLOOPCHECK:MOV;判斷是否有按鍵按下INT QUIT:MOVMOVOUTMOVINTDALLYPROCPUSHMOV DECEAXJNZD1POPEAXDALLYENDPCODEEND地址譯碼電路設(shè)計(jì)實(shí)實(shí)驗(yàn)?zāi)繉W(xué)習(xí)3-8 在接口電路中的應(yīng)用實(shí)驗(yàn)設(shè)PC微機(jī)一臺(tái)、TD-PIT+或TD-PIT++實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)實(shí)驗(yàn)原微機(jī)接口電路中,常采用74LS138譯來(lái)實(shí)現(xiàn)I/O端口或器的地址譯碼。74LS138有3個(gè)輸入引腳、3當(dāng)3個(gè)控制信號(hào)有效時(shí),相應(yīng)于輸入信號(hào)A、B、C狀態(tài)的那個(gè)輸出端為低電平,該信號(hào)即可作為片選信號(hào)。
343474LS138
74LS138輸入輸出對(duì)應(yīng)關(guān)系如表4-2-1所示 圖4-2-174LS138 管4-2-174LS138輸入輸出對(duì)應(yīng)關(guān)ABC10000001111111100100101111111000101101111110011011101111100001111101111001011111101110001111111101100111111111100XXXXX11111111X1XXXX11111111XX1XXX1111111132位總線地址是由XA2開始,所以地址是以4字節(jié)邊界對(duì)齊的。實(shí)驗(yàn)系統(tǒng)的I/O地址空間共有256字節(jié),偏移地址一般從00H~FFH。起始地址由PC機(jī)系統(tǒng)分配,可以查看端口資在00H~FFH之間的端口。本實(shí)驗(yàn)要求不使用總線上的片選信號(hào),自行設(shè)計(jì)端口偏移地址為E0H~FFH的譯碼電路,然后用譯碼輸出作為I/O接口單元的片選。編寫程序,完成I/O數(shù)據(jù)操作。實(shí)驗(yàn)參考線路如圖4-2-2所示。實(shí)驗(yàn)步驟4-2-2(注意:TD-PIT+和TD-PIT++接運(yùn)行。 B碼單((4-2-2地址譯碼設(shè)計(jì)實(shí)驗(yàn)參考接線(_(O0O0實(shí)驗(yàn)程序STACK1SEGMENTDW256STACK1ENDS ASSUMESTART:MOV OUTMOVAH,1 INT16H QUIT:MOVAX,4C00H INT21HCODEENDSEND靜態(tài)器擴(kuò)展實(shí)實(shí)驗(yàn)?zāi)繉?shí)驗(yàn)設(shè)+實(shí)驗(yàn)內(nèi)實(shí)驗(yàn)原器是用來(lái)信息的部件,是計(jì)算機(jī)的重要組成部分,靜態(tài)RAM是由MOS管組成靜態(tài)RAM工作穩(wěn)定,不要外加刷新電路,使用方便。但一般SRAM的每一個(gè)觸發(fā)器是由6個(gè)晶體管組成,SRAM的集成度不會(huì)太高,目前較常用的有6116(2K×8bits,6264為8位字長(zhǎng)。62256的引腳如圖3-3-1所示。A14A14A12A7A6A5A4A3A2A1A0 A13 A8 A9 A11 A10 2.32位總線的器接
4-3-162256引腳32位系統(tǒng)總線提供XA2~XA31、BE0~BE3、MY0信號(hào)為器提供物理地址。MY0是系統(tǒng)為器擴(kuò)展提供的片選信號(hào),其地址空間為D8000H~DFFFH(詳見附錄B的編程信息),XA2~XA31用來(lái)確定一個(gè)4字節(jié)的單元,BE0~BE3用來(lái)確定當(dāng)前操作中所涉及到4字節(jié)單元中的那個(gè)字節(jié)。BE0對(duì)應(yīng)D[7:0],BE1對(duì)應(yīng)D[15:8],BE2對(duì)應(yīng)D[23:16],BE3對(duì)應(yīng)D[31:24]。其對(duì)應(yīng)關(guān)系如表4-3-1所示。4-3-1BE[3:0]指示1110×××1101×××1011×××0111×××1100××0011××0000在SRAM實(shí)驗(yàn)單元中,使用了4片62256SRAM構(gòu)成4×8bits的32位器,結(jié)構(gòu)如圖4-3-2所示。
A[1462256-62256- 62256- 62256- 62256- 3.32位器操
圖4-3- 32位器單元電路結(jié)構(gòu)
一個(gè)總線周期,BE0、BE1、BE2BE30、1、23體。兩次規(guī)則雙字操作對(duì)應(yīng)的時(shí)序如圖4-3-3所示。MOV[0000],EAX MOV ;將EAX數(shù)據(jù)寫入地
圖4-3-332位器規(guī)則雙字操作時(shí)序BE0、BE1、BE2和BE34雙字。兩次非規(guī)則雙字操作對(duì)應(yīng)的時(shí)序如圖3-3-4所示。MOV[ MOV圖3-3-432位器非規(guī)則雙字操作時(shí)序?qū)嶒?yàn)程序(MEM-STACK1SEGMENTDW256DUP(?)STACK1ENDSDATASEGMENTH;HH定義原數(shù)據(jù)段數(shù)HH;DATAHCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,0D800HMOVES,AXXORSI,SIXORDI,DIMOVCX,18HLOOP1:MOVEAX,DS:[SI] MOVES:[DI],EAXADDSI,4ADDDI,4LOOPLOOP1MOVAX,4C00HINT21HCODE 4.8位器操在32位總線上可以進(jìn)行8位器的操作,允許CPU用字節(jié)指令進(jìn)行。這樣的操作相當(dāng)于32位總線上其它3個(gè)字節(jié)不。如圖3-3-2中只對(duì)0體器(62256-0)進(jìn)行操作,其它3個(gè)器的數(shù)據(jù)線不用連接,字節(jié)使能始終是BE0有效,4字節(jié)空間只最低的1實(shí)驗(yàn)程序(MEM-STACK1SEGMENTDW256DUP(?)STACK1ENDSDATA 00H,11H,22H,33H,44H,55H,66H,77H定義源數(shù)據(jù)段數(shù)DBDB00H,11H,22H,33H,44H,55H,66H,77HDB88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFHDB00H,11H,22H,33H,44H,55H,66H,77HDB88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFHDATAENDSCODEASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,0D800HMOVES,AXXORSI,SIXORDI,DIMOVCX,30HLOOP1:MOVAL,DS:[SI] MOVES:[DI],ALADDSI,1ADDDI,2LOOPLOOP1MOVAX,4C00HINT21HCODE 元元圖4-3-532位器擴(kuò)展實(shí)驗(yàn)參考接線 圖4-3-68位器擴(kuò)展實(shí)驗(yàn)參考接線8259中斷控制實(shí)驗(yàn)實(shí)驗(yàn)?zāi)繉?shí)驗(yàn)設(shè)+實(shí)驗(yàn)內(nèi)處理IR0和IR1發(fā)出的中斷請(qǐng)求。利用實(shí)驗(yàn)平臺(tái)上8259控制器對(duì)系統(tǒng)總線上的中斷線INTR8259IR0IR1實(shí)驗(yàn)原1.中斷控制器8259中斷控制器8259是In公司專為控制優(yōu)先級(jí)中斷而設(shè)計(jì)開發(fā)的。它將中斷源優(yōu)先8259864級(jí)的矢量中斷系統(tǒng)。它的管理功能包括:1)記錄各級(jí)中斷源請(qǐng)求,2)判別優(yōu)先級(jí),確定是否響應(yīng)和響應(yīng)哪一級(jí)中斷,3)CPU8259引腳如圖4-4-1所示。8259令共有7個(gè),一類是初始化命令字,另一類是操作命令。8259的編程就是根ICW1-ICW4OCW1-OCW3寄存器組和操作命令寄存器組。ICW1-ICW44-4-2OCW1-OCW3詢方式以及設(shè)置對(duì)8259內(nèi)部寄存器的讀出命令。在硬件系統(tǒng)中,8259A0不同的寄存器和命令字。對(duì)寄存器和命令的控制如表4-4-1所示。中服務(wù)寄存中服務(wù)寄存中斷請(qǐng)求寄存操作命部總線寄存器中 寄存器優(yōu)先級(jí)分析讀/寫電讀/寫電級(jí)聯(lián)緩沖/比較級(jí)聯(lián)緩沖/比較
初始命令存器初始命令存器
4-4-18259內(nèi)部結(jié)構(gòu)和引 4-4-2(a)ICW1
00018086/8088不使 00018086/8088不使 特征無(wú) 中斷類型號(hào)的高54-4-2(b)ICW2
8086/8088不使1 1主 從不可4-4-2(c)ICW3格 0004-4-2(d)ICW4格 R00一般中斷結(jié)束命一般中斷結(jié)束命特殊循環(huán)優(yōu)先權(quán)的一般自動(dòng)循在自動(dòng)EOI下置循環(huán)優(yōu)先在自動(dòng)EOI下復(fù)位循環(huán)優(yōu)先循環(huán)優(yōu)先權(quán)的特殊EOI命設(shè)置優(yōu)先特殊循無(wú)
0001P 0X:無(wú)10:復(fù)位特11:設(shè)置特
0:不查1:允許查
0X:無(wú)10:可讀11:可讀4-4-3OCW命令字格表4-4-18259寄存器及命令的控寫信片操0010101000010000110001×1001××100在80x86PC82598259的中斷請(qǐng)求信號(hào)均采用上升沿觸發(fā),采用全嵌套方式,優(yōu)先級(jí)的排列次序?yàn)?級(jí)最高,依次為1級(jí)、8級(jí)~15級(jí),然后是3級(jí)~7級(jí)。PCI_INTRPC機(jī)保留中斷其中的一個(gè)。對(duì)PCI_INTR中斷的初始化PC機(jī)已經(jīng)完成,在使用時(shí)主要是將其中斷打開,修改中4-4-2PC微機(jī)系統(tǒng)中的硬件中中斷功中斷中斷8259825982598259825982598259825982598259825982598259825982598259實(shí)驗(yàn)說(shuō)明及步驟1.8259查詢中斷應(yīng)用實(shí)驗(yàn)82598259OCW3中的P1行查詢命令,8259I/OISR相應(yīng)位并讀其優(yōu)先級(jí)。從OCW3寫操作到I/O讀操作期間中斷,讀出字節(jié)的最為1 0:無(wú)中斷請(qǐng)1:有中斷請(qǐng)
W2W1W0:請(qǐng)求中優(yōu)先4-4-48259OCW3查詢字格8259IR0和IR1IR0在屏幕上顯示字符“0,IR1用一個(gè)單次脈沖的上升沿模擬中斷產(chǎn)生。參考程序流程如圖4-4-5所示。開ICW1ICW2ICW4OCW1向8259OCW3查詢命讀出查詢結(jié)結(jié)單 脈 單元 D0 D1 D2 D3 D4 D5 D6 D7 CS RD WR是否有按鍵按下是否IR0請(qǐng)求退出程執(zhí)行IR0處執(zhí)行IR1處4-4-68259查詢中斷實(shí)驗(yàn)參考接線運(yùn)行程序,按動(dòng)實(shí)驗(yàn)程序(T8259- ;片選IOY0對(duì)應(yīng)的端口始地址MY8259_ICW1EQU MY8259_ICW2EQU MY8259_ICW3 STACK1SEGMENTDW256DUP(?)STACK1ENDSCODEASSUME QUIT:MOVAX,4C00H INT21HCODEENDINTR單中斷應(yīng)用實(shí)驗(yàn)面已經(jīng)介紹了實(shí)驗(yàn)平臺(tái)上系統(tǒng)總線單元的INTRPC機(jī)內(nèi)所以,使用INTR中斷請(qǐng)求信號(hào),就相當(dāng)在使用PC機(jī)內(nèi)部相應(yīng)的那一級(jí)中斷。INTR中斷處中斷處(顯示字符關(guān)關(guān)中打開INTR中 開中關(guān)中恢復(fù)INTR中斷恢復(fù)INTR中 結(jié)向PC內(nèi)8259發(fā)中斷結(jié)束命中斷返 線 圖4-4-78259單中斷應(yīng)用實(shí)驗(yàn)參考程序流程 圖4-4-88259單中斷實(shí)驗(yàn)接線實(shí)驗(yàn)程序(T8259- STACK1SEGMENTDW256DUP(?)STACK1ENDSDATA 'Pressanykeyto DW DW DB DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVMOVDX,OFFSETMES MOVAH,09HINT21HMOV MOVMOVDI,INTR_IVADDMOVAX,ES:[DI]MOV MOVAX,OFFSETMOV ADDMOVMOV MOVAX,SEGMOV MOV INMOV ANDAL,INTR_IMOUTDX,ALMOVAX,4C00H INT21HMYISRPROCNEAR PUSHAXMOVAL,39HMOVAH,0EHINT10HMOVAL,20HINT10HOVER:MOV MOVAL,20HOUTDX,ALMOVAL,20HOUT20H,ALPOPAXMYISRENDPCODEENDSENDINTR擴(kuò)充多中斷源實(shí)驗(yàn)INTR,82598IR0~I(xiàn)R7就成了單一INTR8路INTRINTRINTR的中斷服務(wù)程序中通過(guò)對(duì)本實(shí)驗(yàn)要求實(shí)現(xiàn)8259控制器IR0、IR1中斷都可以通過(guò)INTR向PC發(fā)起中斷請(qǐng)求。KK1+KK2+IR0對(duì)應(yīng)的服務(wù)程序中顯示字符“0IR1對(duì)應(yīng)的服務(wù)程序中顯示字符“1”。 CS A0 RD WR D0 D1 D2 D3 D4 D5 D6 D74-4-98259擴(kuò)充中斷源實(shí)驗(yàn)參考接線替換INTR替換INTR中斷矢量打位開關(guān)中向PC內(nèi)8259發(fā)中斷結(jié)束命開中中斷返返回到結(jié)讀出查詢是否IR0請(qǐng)求讀出查詢是否IR0請(qǐng)求執(zhí)行IR1處執(zhí)行IR0處向8259OCW3查詢命初始化實(shí)驗(yàn)系統(tǒng)中ICW1ICW2ICW4開中是否有按鍵按下關(guān)中4-4-108259擴(kuò)充中斷源實(shí)驗(yàn)參考程序流程實(shí)驗(yàn)程序(T8259-INTR_IVADDEQU01C8H;INTR的中INTR_OCW1EQU0A1H INTR_OCW2EQU0A0H INTR_IMEQU0FBH ;INTR對(duì)應(yīng)的中斷字 ;片選IOY0對(duì)應(yīng)的端口始地址MY8259_ICW1EQU MY8259_ICW2EQU MY8259_ICW3EQU MY8259_ICW4EQU MY8259_OCW1EQU MY8259_OCW2EQU MY8259_OCW3 STACK1SEGMENTDW256DUP(?)STACK1ENDSDATA 'Pressanykeyto? ?? DATAENDSCODESEGMENTASSUMESTART:MOVMOVMOVDX,OFFSETMES MOVAH,09HINT21HMOV MOVMOVAX,ES:[DI]MOV MOVAX,OFFSETMOV ADDMOVMOV MOVAX,SEGMOV MOV MOVAL,IM_BAKOUTDX,ALMOVAX,4C00H INT21HMYISRPROCNEAR PUSHAXQUERY:MOV IN CMPJE JNE JMPIR0ISR:MOVAL,30H MOVAH,0EHINT10HINT10HJMPOVERIR1ISR:MOVAL,31H MOVAH,0EHINT10HINT10HJMPOVEROVER:MOV OUTDX,ALPOPAXMYISRENDPCODEENDSEND.5DMA特性8237應(yīng)用實(shí)實(shí)驗(yàn)?zāi)繉?shí)驗(yàn)設(shè)機(jī)一臺(tái),實(shí)驗(yàn)原理及內(nèi)容,直接實(shí)現(xiàn)對(duì)器的。DMA傳送方式可用來(lái)實(shí)現(xiàn)器到器、器到I/O接口、I/O接口到器之間的高速數(shù)據(jù)傳送。 1234 567898237是一種高性能可1234 56789口到器之間的高速數(shù)據(jù)傳送。8237的令、請(qǐng)求、、狀態(tài)和暫存寄存器,通過(guò)8237DMA的外部引腳如圖4-5-1所示。4式、狀態(tài)、請(qǐng)求、和暫存寄存器。4個(gè)通道的寄存器。包括地址寄存器(
4-5-18237
寄存寄存
讀讀緩寄存寄存址計(jì)數(shù)數(shù)計(jì)寄存讀緩寄存讀緩優(yōu)邏內(nèi)部
I/O緩A0- A4-A0- A4-A8-控A8-I/OI/O緩方 狀寄存寄存寄存
暫D0-寄存D0-4-5-28237 0:DACK低電平有1:DACK高電平有0:DREQ高電平有1:DREQ低電平有0:不擴(kuò)展寫1:擴(kuò)展寫0:固定優(yōu)先 1:循環(huán)優(yōu)
器 器傳1:允 器 器傳器到器傳送0:源地址不1:源地址保持不變0:允許82371:8237工0:正常時(shí)序1:壓縮時(shí)序4-5-3命令寄存器格方式寄通道傳送方式選擇00:請(qǐng)求傳送方式01:單字節(jié)傳送方式10:數(shù)據(jù)塊傳送方式11:級(jí)聯(lián)傳送方式地址增減方式選擇0:地址遞1:地址遞自動(dòng)重載功能選擇1:允許
通道01:選擇通道10:選擇通道11:選擇通道傳送類型選擇00:校驗(yàn)傳01:寫傳10:讀傳11:無(wú)意4-5-4方式寄存器格通道通道通道通道通道通道通道通道通道通道無(wú)DMA請(qǐng)求為4-5-58237
請(qǐng)求寄
無(wú)用1:置1請(qǐng)求觸發(fā)器0:置0請(qǐng)求觸發(fā)器4-5-68237求寄存
通道01:選擇通道10:選擇通道11:選擇通道無(wú)用位寄存無(wú)用位無(wú)用1:置1請(qǐng)求觸發(fā)器 0:置0請(qǐng)求觸發(fā)
通道選00:選擇通道01:選擇通道10:選擇通道11:選擇通道
通道0通道1通道2通道
0:允(a)單個(gè)通道寄存器格 (b)4個(gè)通道寄存器格圖4-5-7通道寄存器格4-5-18237及其對(duì)應(yīng)端寫1000寫08讀01108818寫01寫100888高位10讀01寫8讀01--4寫1010014寫101010方式寄存器(4個(gè)6寫1010118讀011101-寫10-寫101100清-寫101110寫4通4寫101111
4-5-8DMA驗(yàn)單元電路將器D800H單元開始的連續(xù)8個(gè)字節(jié)的數(shù)據(jù)到地址D810H開始的8個(gè)單元中,實(shí)現(xiàn)8237的器到器傳輸。實(shí)驗(yàn)參考線路圖如圖4-5-9所示。 元 元 元 元實(shí)驗(yàn)系統(tǒng)中提供了MY0這個(gè)器譯碼信號(hào),譯碼空間為D8000H~DFFFFH。在做DMA實(shí)驗(yàn)時(shí),CPU會(huì)讓出總線控制權(quán),而8237的尋址空間僅為0000H~FFFFH,8237讓出總線控制權(quán)時(shí),MY0會(huì)變?yōu)榈碗娖?,即DMA期間,MY0有效。具體如下圖所示。實(shí)驗(yàn)步
實(shí)驗(yàn)接線圖如圖4-5-9運(yùn)行Tdpit集成操作軟件,參考流程圖4-5-10編寫程序,編譯、打開軟件中的“擴(kuò)展區(qū)數(shù)據(jù)顯示窗口對(duì)器的 個(gè)字節(jié)空間寫數(shù)在“擴(kuò)展區(qū)數(shù)據(jù)顯示窗口”中的偏移地址欄中輸 D800:0020,并點(diǎn)擊“讀自己思考DMA儲(chǔ)器的數(shù)據(jù)時(shí),連續(xù)的地址空間都必須是4的位數(shù)。想想看,是不是這樣?開始總清(軟件復(fù)位開始總清(軟件復(fù)位 通道0通道1命令 結(jié)束請(qǐng)求4-5-10DMA實(shí)驗(yàn)程序STACK1SEGMENTDW256DUP(?)STACK1ENDSCODEASSUMESTART:MOVDX,MY8237_D OUTDX,AL CODEEND8254定時(shí)/計(jì)數(shù)器應(yīng)用實(shí)驗(yàn)實(shí)驗(yàn)?zāi)繉?shí)驗(yàn)設(shè)+實(shí)驗(yàn)內(nèi)動(dòng)‘KK1+’5次后,產(chǎn)生一次計(jì)數(shù)中斷,并在屏幕上顯示一個(gè)字符‘5實(shí)驗(yàn)原性能。8254具有以下基本功能:2MHz(5)8254(8253,除了可以讀出當(dāng)前計(jì)數(shù)單元的內(nèi)容外,還可以讀()CLK÷OT、其中fCL是輸入時(shí)鐘脈沖的頻率,OT是輸出波形的頻率。個(gè)計(jì)數(shù)器組成。8254的工作方式如下述:邏輯電
計(jì)數(shù)器寄存計(jì)計(jì)數(shù)器寄存計(jì)數(shù)器
內(nèi)部總4-6-18254內(nèi)內(nèi)部總8254的控制字有兩個(gè):一個(gè)用來(lái)設(shè)置計(jì)數(shù)器的工作方式,稱為方式控制字;另一個(gè)用來(lái)如表4-6-1~4-6-3所示。4-6-18254方式控制字格4-6-28254出控制字格1104-6-382544-6-28254驗(yàn)電路原理實(shí)驗(yàn)步8254034KK1+CLK0OUT0INTRKK15符“58254元KK1+8254元KK1+ XIOW XIOR IOY0 4-6-38254接線實(shí)驗(yàn)程序(T8254-INTR_IVADDEQU01C8H;INTR的中INTR_OCW1EQU0A1H;INTRPC8259OCW1址INTR_OCW2EQU0A0H;INTRPC8259OCW2址INTR_IMEQU0FBH;INTR對(duì)應(yīng)的中斷字 MY8254_COUNT0EQU ;8254計(jì)數(shù)器0端口地址MY8254_COUNT1EQU ;8254計(jì)數(shù)器1端口地址MY8254_COUNT2EQU ;8254計(jì)數(shù)器2端口地址 STACK1SEGMENTDW256DUP(?)STACK1ENDSDATA? ??'COUNT:DATACODESTART:MOVAX,DATAMOVDS,AXMOV MOVMOVAX,ES:[DI]MOV MOVAX,OFFSETMOV ADDMOVMOV MOVAX,SEGMOV DX,OFFSETADDMOV MOVMOV MOVAL,IM_BAKOUTDX,ALMOVAX,4C00H INT21HMYISRPROCNEAR PUSHAXINT10HINT10HMOVDX,MY8254_COUNT0 MOVAL,4OUTOVER:MOV OUTDX,ALPOPAXMYISRENDPCODEENDSEND8254231.8432MHzCLK2100CLK2100OUT218.432KHzOUT20CLK003,計(jì)數(shù)初值為18432,相當(dāng)是進(jìn)行18432分頻。則在OUT0得到1Hz的輸出。示波示波器測(cè)1時(shí)鐘元4-6-48254接線實(shí)驗(yàn)程序(T8254- MY8254_COUNT0EQU ;8254計(jì)數(shù)器0端口地址MY8254_COUNT1EQU ;8254計(jì)數(shù)器1端口地址MY8254_COUNT2EQU ;8254計(jì)數(shù)器2端口地址 ;8254控制寄存器端口地址STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSCODECODEEND8255并行接口實(shí)驗(yàn)實(shí)驗(yàn)?zāi)繉?shí)驗(yàn)設(shè)+實(shí)驗(yàn)內(nèi)基本輸入輸出實(shí)驗(yàn)。編寫程序,使8255A口為輸出,B向右,每次僅亮一個(gè)燈,循環(huán)顯示,D15~D8D7~D0實(shí)驗(yàn)原器雙向器D0-
控制邏
A組部8位內(nèi)總B組部
A(8位(高4位(低4位(8位
108255123456784-7-18255腳I/OCPU片是In公司生產(chǎn)的通用并行I/O接口,它具有A、B、C三個(gè)并行接口,用+5V單電源供電,能在以下三種方式下工作:方式0--基本輸入/輸出方式、方式1--選通輸入/輸出方制字和C口按位置位/復(fù)位控制字格式如圖4-7-2所示。D7D6 D4 D2D1CD7D6 D4 D2D1C口低4輸輸輸輸方式選方式方式C口高4輸輸A輸輸方式選不 置位復(fù)復(fù)置位000100201301711000方式01方式1x方式1(a)工作方式控制 (b)C口按位置位/復(fù)位控制4-7-28255432432159864-7-38255驗(yàn)單元電路實(shí)驗(yàn)步用一組開關(guān)信號(hào)接入端口B,端口A輸出線接至一組數(shù)據(jù)燈上,然后通過(guò)對(duì)8255編程來(lái)4-7-48255本實(shí)驗(yàn)程序(T8255- ;8255的A口地址 ;8255的B口地址 ;8255的C口地址MY8255_MODEEQU STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSCODE;讀B;寫ACODEEND圖4-5-5所示。實(shí)驗(yàn)步驟如下所述:?jiǎn)卧? 4-7-58255水燈實(shí)驗(yàn)接線實(shí)驗(yàn)程序(T8255- ;8255的A口地址 ;8255的B口地址 ;8255的C口地址MY8255_MODEEQU STACK1SEGMENTDW256DUP(?)STACK1ENDSDATA DB? DB?DATAENDSCODESEGMENTLOOP1:CALLMOV RORAL,1MOVLA,ALMOVDX,MY8255_AOUTDX,ALMOV ROLAL,1MOVLB,ALMOVDX,MY8255_BOUTDX,ALMOVAH,1 INT16HJZLOOP1 QUIT:MOVAX,4C00H INTDALLYPROCNEAR PUSHCXPUSHLOOPD1POPPOPCXDALLYENDPCODEENDSEND16550實(shí)驗(yàn)?zāi)繉?shí)驗(yàn)設(shè)+實(shí)驗(yàn)內(nèi)串口1發(fā)數(shù),實(shí)驗(yàn)裝置串口接收。2實(shí)驗(yàn)原16550是一種連接任何類型虛擬串行接口的可編程通口,與In微處理器完全兼容的使用非常廣泛的異步/發(fā)送器(UART。它內(nèi)置了16字節(jié)的FIFO緩沖,最大通訊口。16550的引腳如圖4-8-1所示,其內(nèi)部結(jié)構(gòu)如圖4-8-2所示。
94-8-116550腳邏中斷允許寄存器MODEM狀態(tài)寄存器MODEM控制寄存器邏除數(shù)鎖存器邏中斷允許寄存器MODEM狀態(tài)寄存器MODEM控制寄存器邏除數(shù)鎖存器(低位除數(shù)鎖存器 線路狀態(tài)寄存器線路控制寄存器接收移位寄存中斷識(shí)別寄存器發(fā)送保持寄存器接收同步接收緩沖寄存器波特波特率發(fā)發(fā)送移位寄存發(fā)送同步
圖4-8-216550的內(nèi)部4-8-116550方被的寄存0011XXXXXX(LCR4-8-2LCR111-1.52位停止位D1D000-501-610-711-8(LSR4-8-3LSR錯(cuò)4-8-4常用的波特率參數(shù)表速率(IER16550中斷、接收緩沖器滿中斷、發(fā)送保持寄存器空中斷和MODEM輸入狀態(tài)改變中斷。這些中斷的允許或由IER來(lái)控制。見表4-8-5。4-8-5IER格0000類型0中斷類型1中斷類型2中斷(IIR,生及其類型,并且比此類優(yōu)先級(jí)低的所有類型中斷。見表4-8-6。4-8-6IIR00(MCR,MCR見表4-8-7。4-8-7MCR0001-OUT21-OUT11-DTR(MSR,MSR絡(luò)信號(hào)的當(dāng)前狀態(tài)以及這些信號(hào)的變化情況。見表4-8-8。4-8-8MSRRLSDDSRCTSD6=1RI=0,MODEMD3,D1,D0位為“1”是說(shuō)明在上次MSR之后,MSR的D7,D5,D4中相應(yīng)(CR,16550收的數(shù)據(jù),這是早期的UART器件所沒(méi)有的。FCR各位意義見表4-8-9。4-8-9FCR位位0415263DMA方7實(shí)驗(yàn)步9600baut,每個(gè)字節(jié)有一個(gè)邏輯“0”的起始位,8位數(shù)據(jù)位,1位邏輯“1”的停止位,如圖4-8-3所示。低低位字字起始
奇偶邏輯1停止設(shè)置通設(shè)置通信波特開向向發(fā)送緩沖寄存器寫數(shù)有按鍵按下停止程序退結(jié)4-8-4串行通訊基礎(chǔ)實(shí)驗(yàn)程4-8-5(注意:對(duì)于TD-PIT+,16550的時(shí)鐘輸入CLK_IN連接系統(tǒng)總線單元的PCLK。XD6 XD4 XD3 XD2 XD0 XA4 XA3 XA2 XIOW XIOR IOY0
1時(shí)鐘1時(shí)鐘實(shí)驗(yàn)程序(T16550- 數(shù)中線STACK1SEGMENTDW256DUP(?)STACK1ENDSCODEASSUMECALLMOVAH,1 INT16HJZSEND QUIT:MOVAX,4C00H INTDALLYPROCNEAR PUSHCXPUSHMOV MOV DECAXJNZD2LOOPD1POPAXPOPCXDALLYENDPCODEENDSEND 1的端口地址如表4-8-10所示4-8-10PCCOM1端口地相應(yīng)0011XX線路控制寄存器(7XXX區(qū)數(shù)據(jù)并顯清PCI_INTCSR標(biāo)志位向9中斷返開開中關(guān)中開開中關(guān)中向1發(fā)送緩數(shù)據(jù)發(fā)送完設(shè)1通信波特關(guān)中恢復(fù)P設(shè)置16550串口通信波特設(shè)置16550串口通開中返回到(a)主程設(shè)置16550中斷允許寄存結(jié)4-8-6PC串行通訊應(yīng)用實(shí)驗(yàn)程序流程4-8-7(注意:對(duì)于TD-PIT+,165501TXDRXD XA3
PC串行通訊應(yīng)數(shù)中線STACK1SEGMENTDW256DUP(?)STACK1ENDSDATA DW DW DB DB'Communicationwithcomputer!$' DATAENDSCODESTART:MOVAX,DATAMOVDS,AXMOV MOVMOVAX,ES:[DI]MOV MOVAX,OFFSETMOV ADDMOVMOV MOVAX,SEG ;000C9600MOVBX,OFFSETSTR1MOVCX,001CHSEND: MOVAL,[BX]OUTDX,ALINCBXCALLDALLYLOOPSENDWAIT1:MOVAH,1 INT16HJZWAIT1 QUIT:CLIMOV MOVMOVMOV MOVES:[DI],AXADDDI,2MOV MOVMOV MOVAL,IM_BAKOUTDX,ALMOVAX,4C00H INT21HMYISRPROCNEAR PUSHAXMOV INAL,DXMOVAH,0EHINT10HOVER:MOV MOVAL,20HOUTDX,ALMOVAL,20HOUT20H,ALPOPAXMYISRDALLYPROCNEAR PUSHCXPUSHMOV MOV DECAXJNZD2LOOPD1POPAXPOPCXDALLYENDPCODEENDSEND(對(duì)于TD-PIT+165501據(jù)的發(fā)送,2號(hào)機(jī)作為,完成數(shù)據(jù)的接收和顯示,2號(hào)機(jī)采用中斷方式,當(dāng)接收緩沖區(qū)Tdpit1號(hào)機(jī)編寫發(fā)送程序,2號(hào)其中2號(hào)參考圖4-8-7所示接線,1號(hào)發(fā)送機(jī)參考圖4-8-8所示連接實(shí)驗(yàn)線K 1時(shí)鐘TXDRXD4-8-8串行雙機(jī)通訊應(yīng)用實(shí)驗(yàn)發(fā)送機(jī)參考接線3.ASM(1 ;片選IOY0對(duì)應(yīng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年五年級(jí)品社下冊(cè)《校園紅綠燈》說(shuō)課稿 上??平贪?/a>
- 2025股份轉(zhuǎn)讓合同
- 煤礦集中檢修方案
- 襄陽(yáng)防腐木屋施工方案
- 青島垂直植物墻施工方案
- 2024-2025學(xué)年高中歷史 專題八 當(dāng)今世界經(jīng)濟(jì)的全球化趨勢(shì) 第三課 經(jīng)濟(jì)全球化的世界說(shuō)課稿 人民版必修2
- 凈化設(shè)備合同范例
- 28 棗核 說(shuō)課稿-2023-2024學(xué)年統(tǒng)編版語(yǔ)文三年級(jí)下冊(cè)
- Unit 3 Fit for life Welcome to the unit 說(shuō)課稿-2024-2025學(xué)年高中英語(yǔ)譯林版(2020)選擇性必修第二冊(cè)
- 橋面防腐木施工方案
- 化工企業(yè)靜電安全檢查規(guī)程
- 線性系統(tǒng)理論鄭大鐘第二版
- 寧騷公共政策學(xué)完整版筆記
- 項(xiàng)目負(fù)責(zé)人考試題庫(kù)含答案
- GB/T 7251.5-2017低壓成套開關(guān)設(shè)備和控制設(shè)備第5部分:公用電網(wǎng)電力配電成套設(shè)備
- 2023年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招(數(shù)學(xué))試題庫(kù)含答案解析
- 中考語(yǔ)文非連續(xù)性文本閱讀10篇專項(xiàng)練習(xí)及答案
- 勇者斗惡龍9(DQ9)全任務(wù)攻略
- 經(jīng)顱磁刺激的基礎(chǔ)知識(shí)及臨床應(yīng)用參考教學(xué)課件
- 小學(xué)語(yǔ)文人教四年級(jí)上冊(cè)第四單元群文閱讀“神話故事之人物形象”PPT
- ISO 31000-2018 風(fēng)險(xiǎn)管理標(biāo)準(zhǔn)-中文版
評(píng)論
0/150
提交評(píng)論