匯編實(shí)驗(yàn)報(bào)告_第1頁
匯編實(shí)驗(yàn)報(bào)告_第2頁
匯編實(shí)驗(yàn)報(bào)告_第3頁
匯編實(shí)驗(yàn)報(bào)告_第4頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、XXXX 大學(xué)實(shí)驗(yàn)報(bào)告課程名稱匯編語言程序設(shè)計(jì)成實(shí)驗(yàn)學(xué)時(shí)績?cè)u(píng)語:指導(dǎo)教師:年月日班 級(jí):學(xué) 號(hào):姓 名:地 點(diǎn):時(shí) 間:實(shí)驗(yàn)一匯編語言編程實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?1) 掌握匯編語言的編程方法(2) 掌握 DOS功能調(diào)用的使用方法(3) 掌握匯編語言程序的調(diào)試運(yùn)行過程二、實(shí)驗(yàn)內(nèi)容1. 將指定數(shù)據(jù)區(qū)的字符串?dāng)?shù)據(jù)以 ASCII 碼形式顯示在屏幕上, 并通過 DOS功能調(diào)用完成必要提示信息的顯示。2. 在屏幕上顯示自己的學(xué)號(hào)姓名信息。3.循環(huán)從鍵盤讀入字符并回顯在屏幕上,然后顯示出對(duì)應(yīng)字符的ASCII 碼,直到輸入” Q”或“ q”時(shí)結(jié)束。4.實(shí)驗(yàn)中使用的 DOS功能調(diào)用:INT 21HAH 值功能調(diào)用參數(shù)

2、結(jié) 果1鍵盤輸入并回顯AL=輸出字符2顯示單個(gè)字符 ( 帶 Ctrl+Break檢查 )DL=輸出字符光標(biāo)在字符后面6顯示單個(gè)字符 ( 無 Ctrl+Break檢查 )DL=輸出字符光標(biāo)在字符后面8從鍵盤上讀一個(gè)字符AL=字符的 ASCII 碼9顯示字符串DS:DX=串地址,光標(biāo)跟在串后面 $為結(jié)束字符4CH返回 DOS系統(tǒng)AL=返回碼例如,實(shí)現(xiàn)鍵盤輸入并回顯的完整代碼:MOVAH01HINT21H三、實(shí)驗(yàn)結(jié)果1. 將指定數(shù)據(jù)區(qū)的字符串?dāng)?shù)據(jù) ”Let us go ! ”以 ASCII 碼形式顯示在屏幕上,并通過DOS 功能調(diào)用完成必要提示信息的顯示:2. 在屏幕上顯示自己的學(xué)號(hào)姓名信息3.循環(huán)

3、從鍵盤讀入字符并回顯在屏幕上,然后顯示出對(duì)應(yīng)字符的ASCII 碼,直到輸入” Q”或“ q”時(shí)結(jié)束。四、實(shí)驗(yàn)原理DATASEGMENTMESDB'NUMBER:03099018 ',0AH,0DH,'NAME:FengXiaokang',0AH,0DH,'$'CENTDB'Let us go !','$'ENTEDB0AH,0DH,'$'INFODB 'Origin: ','$'ASCIDB 'ASCII : ','$'MSG1DB&#

4、39;If you want to quit please press.q/Q.',0AH,0DH,'$'MSG2DB0AH,0DH,'Char: $'RSDB 'ASCII: $'SDDB ''DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATA; 存儲(chǔ)數(shù)據(jù)MOVDS,AXMOVDX,OFFSET MES; 顯示數(shù)據(jù)MOVAH,09HINT21HMOVDX,OFFSET MSG1MOVAH,09HINT21HMOV DX, OFFSET CENTMOV SI,

5、 DXT:MOV AL,SICMP AL,'$'JZ C1ANDAL,0F0H;取高 4位MOVCL,4SHRAL,CLCMPAL,0AH; 是否是 A 以上的數(shù)JBAADDAL,07HA:ADDAL,30HMOVDL,AL;show characterMOVAH,02HINT21H;MOVAL,DS:SIMOVAL, SIANDAL,0FH;取低 4位CMPAL,0AHJBBADD AL,07HB:ADDAL,30HMOVDL,ALMOVAH,02HINT21HINCSILOOP TC1:MOV DX,OFFSET MSG2MOV AH,09HINT21HMOVAH,01hI

6、NT21hCMP AL,'q'JEexitCMPAL,'Q'JEexitMOV SD,ALMOVDX,OFFSET RS ;show messageMOVAH,09HINT21HMOV SI,OFFSET SDMOV AL,SIANDAL,0F0H;取高 4位MOVCL,4SHRAL,CLCMPAL,0AH; 是否是 A 以上的數(shù)JBC2ADDAL,07HC2:ADDAL,30HMOVDL,AL;show characterMOVAH,02HINT21HMOVAL,DS:SIANDAL,0FH;取低 4位CMPAL,0AHJBC3ADD AL,07HC3:ADD

7、AL,30HMOVDL,ALMOVAH,02HINT21HLOOP C1C:MOVDX,OFFSET MSG1MOVAH,09HINT21HLOP:MOVAH,08HINT21HCMPAL,'Q'JEexitCMP AL,'q'JEexitJMPLOPEXIT:MOVINTAX,4C00H21H;go back to dosCODEENDSendSTART五、實(shí)驗(yàn)流程圖六、實(shí)驗(yàn)總結(jié)這是我學(xué)習(xí)匯編以來,第一次用匯編寫程序,費(fèi)了我不只一個(gè)實(shí)驗(yàn)課時(shí),糾結(jié)了不只一天。同樣是助記碼,真的不懂如何組織的。郁悶之下,用C 寫出來發(fā)泄一下,才猜想應(yīng)該跟 C 的思考方式完全不同。

8、后來開始研究代碼,真的不愧是底層啊,詳細(xì)到一個(gè)字節(jié)高低位的安排,如此地考驗(yàn)硬件知識(shí)。實(shí)驗(yàn)二數(shù)碼轉(zhuǎn)換實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?. 掌握不同進(jìn)制數(shù)及編碼相互轉(zhuǎn)換的程序設(shè)計(jì)方法。2. 掌握運(yùn)算類指令編程及調(diào)試方法。3. 掌握循環(huán)程序的設(shè)計(jì)方法。二、實(shí)驗(yàn)設(shè)備PC機(jī)一臺(tái)。三、實(shí)驗(yàn)內(nèi)容及說明1. 重復(fù)從鍵盤輸入不超過 5 位的十進(jìn)制數(shù),按回車鍵結(jié)束輸入;2. 將該十進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù);結(jié)果以16 進(jìn)制數(shù)的形式顯示在屏幕上;3. 如果輸入非數(shù)字字符,則報(bào)告出錯(cuò)信息,重新輸入;4. 直到輸入“ Q”或 q時(shí)程序運(yùn)行結(jié)束。四、實(shí)驗(yàn)結(jié)果1. 輸入 33062. 結(jié)果 0CEA3. 輸入一個(gè)較大的數(shù) 655374. 顯

9、示 456A65. 輸入非法值五、實(shí)驗(yàn)原理圖源代碼:DATASEGMENT'No.:03099018 ',0AH,0DH,'NAME:Fengxiaokang',0AH,0DH,'$'NUMBERDBERRORDB 0AH,0DH,'ERROR! PLEASE TRY AGAIN!',0AH,0DH,'$'INPDB 0AH,0DH,'Please inputa number,youcan exit by inputing "q" or "Q"',0AH,0D

10、H,'$'XPDB 0AH,0DH,'$'DATAENDSCODESEGMENTstart:ASSUMECS:CODE,DS:DATAMOV AX,DATAMOVDS,AXMOV DX,OFFSET NUMBERMOV AH,09HINT21HMOVBX,0HMOVDX,OFFSET INPMOVAH,09Hinput:INT21HMOV AH,01HINT21HCMP AL,0DH; 數(shù)字輸入完畢JEchangeCMPAL,'Q' 退出JEEXITCMPAL,'q'JEEXITCMP AL,030h; 非數(shù)字jlerrorscm

11、pAL,039hjgerrorsSUBAL,30H; 運(yùn)算pushAXmovAX,BXmovDX,0000AHmulDXmovBX,AXpopAXaddBL,ALCMPBX,00HJZZEROjmpinputerrors:MOVDX,OFFSET ERRORMOVAH,09HINT21HMOVBX,0HjmpinputZERO:MOV CL,4JMPLOOPSchange:CMPBX,00HJZERRORSMOV CL,4loops:MOV DX,BXAND DX,0F000HSHRDX,12; 是否是 A 以上的數(shù)CMPDX,0AHJLC2ADDDX,07HC2:ADDDX,30H;show

12、 chArActerMOVAH,02HINT21HSHLBX,4LOOPloopsMOV DX,OFFSET XPMOV AH,09HINT21HJMPINPUTEXIT:MOVAX,4C00HINT21HCODEENDSEND START原理十進(jìn)制數(shù)可以表示為:nnn-1*10n-100i*10iD *10 +D+ +D *10 =D其中 D 代表十進(jìn)制數(shù)1、 2、3、 9、 0。i上式可以轉(zhuǎn)換為:Din) *10+ D)*10+ D)*10+ D*10 =( D*10+Dn-20inn-11由上式可歸納出十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)的方法:從二進(jìn)制數(shù)的最高位D 開始做乘 10n加次位的操作。依此

13、類推,則可求出二進(jìn)制數(shù)結(jié)果。數(shù)碼轉(zhuǎn)換對(duì)應(yīng)關(guān)系十六進(jìn)制BCD 碼二進(jìn)制機(jī)器碼ASCII碼七段碼共陽共陰00000000030H40H3FH10001000131H79H06H20010001032H24H5BH30011001133H30H4FH40100010034H19H66H50101010135H12H6DH60110011036H02H7DH70111011137H78H07H81000100038H00H7FH91001100139H18H67HA10141H08H77HB101142H03H7CHC110043H46H39HD110144H21H5EHE111045H06H79HF

14、111146H0EH71H七、實(shí)驗(yàn)總結(jié)(體會(huì))當(dāng)匯編與算法結(jié)合在一起的時(shí)候,意味著難度又上升了一個(gè)層次。這是一個(gè)常見的進(jìn)制轉(zhuǎn)換程序,除了要處理數(shù)制問題,題目中不超過 5 位的要求也要注意,因?yàn)闀?huì)存在溢出問題。三、源代碼:MY_STACK SEGMENT PARA 'STACK'DB100 DUP(?)MY_STACK ENDSMY_DATASEGMENT PARA 'DATA'IO_9054base_address DB 4 DUP(0);PCI卡 9054 芯片I/O基地址暫存空間IO_base_addressDB 4 DUP(0);PCI 卡 I/O基地址暫

15、存空間pcicardnotfindDB0DH,0AH,'pcicardnotfindoraddress/interrupterror !',0DH,0AH,'$'GOODDB 0DH,0AH,'The Program is Executing !',0DH,0AH,'$'P8254_T0DW0000HP8254_T1DW0001HP8254_T2DW0002HP8254_MODEDW0003HP8255_ADW0020HP8255_BDW0021HP8255_CDW0022HP8255_MODEDW0023HMY_DATA END

16、sMY_CODE SEGMENT PARA 'CODE'MY_PROCPROCFARASSUMECS:MY_CODE, DS:MY_DATA,SS:MY_STACKMAIN:.386 ;386 模式編譯MOVAX,MY_DATAMOVDS,AXMOVES,AXMOVAX,MY_STACKMOVSS,AXCALL FINDPCI; 自動(dòng)查找 PCI 卡資源及 IO 口基址MOVCX,word ptr IO_base_address;MOVCX,0E800H; 直接加入 (E800: 本機(jī) PCI 卡 IO 口基址 )ADDP8254_T0,CX;PCI 卡 IO 基址 +偏移AD

17、DP8254_T1,CXADDP8254_T2,CXADDP8254_MODE,CXADDP8255_A,CX;PCI 卡 IO 基址 +偏移ADDP8255_B,CXADDP8255_C,CXADDP8255_MODE,CXMOVDX,P8254_MODE; 寫入方式控制字MOVAL,37H; 計(jì)數(shù)器 0, 先讀寫低位,后讀寫高位,OUTDX,AL; 方式 3, BCD碼計(jì)數(shù)MOV AH, 4CHINT21HA1:MOVDX,P8254_T0MOVAL,32H;初值低 8位OUTDX,ALMOVAL,00H;初值高 8位OUTDX,ALMY_PROCENDp;*;/* 按任意鍵退出 */;*

18、;*;/*找卡子程序 */;*;FUNCTION CODEIO_port_addreEQU 0CF8H;32 位配置地址端口IO_port_dataEQU 0CFCH;32 位配置數(shù)據(jù)端口IO_PLX_IDEQU 200810B5H;PCI 卡設(shè)備及廠商 IDBADR0=10H; 基地址寄存器 0BADR1=14H; 基地址寄存器 1BADR2=18H; 基地址寄存器2BADR3=1CH; 基地址寄存器3FINDPCI PROCNEAR; 查找 PCI 卡資源并顯示PUSHADPUSHFDMOVEBX,080000000HFINDPCI_next:ADDEBX,100HCMPEBX,08100

19、0000HJNZfindpci_continueMOVDX,offset pcicardnotfind; 顯示未找到 PCI 卡提示信息MOVAH,09HINT21HMOVAH,4CHINT21H; 退出findpci_continue:MOV DX,IO_port_addreMOV EAX,EBXOUT DX,EAX; 寫地址口MOV DX,IO_port_dataINEAX,DX; 讀數(shù)據(jù)口CMPEAX,IO_PLX_IDJNZfindpci_next; 檢查是否發(fā)現(xiàn)PCI 卡MOVDX,IO_port_addreMOV EAX,EBXADD EAX,BADR1OUT DX,EAX; 寫地

20、址口MOV DX,IO_port_dataINEAX,DX; 讀數(shù)據(jù)口MOVdword ptr IO_9054base_address,EAXANDEAX,1JZfindPCI_next; 檢查是否為 i/o基址信息MOV EAX,dword ptr IO_9054base_addressANDEAX,0fffffffehMOVdword ptr IO_9054base_address,EAX; 去除 i/o 指示位并保存MOVDX,IO_port_addreMOVEAX,EBXADDEAX,BADR2OUTDX,EAX; 寫地址口MOVDX,IO_port_dataINEAX,DX; 讀數(shù)據(jù)

21、口MOVdword ptr IO_base_address,EAXANDEAX,1JZfindPCI_next; 檢查是否為 i/o基址信息MOVEAX,dword ptr IO_base_addressANDEAX,0fffffffehMOVdword ptr IO_base_address,EAX; 去除 i/o 指示位并保存MOVDX,offset good; 顯示開始執(zhí)行程序信息MOVAH,09HINT21HPOPfdPOPadRETfindPCIENDPMY_CODEENDSENDMAIN實(shí)驗(yàn)四可編程并行接口8255 實(shí)驗(yàn)一、實(shí)驗(yàn)內(nèi)容(1) 流水燈實(shí)驗(yàn):利用 8255 的 A 口、

22、B 口循環(huán)點(diǎn)亮發(fā)光二極管。二、實(shí)驗(yàn)說明圖 6-3-1 8255方式 1 的狀態(tài)字圖 6-3-2 8255方式 2 的狀態(tài)字1. 8255A 的內(nèi)部結(jié)構(gòu)1) 數(shù)據(jù)總線緩沖器:這是一個(gè)雙向三態(tài)的8 位數(shù)據(jù)緩沖器, 它是 8255A 與微機(jī)系統(tǒng)數(shù)據(jù)總線的接口。輸入輸出的數(shù)據(jù)、CPU輸出的控制字以及CPU輸入的狀態(tài)信息都是通過這個(gè)緩沖器傳送的。2) 三個(gè)端口 A,B 和 C:A 端口包含一個(gè)8 位數(shù)據(jù)輸出鎖存器和緩沖器,一個(gè) 8 位數(shù)據(jù)輸入鎖存器。 B 端口包含一個(gè)8 位數(shù)據(jù)輸入 / 輸出鎖存器和緩沖器,一個(gè)8 位數(shù)據(jù)輸入緩沖器。 C端口包含一個(gè)8 位數(shù)據(jù)輸出鎖存器及緩沖器,一個(gè)8 位數(shù)據(jù)輸入緩沖器(

23、輸入沒有鎖存器)。3) A 組和 B 組控制電路:這是兩組根據(jù)CPU輸出的控制字控制8255 工作方式的電路,它們對(duì)于 CPU而言,共用一個(gè)端口地址相同的控制字寄存器,接收 CPU輸出的一字節(jié)方式控制字或?qū) 口按位復(fù)位字命令。方式控制字的高5 位決定 A 組工作方式, 低 3 位決定B 組的工作方式。對(duì)C 口按位復(fù)位命令字可對(duì)C口的每一位實(shí)現(xiàn)置位或復(fù)位。A 組控制電路控制A 口和C 口上半部,B 組控制電路控制B 口和C 口下半部。4) 讀寫控制邏輯: 用來控制把CPU輸出的控制字或數(shù)據(jù)送至相應(yīng)端口,也由它來控制把狀態(tài)信息或輸入數(shù)據(jù)通過相應(yīng)的端口送到CPU。2. 8255A 的工作方式方式

24、0基本輸入輸出方式;方式 1選通輸入輸出方式;方式 2雙向選通輸入輸出方式。3. 8255A 的狀態(tài)字圖 6-3-1 8255方式 1 的狀態(tài)字圖 6-3-2 8255方式 2 的狀態(tài)字4. 8255A 的控制字表 6-3-3 8255A 方式控制字1D6D5D4D3D2D1D0特A 組方式A 口C口高 4位B 組方式B 口C口低 4位征00=方式 001= 方式 10=輸出0=輸出0=方式 00=輸出0=輸出位1X=方式 21=輸入1=輸入1=方式 11=輸入1=輸入表 6-3-4按位置位 / 復(fù)位控制字0D6D5D4D3D2D1D0特征位不用位選擇0=復(fù)位000=C口 0 位 111=C

25、口 7 位1=置位三、實(shí)驗(yàn)原理圖圖 6-3-5可編程并行接口8255 電路四、實(shí)驗(yàn)步驟1、流水燈實(shí)驗(yàn)(1) 實(shí)驗(yàn)連線該模塊的 WR、RD分別連到 ISA 總線接口模塊的IOWR、IORD。該模塊的數(shù)據(jù) ( AD0AD7)、地址線( A0A7)分別連到ISA 總線接口模塊的數(shù)據(jù)(LD0LD7)、地址線( LA0LA7)。8255模塊選通線 CE連到 ISA 總線接口模塊的 0000H。8255的 PA0 PA7連到發(fā)光二極管的 L0 L7;8255 的 PB0 PB7 連到發(fā)光二極管的L8 L15。(2) 運(yùn)行程序,觀察發(fā)光二極管。圖 6-3-6流水燈實(shí)驗(yàn)實(shí)驗(yàn)四可編程定時(shí)器 / 計(jì)數(shù)器 8254

26、 實(shí)驗(yàn)一實(shí)驗(yàn)?zāi)康?. 掌握 8254 定時(shí) / 計(jì)數(shù)器的編程方法。2. 學(xué)習(xí) 8254 的幾種工作方式。3. 了解計(jì)數(shù)器的硬件連接及時(shí)序關(guān)系。二實(shí)驗(yàn)內(nèi)容1.將 32Hz 的晶振頻率作為8254 的時(shí)鐘輸入,利用定時(shí)器8254產(chǎn)生 1Hz的方波,用發(fā)光二極管顯示輸出結(jié)果(發(fā)光二極管閃爍)。三、實(shí)驗(yàn)原理1.8254 工作原理8254 是一種可編程的定時(shí)器/ 計(jì)數(shù)器芯片,它具有3 個(gè)獨(dú)立的16 位計(jì)數(shù)器通道,每個(gè)計(jì)數(shù)器都可以按照二進(jìn)制或二- 十進(jìn)制計(jì)數(shù),每個(gè)計(jì)數(shù)器都有6 種工作方式,計(jì)數(shù)頻率可高達(dá) 24MHz,芯片所有的輸入輸出都與TTL 兼容。計(jì)數(shù)器都有6 種工作方式: 方式 0計(jì)數(shù)過程結(jié)束時(shí)中斷

27、;方式 1可編程的單拍脈沖;方式 2頻率發(fā)生器;方式 3方波發(fā)生器;方式 4軟件觸發(fā);方式5硬件觸發(fā)。 6 種工作方式主要有 5 點(diǎn)不同: 一是啟動(dòng)計(jì)數(shù)器的觸發(fā)方式和時(shí)刻不同; 二是計(jì)數(shù)過程中門控信號(hào)GATE對(duì)計(jì)數(shù)操作的影響不同;三是 OUT輸出的波形不同;四是在計(jì)數(shù)過程中重新寫入計(jì)數(shù)初值對(duì)計(jì)數(shù)過程的影響不同; 五是計(jì)數(shù)過程結(jié)束, 減法計(jì)數(shù)器是否恢復(fù)計(jì)數(shù)初值并自動(dòng)重復(fù)計(jì)數(shù)過程的不同。8254 管腳圖:圖 3-3-1可編程定時(shí)器 / 計(jì)數(shù)器 8254 管腳圖2. 8254 工作方式和編程根據(jù)片選信號(hào)CS及地址線A1、A0,8254 具有四個(gè)端口地址。當(dāng)A1A0=00時(shí),選中的為0通道計(jì)數(shù)器;A1

28、A0=01時(shí),選中的為1 通道計(jì)數(shù)器;A1A0 為 10時(shí),選中的為2 通道計(jì)數(shù)器;A1A0=11 時(shí),選中控制字寄存器。8253 通道及操作地址分配如下表所示:CSRDWRA1A0操作00100讀計(jì)數(shù)器 000101讀計(jì)數(shù)器 100110讀計(jì)數(shù)器 200111無操作(禁止讀)01000計(jì)數(shù)常數(shù)寫入計(jì)數(shù)器001001計(jì)數(shù)常數(shù)寫入計(jì)數(shù)器101010計(jì)數(shù)常數(shù)寫入計(jì)數(shù)器201011寫入方式控制字1XXXX禁止(三態(tài))011XX不操作通過對(duì)控制字符寄存器寫入控制字可設(shè)定8254 的某一個(gè)通道的六種工作方式,其格式如下:D7D6D5D4D3D2D1D0SC1SC0RL1RL0M2M1M0BCDSC、 S

29、C 用來選擇計(jì)數(shù)器通道:10SC1SC0選擇通道00選中 0 通道計(jì)數(shù)器01選中 1 通道計(jì)數(shù)器10選中 2 通道計(jì)數(shù)器11非法RL1、 RL0 用來選擇讀計(jì)數(shù)值及向計(jì)數(shù)器送入數(shù)據(jù)的方式:RL1RL0讀 / 輸入選擇00計(jì)數(shù)器鎖存01只讀 / 輸入低字節(jié)10只讀 / 輸入高字節(jié)11先讀 / 輸入低字節(jié),后讀 / 輸入高字節(jié)M2、 M1、 M0 用來選擇工作方式:M2M1M0工作方式000方式0001方式 1X10方式 2X11方式 3100方式 4101方式 5BCD用來選擇二進(jìn)制計(jì)數(shù)及十進(jìn)制計(jì)數(shù)。當(dāng)此位為 0 時(shí),為 16 位二進(jìn)制計(jì)數(shù)器;當(dāng)此位為1 時(shí),為 4 位二 - 十進(jìn)制計(jì)數(shù)器。方式

30、 0 為計(jì)數(shù)結(jié)束申請(qǐng)中斷的方式。當(dāng)方式控制字寫入后,輸出為低電平。 在寫入計(jì)數(shù)值后, 計(jì)數(shù)器開始計(jì)數(shù)。計(jì)數(shù)器減到0 后,輸出變?yōu)楦唠娖?,此高電平信?hào)一直維持到寫入新的控制字, 或?qū)懭胄碌挠?jì)數(shù)值為止。此時(shí)可利用計(jì)數(shù)到0 時(shí),輸出由低電平變?yōu)楦唠娖降男盘?hào)申請(qǐng)中斷。 如果在計(jì)數(shù)過程中寫入新的計(jì)數(shù)值,則在寫入第一個(gè)字節(jié)時(shí)中止計(jì)數(shù),寫入第二個(gè)字節(jié)時(shí)啟動(dòng)新的計(jì)數(shù)。方式 1 為單脈沖發(fā)生方式。輸出的負(fù)脈沖寬度由計(jì)數(shù)值決定。在設(shè)定工作方式和寫入計(jì)數(shù)值之后, 輸出為高電平。門控信號(hào)的上升沿使輸出變?yōu)榈碗娖?,并開始計(jì)數(shù)。當(dāng)計(jì)數(shù)結(jié)束時(shí),輸出為高電平,當(dāng)門控信號(hào)為高電平時(shí),計(jì)數(shù)器從最初計(jì)數(shù)值啟動(dòng)。由于計(jì)數(shù)器寫入控制字

31、后輸出為高電平,當(dāng)寫入計(jì)數(shù)值后才開始并輸出脈沖,因此也可通過寫入計(jì)數(shù)值來實(shí)現(xiàn)軟件同步。方式 3 為方波發(fā)生方式。類似于方式2,當(dāng)計(jì)數(shù)值為偶數(shù)時(shí),前N/2 為高電平,后N/2為低電平。當(dāng)計(jì)數(shù)值為奇數(shù)時(shí),則(N+1) /2 為高電平,( N-1) /2 為低電平。方式 4 為軟件觸發(fā)脈沖方式。在寫入控制字后, 輸出為高電平, 寫入計(jì)數(shù)值后開始計(jì)數(shù)。計(jì)數(shù)結(jié)束產(chǎn)生一個(gè)負(fù)脈沖,寬度為一個(gè)時(shí)鐘周期。計(jì)數(shù)期間若寫入新的計(jì)數(shù)值,不影響當(dāng)前周期,但影響下一個(gè)計(jì)數(shù)周期。在計(jì)數(shù)期間如門控信號(hào)變?yōu)榈碗娖?,?jì)數(shù)停止。方式 5 為硬件觸發(fā)選通方式。寫入控制字和計(jì)數(shù)值后,輸出保持高電平,在門控信號(hào)的上升沿開始計(jì)數(shù),計(jì)數(shù)結(jié)束

32、產(chǎn)生一個(gè)時(shí)鐘周期的負(fù)脈沖。在計(jì)數(shù)過程中可重新啟動(dòng),在門控信號(hào)的上升沿重新計(jì)數(shù)。3 8254 編程方法對(duì) 8254 的編程分兩部分:( 1)向控制字寄存器寫入方式控制字。( 2)向規(guī)定的通道寫入計(jì)數(shù)值。在寫入計(jì)數(shù)值時(shí),應(yīng)向設(shè)定的通道寫入。而且必須按控制字所規(guī)定的一個(gè)或兩個(gè)字節(jié)的計(jì)數(shù)長度寫入。由于在 8254 內(nèi)部每個(gè)計(jì)數(shù)器均有自己的方式控制字寄存器,因此在寫入控制字及計(jì)數(shù)值時(shí)不一定按0 通道、 1 通道、 2 通道的次序,而可按編程時(shí)的方便來決定。在將8254 作為計(jì)數(shù)器時(shí),可以在計(jì)數(shù)過程中將計(jì)數(shù)值讀出來。讀數(shù)時(shí)可按控制字規(guī)定的方式向該通道/ 讀出一個(gè)字節(jié)或兩個(gè)字節(jié)的計(jì)數(shù)值。為保證讀數(shù)的正確性,

33、可通過門控信號(hào)使其停止計(jì)數(shù),或控制外部脈沖源禁止輸入??刂频牧硪粋€(gè)辦法是向控制字寄存器寫入一鎖存計(jì)數(shù)值的命令,使當(dāng)前的計(jì)數(shù)值鎖存下來。然后用讀通計(jì)數(shù)值的方法將其讀出。鎖存計(jì)數(shù)操作的格式如下:SC1SC000xxxxSC1、 SC0 用來指定被鎖存的計(jì)數(shù)器,分別為00、 01、10。四、源代碼MY_STACKSEGMENT PARA 'STACK'DB100 DUP(?)MY_STACKENDSMY_DATA SEGMENT PARA 'DATA'IO_9054base_address DB 4 DUP(0);PCI 卡 9054 芯片 I/O 基地址暫存空間IO

34、_base_address DB 4 DUP(0);PCI 卡 I/O基地址暫存空間pcicardnotfindDB0DH,0AH,'pcicardnotfindoraddress/interrupterror !',0DH,0AH,'$'GOODDB 0DH,0AH,'The Program is Executing !',0DH,0AH,'$'P8254_T0DW0000HP8254_T1DW0001HP8254_T2DW0002HP8254_MODEDW0003HP8255_ADW0020HP8255_BDW0021HP82

35、55_CDW0022HP8255_MODEDW0023HMY_DATA ENDsMY_CODE SEGMENT PARA 'CODE'MY_PROCPROCFARASSUMECS:MY_CODE,DS:MY_DATA,SS:MY_STACKMAIN:.386 ;386模式編譯MOVAX,MY_DATAMOVDS,AXMOVES,AXMOVAX,MY_STACKMOVSS,AXCALL FINDPCI; 自動(dòng)查找 PCI 卡資源及 IO 口基址MOVCX,word ptr IO_base_address;MOVCX,0E800H; 直接加入 (E800: 本機(jī) PCI 卡 IO

36、口基址 )ADDP8254_T0,CX;PCI 卡 IO 基址 +偏移ADDP8254_T1,CXADDP8254_T2,CXADDP8254_MODE,CXADDP8255_A,CX;PCI 卡 IO 基址 +偏移ADDP8255_B,CXADDP8255_C,CXADDP8255_MODE,CXMOVMOVDX,P8254_MODE AL,37H; 寫入方式控制字; 計(jì)數(shù)器 0, 先讀寫低位,后讀寫高位,OUTDX,AL; 方式3, BCD碼計(jì)數(shù)MOV AH, 4CHINT21HA1:MOVDX,P8254_T0MOVAL,32H;初值低 8位OUTDX,ALMOVAL,00H;初值高 8位OUTDX,ALMY_PROCENDp;*;/* 按任意鍵退出 */;*;*;/*找卡子程序*/;*;FUNCTION CODEIO_port_addreEQU 0CF8H;32 位配置地址端口IO_port_dataEQU 0CFCH;32 位配置數(shù)據(jù)端口IO_PLX_IDEQU 200810B5H;PCI 卡設(shè)備及廠商 IDBADR0=10H; 基地址寄存器 0BADR1=14H; 基地址寄存器 1BADR2=18H; 基地址寄存器 2BADR3=1CH; 基地址寄存器 3FINDPCI PROCNEAR; 查找

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論