匯編實驗報告_第1頁
匯編實驗報告_第2頁
匯編實驗報告_第3頁
匯編實驗報告_第4頁
匯編實驗報告_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

3、3.循環(huán)從鍵盤讀入字符并回顯在屏幕上,然后顯示出對應(yīng)字符的ASCII 碼,直到輸入” Q”或“ q”時結(jié)束。歡迎下載2精品文庫四、實驗原理DATASEGMENTMESDB'NUMBER:03099018 ',0AH,0DH,'NAME:FengXiaokang',0AH,0DH,'$'CENTDB'Let us go !','$'ENTEDB0AH,0DH,'$'INFODB 'Origin: ','$'ASCIDB 'ASCII : ','$

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

5、T CENTMOV SI, DXT:MOV AL,SICMP AL,'$'JZ C1ANDAL,0F0H;取高 4位MOVCL,4SHRAL,CLCMPAL,0AH; 是否是 A 以上的數(shù)JBAADDAL,07HA:ADDAL,30HMOVDL,AL;show characterMOVAH,02HINT21H歡迎下載3精品文庫;MOVAL,DS:SIMOVAL, SIANDAL,0FH;取低 4位CMPAL,0AHJBBADD AL,07HB:ADDAL,30HMOVDL,ALMOVAH,02HINT21HINCSILOOP TC1:MOV DX,OFFSET MSG2MOV

6、AH,09HINT21HMOVAH,01hINT21hCMP 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,0

7、AHJBC3ADD AL,07HC3:ADDAL,30HMOVDL,ALMOVAH,02HINT21HLOOP C1C:MOVDX,OFFSET MSG1MOVAH,09HINT21HLOP:MOVAH,08HINT21HCMPAL,'Q'JEexit歡迎下載4精品文庫CMP AL,'q'JEexitJMPLOPEXIT:MOVAX,4C00H;go back to dosINT21HCODEENDSendSTART五、實驗流程圖六、實驗總結(jié)這是我學(xué)習(xí)匯編以來,第一次用匯編寫程序,費了我不只一個實驗課時,糾結(jié)了不只一天。同樣是助記碼,真的不懂如何組織的。郁悶之下

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

9、輸入 33062. 結(jié)果 0CEA3. 輸入一個較大的數(shù) 655374. 顯示 456A65. 輸入非法值歡迎下載6精品文庫五、實驗原理圖源代碼: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 inpu

10、ting "q" or "Q"',0AH,0DH,'$'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' 退出JEEXITCM

11、PAL,'q'JEEXITCMP AL,030h; 非數(shù)字jlerrorscmpAL,039hjgerrorsSUBAL,30H; 運算pushAXmovAX,BXmovDX,0000AHmulDXmovBX,AXpopAXaddBL,ALCMPBX,00HJZZEROjmpinputerrors:MOVDX,OFFSET ERRORMOVAH,09HINT21HMOVBX,0HjmpinputZERO:MOV CL,4JMPLOOPSchange:CMPBX,00HJZERRORSMOV CL,4loops:MOV DX,BXAND DX,0F000HSHRDX,12; 是否

12、是 A 以上的數(shù)CMPDX,0AHJLC2ADDDX,07HC2:ADDDX,30H;show chArActerMOVAH,02HINT21H歡迎下載7精品文庫SHLBX,4LOOPloopsMOV DX,OFFSET XPMOV AH,09HINT21HJMPINPUTEXIT:MOVAX,4C00HINT21HCODEENDSEND START原理十進制數(shù)可以表示為:nnn-1*10n-100i*10iD *10 +D+ +D*10 =D其中 D 代表十進制數(shù)1、 2、3、 、 9、 0。i上式可以轉(zhuǎn)換為:Din) *10+ D)*10+ + D)*10+ D*10 =( D*10+Dn

13、-20inn-11由上式可歸納出十進制數(shù)轉(zhuǎn)換為二進制數(shù)的方法:從二進制數(shù)的最高位D 開始做乘 10n加次位的操作。依此類推,則可求出二進制數(shù)結(jié)果。數(shù)碼轉(zhuǎn)換對應(yīng)關(guān)系十六進制BCD 碼二進制機器碼ASCII碼七段碼共陽共陰00000000030H40H3FH10001000131H79H06H20010001032H24H5BH30011001133H30H4FH40100010034H19H66H50101010135H12H6DH60110011036H02H7DH70111011137H78H07H81000100038H00H7FH91001100139H18H67HA10141H08H7

14、7HB101142H03H7CHC110043H46H39HD110144H21H5EHE111045H06H79HF111146H0EH71H歡迎下載8精品文庫七、實驗總結(jié)(體會)當匯編與算法結(jié)合在一起的時候, 意味著難度又上升了一個層次。 這是一個常見的進制轉(zhuǎn)換程序, 除了要處理數(shù)制問題, 題目中不超過 5 位的要求也要注意, 因為會存在溢出問題。三、源代碼:MY_STACK SEGMENT PARA 'STACK'DB100 DUP(?)MY_STACK ENDSMY_DATASEGMENT PARA 'DATA'IO_9054base_address D

15、B 4 DUP(0);PCI 卡 9054 芯片 I/O 基地址暫存空間IO_base_addressDB 4 DUP(0);PCI 卡 I/O 基地址暫存空間歡迎下載9精品文庫pcicardnotfindDB0DH,0AH,'pcicardnotfindoraddress/interrupterror !',0DH,0AH,'$'GOODDB 0DH,0AH,'The Program is Executing !',0DH,0AH,'$'P8254_T0DW0000HP8254_T1DW0001HP8254_T2DW0002HP

16、8254_MODEDW0003HP8255_ADW0020HP8255_BDW0021HP8255_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; 自動查找 PCI 卡資源及 IO 口基址MOVCX,word ptr IO_ba

17、se_address;MOVCX,0E800H; 直接加入 (E800: 本機 PCI 卡 IO 口基址 )ADDP8254_T0,CX;PCI 卡 IO 基址 +偏移ADDP8254_T1,CXADDP8254_T2,CXADDP8254_MODE,CXADDP8255_A,CX;PCI 卡 IO 基址 +偏移ADDP8255_B,CXADDP8255_C,CXADDP8255_MODE,CXMOVDX,P8254_MODE; 寫入方式控制字MOVAL,37H; 計數(shù)器 0, 先讀寫低位,后讀寫高位,OUTDX,AL; 方式 3, BCD碼計數(shù)MOV AH, 4CHINT21HA1:MOVD

18、X,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; 基地址寄存器 2歡迎下載10精品文庫BADR3=1CH; 基地址寄存器

19、3FINDPCI PROCNEAR; 查找 PCI 卡資源并顯示PUSHADPUSHFDMOVEBX,080000000HFINDPCI_next:ADDEBX,100HCMPEBX,081000000HJNZfindpci_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ù)口CMPE

20、AX,IO_PLX_IDJNZfindpci_next; 檢查是否發(fā)現(xiàn)PCI 卡MOVDX,IO_port_addreMOV EAX,EBXADD EAX,BADR1OUT DX,EAX; 寫地址口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; 去除

21、i/o 指示位并保存MOVDX,IO_port_addreMOVEAX,EBXADDEAX,BADR2OUTDX,EAX; 寫地址口MOVDX,IO_port_dataINEAX,DX; 讀數(shù)據(jù)口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,09

22、HINT21HPOPfdPOPadRETfindPCIENDPMY_CODEENDSENDMAIN實驗四可編程并行接口8255 實驗一、實驗內(nèi)容(1) 流水燈實驗:利用 8255 的 A 口、 B 口循環(huán)點亮發(fā)光二極管。歡迎下載11精品文庫二、實驗說明1. 8255A 的內(nèi)部結(jié)構(gòu)圖 6-3-1 8255方式 1 的狀態(tài)字圖 6-3-2 8255方式 2 的狀態(tài)字1) 數(shù)據(jù)總線緩沖器:這是一個雙向三態(tài)的8 位數(shù)據(jù)緩沖器, 它是 8255A 與微機系統(tǒng)數(shù)據(jù)總線的接口。輸入輸出的數(shù)據(jù)、CPU輸出的控制字以及CPU輸入的狀態(tài)信息都是通過這個緩沖器傳送的。2) 三個端口 A,B 和 C:A 端口包含一個

23、8 位數(shù)據(jù)輸出鎖存器和緩沖器,一個 8 位數(shù)據(jù)輸入鎖存器。 B 端口包含一個8 位數(shù)據(jù)輸入 / 輸出鎖存器和緩沖器,一個8 位數(shù)據(jù)輸入緩沖器。 C端口包含一個8 位數(shù)據(jù)輸出鎖存器及緩沖器,一個8 位數(shù)據(jù)輸入緩沖器(輸入沒有鎖存器)。3) A 組和 B 組控制電路:這是兩組根據(jù)CPU輸出的控制字控制8255 工作方式的電路,它們對于 CPU而言,共用一個端口地址相同的控制字寄存器,接收 CPU輸出的一字節(jié)方式控制字或?qū) 口按位復(fù)位字命令。方式控制字的高5 位決定 A 組工作方式, 低 3 位決定B 組的工作方式。對C 口按位復(fù)位命令字可對C口的每一位實現(xiàn)置位或復(fù)位。A 組控制電路控制 A 口和

24、 C 口上半部, B 組控制電路控制B 口和 C 口下半部。4) 讀寫控制邏輯: 用來控制把CPU輸出的控制字或數(shù)據(jù)送至相應(yīng)端口,也由它來控制把狀態(tài)信息或輸入數(shù)據(jù)通過相應(yīng)的端口送到CPU。2. 8255A 的工作方式方式 0基本輸入輸出方式;方式1選通輸入輸出方式;方式2雙向選通輸入輸出方式。歡迎下載12精品文庫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=

25、方式 10=輸出0=輸出0=方式 00=輸出0=輸出位1X=方式 21=輸入1=輸入1=方式 11=輸入1=輸入表 6-3-4按位置位 / 復(fù)位控制字0D6D5D4D3D2D1D0特征位不用位選擇0=復(fù)位000=C口 0 位 111=C 口 7 位1=置位三、實驗原理圖圖 6-3-5可編程并行接口8255 電路歡迎下載13精品文庫四、實驗步驟1、流水燈實驗(1) 實驗連線該模塊的 WR、RD分別連到 ISA 總線接口模塊的IOWR、IORD。該模塊的數(shù)據(jù) ( AD0AD7)、地址線( A0A7)分別連到ISA 總線接口模塊的數(shù)據(jù)(LD0LD7)、地址線( LA0LA7)。8255模塊選通線 C

26、E連到 ISA 總線接口模塊的 0000H。8255的 PA0 PA7連到發(fā)光二極管的 L0 L7;8255 的 PB0 PB7 連到發(fā)光二極管的L8 L15。(2) 運行程序,觀察發(fā)光二極管。圖 6-3-6流水燈實驗歡迎下載14精品文庫實驗四可編程定時器 / 計數(shù)器 8254 實驗一實驗?zāi)康?. 掌握 8254 定時 / 計數(shù)器的編程方法。2. 學(xué)習(xí) 8254 的幾種工作方式。3. 了解計數(shù)器的硬件連接及時序關(guān)系。二實驗內(nèi)容1.將 32Hz 的晶振頻率作為8254 的時鐘輸入,利用定時器8254產(chǎn)生 1Hz的方波,用發(fā)光二極管顯示輸出結(jié)果(發(fā)光二極管閃爍)。三、實驗原理1.8254 工作原理

27、8254 是一種可編程的定時器/ 計數(shù)器芯片,它具有3 個獨立的16 位計數(shù)器通道,每個計數(shù)器都可以按照二進制或二- 十進制計數(shù),每個計數(shù)器都有6 種工作方式,計數(shù)頻率可高達 24MHz,芯片所有的輸入輸出都與TTL 兼容。計數(shù)器都有6 種工作方式: 方式 0計數(shù)過程結(jié)束時中斷;方式 1可編程的單拍脈沖;方式 2頻率發(fā)生器;方式 3方波發(fā)生器;方式 4軟件觸發(fā);方式5硬件觸發(fā)。 6 種工作方式主要有5 點不同: 一是啟動計數(shù)器的觸發(fā)方式和時刻不同;二是計數(shù)過程中門控信號GATE對計數(shù)操作的影響不同;三是OUT輸出的波形不同;四是在計數(shù)過程中重新寫入計數(shù)初值對計數(shù)過程的影響不同; 五是計數(shù)過程結(jié)

28、束, 減法計數(shù)器是否恢復(fù)計數(shù)初值并自動重復(fù)計數(shù)過程的不同。8254 管腳圖:圖 3-3-1可編程定時器 / 計數(shù)器 8254 管腳圖2. 8254 工作方式和編程根據(jù)片選信號CS及地址線A1、A0,8254 具有四個端口地址。當A1A0=00 時,選中的為0通道計數(shù)器; A1A0=01 時,選中的為1 通道計數(shù)器;A1A0 為 10 時,選中的為2 通道計數(shù)器;歡迎下載15精品文庫A1A0=11 時,選中控制字寄存器。8253 通道及操作地址分配如下表所示:CSRDWRA1A0操作00100讀計數(shù)器 000101讀計數(shù)器 100110讀計數(shù)器 200111無操作(禁止讀)01000計數(shù)常數(shù)寫入

29、計數(shù)器001001計數(shù)常數(shù)寫入計數(shù)器101010計數(shù)常數(shù)寫入計數(shù)器201011寫入方式控制字1XXXX禁止(三態(tài))011XX不操作通過對控制字符寄存器寫入控制字可設(shè)定8254 的某一個通道的六種工作方式,其格式如下:D7D6D5D4D3D2D1D0SC1SC0RL1RL0M2M1M0BCDSC、 SC 用來選擇計數(shù)器通道:10SC1SC0選擇通道00選中 0 通道計數(shù)器01選中 1 通道計數(shù)器10選中 2 通道計數(shù)器11非法RL1、 RL0 用來選擇讀計數(shù)值及向計數(shù)器送入數(shù)據(jù)的方式:RL1RL0讀 / 輸入選擇00計數(shù)器鎖存01只讀 / 輸入低字節(jié)10只讀 / 輸入高字節(jié)11先讀 / 輸入低字

30、節(jié),后讀 / 輸入高字節(jié)M、 M、 M 用來選擇工作方式:210M2M1M0工作方式000方式 0歡迎下載16精品文庫001方式 1X10方式 2X11方式 3100方式 4101方式 5BCD用來選擇二進制計數(shù)及十進制計數(shù)。當此位為 0 時,為 16 位二進制計數(shù)器;當此位為1 時,為 4 位二 - 十進制計數(shù)器。方式 0 為計數(shù)結(jié)束申請中斷的方式。當方式控制字寫入后,輸出為低電平。 在寫入計數(shù)值后, 計數(shù)器開始計數(shù)。計數(shù)器減到0 后,輸出變?yōu)楦唠娖?,此高電平信號一直維持到寫入新的控制字, 或?qū)懭胄碌挠嫈?shù)值為止。此時可利用計數(shù)到0 時,輸出由低電平變?yōu)楦唠娖降男盘柹暾堉袛唷?如果在計數(shù)過程中

31、寫入新的計數(shù)值,則在寫入第一個字節(jié)時中止計數(shù),寫入第二個字節(jié)時啟動新的計數(shù)。方式 1 為單脈沖發(fā)生方式。輸出的負脈沖寬度由計數(shù)值決定。在設(shè)定工作方式和寫入計數(shù)值之后, 輸出為高電平。門控信號的上升沿使輸出變?yōu)榈碗娖?,并開始計數(shù)。當計數(shù)結(jié)束時,輸出為高電平,當門控信號為高電平時,計數(shù)器從最初計數(shù)值啟動。由于計數(shù)器寫入控制字后輸出為高電平,當寫入計數(shù)值后才開始并輸出脈沖,因此也可通過寫入計數(shù)值來實現(xiàn)軟件同步。方式 3 為方波發(fā)生方式。類似于方式2,當計數(shù)值為偶數(shù)時,前N/2 為高電平,后N/2為低電平。當計數(shù)值為奇數(shù)時,則(N+1) /2 為高電平,( N-1) /2 為低電平。方式 4 為軟件觸

32、發(fā)脈沖方式。在寫入控制字后, 輸出為高電平, 寫入計數(shù)值后開始計數(shù)。計數(shù)結(jié)束產(chǎn)生一個負脈沖,寬度為一個時鐘周期。計數(shù)期間若寫入新的計數(shù)值,不影響當前周期,但影響下一個計數(shù)周期。在計數(shù)期間如門控信號變?yōu)榈碗娖?,計?shù)停止。方式 5 為硬件觸發(fā)選通方式。寫入控制字和計數(shù)值后,輸出保持高電平,在門控信號的上升沿開始計數(shù),計數(shù)結(jié)束產(chǎn)生一個時鐘周期的負脈沖。在計數(shù)過程中可重新啟動,在門控信號的上升沿重新計數(shù)。3 8254 編程方法對 8254 的編程分兩部分:( 1)向控制字寄存器寫入方式控制字。( 2)向規(guī)定的通道寫入計數(shù)值。在寫入計數(shù)值時,應(yīng)向設(shè)定的通道寫入。而且必須按控制字所規(guī)定的一個或兩個字節(jié)的計

33、數(shù)長度寫入。由于在 8254 內(nèi)部每個計數(shù)器均有自己的方式控制字寄存器,因此在寫入控制字及計數(shù)值時不一定按0 通道、 1 通道、 2 通道的次序,而可按編程時的方便來決定。在將8254 作為歡迎下載17精品文庫計數(shù)器時,可以在計數(shù)過程中將計數(shù)值讀出來。讀數(shù)時可按控制字規(guī)定的方式向該通道/ 讀出一個字節(jié)或兩個字節(jié)的計數(shù)值。為保證讀數(shù)的正確性,可通過門控信號使其停止計數(shù),或控制外部脈沖源禁止輸入。控制的另一個辦法是向控制字寄存器寫入一鎖存計數(shù)值的命令,使當前的計數(shù)值鎖存下來。然后用讀通計數(shù)值的方法將其讀出。鎖存計數(shù)操作的格式如下:SC1SC000xxxxSC1、 SC0 用來指定被鎖存的計數(shù)器,分

34、別為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_base_address DB 4 DUP(0);PCI 卡 I/O基地址暫存空間pcicardnotfindDB0DH,0AH,'pcicardnotfindoraddress/interrupterror !',0DH,0AH,'

35、;$'GOODDB 0DH,0AH,'The Program is Executing !',0DH,0AH,'$'P8254_T0DW0000HP8254_T1DW0001HP8254_T2DW0002HP8254_MODEDW0003HP8255_ADW0020HP8255_BDW0021HP8255_CDW0022HP8255_MODEDW0023HMY_DATA ENDsMY_CODE SEGMENT PARA 'CODE'MY_PROCPROCFARASSUMECS:MY_CODE,DS:MY_DATA,SS:MY_STACKM

36、AIN:.386 ;386模式編譯MOVAX,MY_DATAMOVDS,AXMOVES,AXMOVAX,MY_STACKMOVSS,AXCALL FINDPCI; 自動查找 PCI 卡資源及 IO 口基址MOVCX,word ptr IO_base_address;MOVCX,0E800H; 直接加入 (E800: 本機 PCI 卡 IO 口基址 )ADDP8254_T0,CX;PCI 卡 IO 基址 +偏移ADDP8254_T1,CXADDP8254_T2,CXADDP8254_MODE,CXADDP8255_A,CX;PCI 卡 IO 基址 +偏移ADDP8255_B,CXADDP8255_C,CX歡迎下載18精品文庫ADDP8255_MODE,CXMOVDX,P8254_MODE; 寫入方式控制字MOVAL,37H; 計數(shù)器 0, 先讀寫低位,后讀寫高位,OUTDX,AL; 方式 3, BCD碼計數(shù)MOV AH, 4CHINT21HA1:MOVDX,P8254_T0MOVAL,32H;初值低 8位OUTDX,ALMOVA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論