




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、摘 要隨著現代社會的發展,電子技術的進步我們有目共睹,計算機是現代電子技術的成果。在現實生活中、科學研究中計算機起著越來越重要的作用。微型計算機原理這門課程是對計算機進一步的了解與接觸,微型計算機原理是一門培養計算機應用能力的技術基礎課程。本課程主要介紹了有關微型計算機的硬件基礎知識、基本原理,掌握匯編語言的指令以及編程應用。本課程設計是基于微機原理與接口技術的簡單應用。本設計以8086cpu為處理器,利用8255處理芯片的復位功能來實現對于單詞的錄入,讀取。以12854點陣液晶屏為顯示器件,并使用5×6距陣鍵盤為輸入設備,實現了功能全面的人機界面和高速的數據處理功能,,可儲存10-
2、20個英文單詞,作為記憶測試用。關鍵詞:8086cpu;8255處理芯片;12854點陣液晶屏 5*6矩陣鍵盤目 錄1緒論11.1基本內容11.2用途及特點12方案選擇及論證22.1設計方案22.1.1設計方案一22.1.2設計方案二22.2方案論證23硬件系統說明43.1硬件設計思路43.1.1中央處理模塊43.1.2顯示模塊的硬件部分介紹43.1.3 矩陣鍵盤73.2系統構成框圖83.3芯片選擇93.3.1 8086CPU內部結構及其各引腳93.3.2 8255A處理芯片103.4電路原理圖設計133.5存儲空間與I/O地址分配144 軟件系統說明154.1軟件設計思路154.1.1程序主
3、模塊154.1.2單詞錄入模塊164.1.3單詞測試模塊184.1.4矩陣鍵盤輸入模塊194.1.5 LCD12864顯示模塊194.1.6顯示字模碼的提取模塊204.2源程序清單205所選芯片清單28總結29致謝30參考文獻311緒論 隨著現代社會的發展,電子技術的進步我們有目共睹,計算機是現代電子技術的成果。在現實生活中、科學研究中計算機起著越來越重要的作用。多媒體技術、網絡技術、智能信息處理技術、自適用控制技術、數據挖掘與處理技術等都離不開計算機。在越來越多的場合中,計算機扮演著意味深遠的角色。微型計算機原理這門課程是對計算機進一步的了解與接觸,微型計算機原理是一門培養計算機應用能力的技
4、術基礎課程。本課程主要介紹了有關微型計算機的硬件基礎知識、基本原理,掌握匯編語言的指令以及編程應用。本次課程設計是基于微機原理與接口技術的簡單應用。1.1基本內容 本設計以8086CPU為處理器,利用8255處理芯片的復位功能來實現對于單詞的錄入,讀取。以12854點陣液晶屏為顯示器件,并使用5×6距陣鍵盤為輸入設備,實現了功能全面的人機界面和高速的數據處理功能,,可儲存10-20個英文單詞,作為記憶測試用,具體內容分為:1.輸入單詞,提示輸入單詞,輸入最少5個、最多255個英文單詞,每個單詞不超過20個字符。若直接回車,則結束單詞輸入,進入單詞測試。輸足20個字符,自動進入下一個單
5、詞的輸入。不足20個字符個字符,按回車鍵進入下一個單詞的輸入。2.單詞記憶測試:從輸入的第一個單詞開始測試。鍵入'y'(不分大小寫)或'n',回答是否認識,不需按回車鍵確認,其它按鍵無效。緊接著,沒有提示,可按上移鍵或下移鍵循環測試。按Esc鍵結束測試。3.計算單詞識別率并顯示輸出。4.提示是否進行下一組單詞的輸入和測試,鍵入'y'(不分大小寫)或'n'選擇是否繼續,不需按回車鍵確認,其它按鍵無效。1.2用途及特點本論文的研究對象是基于808CPU的單詞記憶測試器的設計,此單詞記憶測試器可以實現單詞的輸入并判斷輸入的單詞是否正確,
6、單詞背完后給出正確率。此項設計為現實生活中人們學習英語提供了很大的幫助,在現代社會有著廣泛的應用。2方案選擇及論證 2.1設計方案本題目實質上是一個具有一定復雜程度鍵盤掃描程序,可將單詞存儲在一個二維數組中。根據課題要求,使用8086CPU進行編程,采用8255處理芯片以及復位電路和時鐘電路,建立字符型數組存放單詞,通過LCD顯示所存放的單詞。根據設計書的基本內容,有兩種設計方案。2.1.1設計方案一首先利用了編程程序,編輯8255芯片控制字, 對其進行初始化,使其工作在方式0,即基本輸入輸出狀態,將8255的A端口設置為輸出,C端口進行,經CPU運算后, 輸出到CPU芯片的A端口中,由此實現
7、對其的初始化。其次接入鍵盤和顯示屏,進行初始化,然后錄入單詞,測試單詞,可以輸入5個單詞,但不超過255個,單詞不超過20個字符,按回車鍵進行下一個單詞的輸入,然后進行單詞記憶測試:從輸入的第一個單詞開始測試。鍵入'y'(不分大小寫)或'n',回答是否認識,不需按回車鍵確認,其它按鍵無效。緊接著,沒有提示,可按上移鍵或下移鍵循環測試。按Esc鍵結束測試。計算單詞識別率并顯示輸出。提示是否進行下一組單詞的輸入和測試,鍵入'y'(不分大小寫)或'n'選擇是否繼續,不需按回車鍵確認,其它按鍵無效。2.1.2設計方案二對CPU和8255A
8、先進行初始化,再對鍵盤和顯示屏進行初始化,然后錄入單詞,測試單詞,可以輸入5個單詞,但不超過255個單詞,單詞的輸入分為兩種情況,第一種是單詞必須夠20個字符,自動進入下一個單詞的輸入,第二種是單詞輸入不超過20個單詞,按回車鍵進行下一個單詞的輸入,出現哪個執行哪個,然后進行單詞記憶測試,從輸入的第一個單詞開始測試。鍵入'y'(不分大小寫)或'n',回答是否認識,不需按回車鍵確認,其它按鍵無效。緊接著,沒有提示,可按上移鍵或下移鍵循環測試。按Esc鍵結束測試。計算單詞識別率并顯示輸出。提示是否進行下一組單詞的輸入和測試,鍵入'y'(不分大小寫)或
9、'n'選擇是否繼續,不需按回車鍵確認,其它按鍵無效。2.2方案論證認真對比兩個方案,方案一和方案二都有自己的優點和缺點,我們選擇的是方案二,方案一的單詞沒有輸入夠20個字符,需要按鍵才能進行下一個單詞的讀寫,這樣的話沒有考慮到輸入夠20個字符。方案二是輸入夠20個字符,不需要按鍵就能進行下一個單詞的讀寫,輸入不夠20個字符,需要按鍵才能進行下一項,我們可以兩個都采用,輸足20個字符,自動進入下一個單詞的輸入,不足20個字符個字符,按回車鍵進入下一個單詞的輸入。這樣可以考慮到所有的情況,可以實現單詞的寫入。3硬件系統說明此次設計的課題分為硬件和軟件兩部分。硬件方面主要由處理芯片和
10、時鐘振蕩電路,復位電路整個實現字符的輸入、輸出以及電子顯示液晶屏的清屏操作。硬件系統部分包括三個模塊:中央處理模塊、顯示模塊、鍵盤輸入模塊。中央處理模塊選用8086CPU,8255處理芯片以及復位電路和時鐘電路。輸出顯示模塊主要由單色點陣液晶屏來實現。矩陣鍵盤輸入模塊主要由5*6的矩陣電路來實現。3.1硬件設計思路此次設計的課題分為硬件和軟件兩部分。硬件系統部分包括三個模塊:中央處理模塊、顯示模塊、鍵盤輸入模塊。中央處理模塊選用8086CPU,8255處理芯片以及復位電路和時鐘電路。顯示模塊主要由單色點陣液晶屏來實現。矩陣鍵盤輸入模塊主要由5*6的矩陣電路來實現。3.1.1中央處理模塊 中央處
11、理模塊選用8086CPU組成,電路包括:8255處理芯片、復位電路、時鐘振蕩電路。8086cpu需要在復位電路和時鐘振蕩電路組成的最小系統下工作,時鐘電路采用頻率采用為12MHZ的晶振。復位電路采用電解電容與電阻串聯,。用戶可以通過切斷電源進行手動復位,或者通過重新下載新的程序進行復位。3.1.2顯示模塊的硬件部分介紹顯示模塊采用單色點陣液晶屏12864模塊,該模塊在點陣液晶屏基礎上集成了控制器kS0108,用戶只需設計好接口程序,就可讓模塊顯示出各種字符和圖像。12864 為一塊128X64 點陣的LCD 顯示模塊,模塊上的 LCM 采用COG 技術將控制(包括顯存)、驅動器集成在LCM 的
12、玻璃上,接口簡單、操作方便;為方便用戶的使用,在LCM 的基礎上設計了12864 模塊,將模塊所必需的外圍電容電阻集成到模塊上,并引出多種形式的引線接口方便用戶使用。12864 模塊與各種MCU 均可進行方便簡單的接口操作。LCD 的接口:圖3.1 LCD引腳說明圖顯示 RAM 區映射情況:對于 LCD 模塊,應該了解清楚驅動控制IC 當中的顯存與LCD 玻璃上的點的對應關系是非常重要的,這是編寫LCD 的驅動程序的基礎。12864 液晶顯示模塊的顯示器(玻璃)上的顯示點與驅動控制芯片中的顯示緩存RAM是一一對應的。驅動控制芯片的顯示RAM區每個byte的數據對應屏上的點的排列方式為:縱向排列
13、,低位在上高位在下 圖3.2驅動控制芯片的顯示RAM區12864 液晶顯示模塊的顯示屏上的每一個點都對應有控制器片內的顯示緩存RAM中的一個位,顯示屏上64X128 個點分別對應著顯示RAM的8 個Page,每一個Page有128 個byte的空間對應。因此可知顯示RAM區中的一個Page空間對應8 行的點,而該Page中的一個byte數據則對應一列(8 個點)。圖6為顯示RAM區與顯示屏的點映射圖:圖3.3 顯示RAM區與顯示屏的點映射圖3.1.3 矩陣鍵盤 要測試記憶的單詞,就要有字母的輸入接口,本接口設計為5×6矩陣鍵盤輸入,接入CPU的P1口和P3口進行鍵盤掃描。最大程度地提
14、高了CPU的IO口的利用率,設計共30個接鍵,包括了26個英文字母以及四個功能鍵:“確定”、“不認識”、“上一個”、“下一個”。矩陣鍵盤如圖10,由30個輕觸按鍵按照6行5列排列,連接到P1、P3端口。其掃描的原理是:先將行線所接的CPU的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下了。然后再將行線所接的CPU的I/O口作為輸入端,而列線所接的I/O口則作為輸出,以相同的方法讀一次端口,程序中就可識別是這個坐標的按鍵按下了。圖3
15、.4 矩陣鍵盤原理圖3.2系統構成 系統主要由8086CPU,8255A,點陳液晶屏還有矩陣型鍵盤輸入組成。 以8086CPU為處理器,利用8255處理芯片的復位功能來實現對于單詞的錄入,讀取。以12854點陣液晶屏為顯示器件,并使用5×6距陣鍵盤為輸入設備,實現了功能全面的人機界面和高速的數據處理功能,,可儲存10-20個英文單詞,作為記憶測試用。 圖3.5 系統構成圖3.3芯片選擇3.3.1 8086CPU內部結構及其各引腳圖3.6 8086cpu引腳圖8086cpu的內部結構8086 CPU從功能上劃分成兩部分:總線接口單元BIU(Bus Interface Unit)和執行單
16、元EU(Execution Unit). EU的組成部分:16位通用寄存器(AX,BX,CX,DX,SP,BP,SI,DI)、算術邏輯單元(ALU)、標志寄存器(FLAG)、操作控制器電路。BIU的組成部分:段寄存器組(CS,DS,SS,ES)、指令指針(IP)、地址加法器、指令隊列緩沖器、總線接口控制邏輯。8086cpu的工作方式 8086的最小/最大工作方式 Intel公司在設計8086CPU芯片時,規定了兩種工作模式,即最小工作模式和最大工作模式。通過CPU的第33條引腳MN/ 來控制。 1.最小工作模式(MN/ =1):把8086CPU的33引腳接+5V時,系統
17、處于最小工作模式。最小模式系統適用于單微處理器組成的小系統,系統中通常只有一個微處理器,所有的總線控制信號都直接由8086CPU產生,系統中的總線控制邏輯電路被減到最少。 2.最大工作模式(MN/ =0):當把8086的33引腳接地時,系統處于最大工作模式。此時,系統中存在兩個或兩個以上的微處理器,其中有一個主處理器8086,其他處理器稱為協處理器。3.3.2 8255A處理芯片圖3.7 8255內部結構圖8255的引腳圖:圖3.8 8255A引腳圖8255的方式選擇控制字:(1)方式選擇控制字把A、B、C三個端口分為A、B兩組來設定工作方式。A組包括端口A和端口C的上半部,B組包括端口B和端
18、口C的下半部。(2) 端口A可工作于3種方式中的任何一種:端口B只能工作于方式0和方式1;而端口C除用作輸入、輸出口(方式0)外,通常用來配合端口A和端口B提供聯絡控制信號和狀態信號。(3) 歸在同一組的兩個端口可分別作為輸入端口或輸出端口,不要求同為輸入或輸出。圖3.9 方式選擇控制字8255端口C按位置位/復位控制字 (1) 端口C按位置位/復位控制字盡管是對端口C進行操作的,但此控制字必須寫入控制口,而不寫入端口C。 (2) 一個控制字只能完成端口C中某一位置的置1或置0,要對多位置1或置0,必須使用多個控制字。圖3.10 C端口的方式控制字采用的方式控制字 使用8255的B口作為數據輸
19、入端,與開關相連接(即D1:1); 使用工作方式0(即D6 D5:0 0)。 綜上:8255的方式控制字為:1000 0010(即82H)圖3.11 時鐘電路圖圖3.12復位電路圖3.4電路原理圖設計電路原理圖設計使用集原理圖設計、PCB設計、電路仿真功能為一體的PROTUES軟件。以該軟件設計的電路原理圖。圖3.13單詞記憶測試器電路原理圖電路設計參數:(1) C1 C2 為20-30PF瓷片電容,與12M晶振組成時鐘振蕩電路;(2) 復位電路使用R1為10K電阻、C3為10uF電解電容;(3) 12864液晶模塊與CPU P0口連接,因P0口為真正的三態門結構,因些作數據總線使用時要外接上
20、拉電阻,可使用10K的排阻;(4) 按鍵如圖的行相連,列相連的矩陣接法連入CPU的IO口;(5) 電路的供電為5V直流電源;(6)D1為輸入錯誤的狀態指示燈,加220歐限流電阻連到VCC,因為CPUIO的電 流灌入能力要強于電流輸出能力,因此一般使IO為低電平時點亮LED燈。3.5存儲空間與I/O地址分配 本設計以8086為中心,通過譯碼器74LS138對各個芯片的工作進行地址分配,控制各個芯片在何種工作狀態,當第一個單詞輸入后通過采集放到內存,顯示在LED上,依次執行完所有請求,直到單詞記憶測試完成。4 軟件系統說明本課題設計總共分為硬件和軟件兩部分。軟件部分主要是利用匯編語言來編寫程序,整
21、個程序代碼設計分別將代碼和數據存儲在代碼段、數據段以及附加段中。掃描單詞、輸入單詞再將二進制無符號數轉換成顯式的十進制ASCII碼,并送顯示屏顯示。清顯示屏,經復位電路到單詞鏈表進入主程序的循環結構。以此反復以至于達到單詞測試記憶的目的。4.1軟件設計思路開始因本系統為模塊化設計,為方便軟件編寫和移植,程序設計采用匯編語言,程序流程圖如下:CPU初始化8255A初始化顯示屏初始化鍵盤掃描輸入有按鍵命令令?NY執行按鍵命令顯示上一個顯示下一個確定鍵字符比較NN輸入正確Y圖4.1程序流程圖顯示正確4.1.1程序主模塊4.1.1.1主程序的定義與錄入主程序首先進行存儲變量的定義: 存儲各測試單詞的長
22、度,如果輸入的單詞長度與存儲的不同,也為錯誤。為能動態地顯示測試的單詞,先將要測試的單詞存在一個二維數組中,顯示了該數組中的字符時,顯示函數也會被調用 b6 db 1000h dup('$')b9 db 'You do not know the following words , please remember them agian',0ah,0dh,'$'f1 db 'very good,congratulations to you',0ah,0dh,'$'4.1.1.2主程序的主循環主程序的主循環部分代碼及注釋
23、如下: mov Words,cl ;保存單詞數目 lea si,Buffer ;數據緩沖區地址 mov bx,bx.previous mov si.previous,bx ;把第一個節點的前一個節點地址指向最后一個節點 mov bx.Next,si ;把最后一個節點的下一個節點地址指向第一個節點,形成循環鏈表4.1.2單詞錄入模塊鍵盤的輸入是通過矩陣掃描的方法,通過矩陣掃描可找到按鍵所在的某行某列,但要得到一個英文字母值,還得在返回的某行某列位置預先定義個字母值,因此5*6矩陣鍵盤的整個返回字母表可定義一個二維數組存儲。該二維數組為行*列 10*5,即10行5列,10行表示有10個單詞,實際根
24、據存儲ROM的大小,可以增加單詞數;列數表示單詞在存儲器中占的字符數,以最長單詞(5個字符)定義,不足5個字符的單詞后補空格表示。輸入單詞:提示輸入單詞,輸入最少5個、最多255個英文單詞,每個單詞不超過20個字符;若直接回車,則結束單詞輸入,進入單詞測試;輸足20個字符,自動進入下一個單詞的輸入;不足20個字符個字符,按回車鍵進入下一個單詞的輸入。單詞錄入模塊程序代碼段:Input_Words Proc Near ;輸入一組單詞 xor cl,cl ;輸入的單詞數目初值 lea bx,Buffer ;數據緩沖區地址 mov di,bx Output Prompt_Str1 ;提示輸入單詞In
25、put_Words: cmp cl,255 jz Termanate ;限定最多255個單詞 mov bx.Recognise,No ;初始化識別標志 mov bx.previous,di ;前一個節點地址 mov bx.Next,Chrs+1 ;每個單詞最多字符數 mov di,bx lea dx,bx.Next ;鍵盤輸入緩沖區地址 mov ah,0ah ;輸入單詞 int 21h mov si,dx inc si lodsb ;讀入實際輸入的字符個數,即單詞長度 test al,al ;直接回車? jz Termanate ;是,結束單詞輸入 inc cl ;累計輸入的單詞數目 xor
26、ah,ah add si,ax mov si,'$' ;使之能用dos功能調用9號功能顯示這個字符串(單詞) inc si mov bx.Next,si ;下一個節點地址 mov bx,si call Output_CTLF ;輸出一個回車、換行 jmp Input_Words ;輸入下一個單詞Termanate: cmp cl,10 jb Input_Words ;限定最少5個單詞 mov Words,cl ;保存單詞數目 lea si,Buffer ;數據緩沖區地址 mov bx,bx.previous mov si.previous,bx ;把第一個節點的前一個節點地址指
27、向最后一個節點 mov bx.Next,si ;把最后一個節點的下一個節點地址指向第一個節點,形成循環鏈表 call Output_CTLF retInput_Words EndP圖4.2單詞錄入模塊4.1.3單詞測試模塊單詞記憶測試:從輸入的第一個單詞開始測試。鍵入'y'(不分大小寫)或'n',回答是否認識,不需按回車鍵確認,其它按鍵無效。緊接著,沒有提示,可按上移鍵或下移鍵循環測試。按Esc鍵結束測試。然后計算單詞識別率并顯示輸出。提示是否進行下一組單詞的輸入和測試,鍵入'y'(不分大小寫)或'n'選擇是否繼續,不需按回車鍵確
28、認,其它按鍵無效。單詞測試程序代碼段:Test_Words Proc Near call Output_CTLF call Output_CTLF lea dx,si.Next2 mov ah,9 int 21h call Output_CTLF Output Prompt_Str2 ;要求回答是否認識這個詞匯,回答字母不分大小寫Recognise: or si.Recognise,Yes call Yes_or_No jc Up_Down and si.Recognise,NoUp_Down: xor ah,ah int 16h cmp ah,KBEsc jnz $+3 ret cmp ah
29、,KBUp jnz Next_KBDown mov si,si.previous jmp Test_WordsNext_KBDown: cmp ah,KBDown jnz Up_Down mov si,si.Next jmp Test_WordsTest_Words EndP圖4.3單詞測試模塊圖4.1.4矩陣鍵盤輸入模塊矩陣鍵盤采用5×6 列與行掃描法,P1口依次接鍵盤的每一行,而P3口依次接鍵盤的每一列,程序開始先令P1全為高電平,P3口全為低電平,這樣一旦矩陣鍵盤中有一個鍵按下時,就會在某一行中出現低電平,而某一列中出現高電平,程序先讀P1口,以檢測到有低電平來確定行。再使P1
30、全為低電平,P3口全為高電平,再讀P3口,以檢測到低電平來確定列。這里還要考慮按鍵的機械抖動問題,因為按鍵的機械特性,可能在按下瞬間會有一組抖動的脈沖,一般程序中采用延時方法來去抖動。4.1.5 LCD12864顯示模塊LCD12864顯示模塊的程序作為顯示部分的底層程序,用戶可直接調用其函數來達到驅動和顯示功能。清顯示屏,將LCD上的顯示字符清空。字符的顯示,將輸入的字符,單詞顯示在液晶顯示屏上。進入主程序后,先對LCD12864屏進行初始化和清屏操作,然后在LCD12864屏上顯示單片機單詞記憶測試器的靜態的圖文,需要動態刷新的字符則在主循環中進行。LCD12864的顯示效果如下,此時系統
31、進入單詞輸入測試就緒狀態。圖4.4單詞測試就緒狀態在系統進入單詞輸入測試就緒狀態后,主程序即進入while(1)的主循環中,循環進行鍵盤掃描,并判斷鍵盤輸入值,再與待測試的單詞進行比較,如果輸入的字符和字符長度均與被測試的單詞一致,則顯示correct加1,即為加1分,并進入下一個單詞的測試,測試完10個單詞后,重新進入第1個單詞的測試。4.1.6顯示字模碼的提取模塊為了使LCD12864能夠顯示用戶存儲的中文漢字和英文單詞,用戶必須將要顯示的漢字字模及英文字母字模碼存入存儲器中,因LCD12864只能顯示點陣圖形,因此存儲入單片機的字模碼必須是通過點陣碼轉換而成,為了軟換更方便,設計使用了字
32、模轉換軟件實現英文碼的取模。4.2源程序清單b6 db 1000h dup('$')b9 db 'You do not know the following words , please remember them agian',0ah,0dh,'$'f1 db 'very good,congratulations to you',0ah,0dh,'$'call zi4;輸出不認識的單詞 mov ah,02h;回車換行mov dl,0dhint 21hmov ah,02hmov dl,0ahint 21hcall
33、zi2;將不認識的單詞存到B6所指單元call zi2;將不認識的單詞存到B6所指單元 m2:inc dilea si,b6;將不認識的單詞放到B6所指單元111111111111111111111mov si,z;保留SI的地址zi4 procpush axpush bxpush cxpush dxpush sipush dilea dx,b9;輸出不認識的單詞mov ah,09hint 21hlea dx,b6mov ah,09hint 21hpop dipop sipop dxpop cxpop bxpop ax retzi4endpCode Segment Assume CS:Code
34、,DS:Code; ; 功能:顯示指定地址(Str_Addr)的字符串; 入口:Str_Addr字符串地址(要求在數據段); 用法: Output Str_Addr 用法舉例:Output PromptStr)Output MACRO Str_Addr push ax lea dx,Str_Addr mov ah,9 int 21h pop ax EndM; ; 功能:輸出一個字符 ; 入口:dl=要顯示的字符 Output_Chr proc Near push ax mov ah,02h int 21h pop ax ret Output_Chr endp ; ; 功能:輸出回車換行Outp
35、ut_CTLF proc Near push ax push dx mov ah,02h mov dl,0dh int 21h mov dl,0ah int 21h pop dx pop ax retOutput_CTLF endp ; ; 功能:把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,并送顯示屏顯示; 入口:AX=二進制數 ; 出口:在當前光標位置顯示轉換后的ASCII碼數字 Dec_ASCII Proc Near push dx push bx push di mov bx,10 lea di,Temp_Save6 mov BYTE ptr di,'$' d
36、ec di Divide: xor dx,dx div bx or dl,30h mov di,dl dec di test ax,0ffffh jnz Divide inc di push di pop dx mov ah,9 int 21h pop di pop bx pop dx ret Temp_Save db 7 dup(?)Dec_ASCII EndP; ; 功能:鍵盤輸入一個字符,若輸入的是'y'或'n'(不分大小寫),則顯示并返回; 入口:無; 出口:若輸入的是'y',進位標志置位;若輸入的是'n',進位標志復位。
37、Yes_or_No proc Near push dx push axInput_Chr: mov ah,7 ;不帶回顯的鍵盤輸入 int 21h mov dl,al and al,0dfh cmp al,'Y' jnz $+5 stc jmp $+7 cmp al,'N' jnz Input_Chr clc mov ah,2 int 21h pop ax pop dx retYes_or_No Endp; Input_Words Proc Near ;輸入一組單詞 xor cl,cl ;輸入的單詞數目初值 lea bx,Buffer ;數據緩沖區地址 mov
38、di,bx Output Prompt_Str1 ;提示輸入單詞Input_Words: cmp cl,255 jz Termanate ;限定最多255個單詞 mov bx.Recognise,No ;初始化識別標志 mov bx.previous,di ;前一個節點地址 mov bx.Next,Chrs+1 ;每個單詞最多字符數 mov di,bx lea dx,bx.Next ;鍵盤輸入緩沖區地址 mov ah,0ah ;輸入單詞 int 21h mov si,dx inc si lodsb ;讀入實際輸入的字符個數,即單詞長度 test al,al ;直接回車? jz Termanat
39、e ;是,結束單詞輸入 inc cl ;累計輸入的單詞數目 xor ah,ah add si,ax mov si,'$' ;使之能用dos功能調用9號功能顯示這個字符串(單詞) inc si mov bx.Next,si ;下一個節點地址 mov bx,si call Output_CTLF ;輸出一個回車、換行 jmp Input_Words ;輸入下一個單詞Termanate: cmp cl,5 jb Input_Words ;限定最少5個單詞 mov Words,cl ;保存單詞數目 lea si,Buffer ;數據緩沖區地址 mov bx,bx.previous mo
40、v si.previous,bx ;把第一個節點的前一個節點地址指向最后一個節點 mov bx.Next,si ;把最后一個節點的下一個節點地址指向第一個節點,形成循環鏈表 call Output_CTLF retInput_Words EndP; Test_Words Proc Near call Output_CTLF call Output_CTLF lea dx,si.Next2 mov ah,9 int 21h call Output_CTLF Output Prompt_Str2 ;要求回答是否認識這個詞匯,回答字母不分大小寫Recognise: or si.Recognise,Y
41、es call Yes_or_No jc Up_Down and si.Recognise,NoUp_Down: xor ah,ah int 16h cmp ah,KBEsc jnz $+3 ret cmp ah,KBUp jnz Next_KBDown mov si,si.previous jmp Test_WordsNext_KBDown: cmp ah,KBDown jnz Up_Down mov si,si.Next jmp Test_WordsTest_Words EndP; Statics_Words Proc Near ;計算單詞識別率 mov cl,Words ;取單詞數 xo
42、r ch,ch lea si,Buffer ;數據緩沖區地址 mov bx,si.Next xor ax,axL0: add al,si.Recognise ;累加識別率 mov si,si.Next loop L0 mov bl,100 mul bl div Words Output Prompt_Str3 ;提示顯示單詞識別率 call Dec_ASCII ;把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,并送顯示屏顯示 mov dl,'%' call Output_Chr ;顯示輸出一個字符 retStatics_Words EndP; Chrs equ 20 ;
43、單詞最多字符數Yes equ 1 ;認識No equ 0 ;不認識KBEsc equ 1 ;Esc鍵掃描碼KBUp equ 48H ;鍵掃描碼KBDown equ 50H ;鍵掃描碼; ; 定義結構類型Words_Table Struc ;單詞鏈表Recognise db ? ;識別標志(是否認識這個單詞)previous dw ? ;前一個節點地址Next dw ? ;下一個節點地址Words_Table EndS; Prompt_Str1 db 'Please input words:',13,10,'$' ;“請輸入單詞”提示信息Prompt_Str2 d
44、b 'do you know it ?(y/n):$' ;“是否認識單詞”提示信息Prompt_Str3 db 7,13,10,13,10,'your answer rate is: $' ;“單詞識別率”提示信息Prompt_Str4 db 7,13,10,13,10,'Do you want to test again(y/n)?$' ;“測試下一組單詞?”提示信息Words db 0 ;實際輸入的單詞數目Press_Key db 7,13,10,13,10,'The complated. Press any key to exit.
45、$' ;操作完成按任意鍵結束程序提示信息Start: push cs pop ds push cs pop es ;使數據段、附加段與代碼段同段InputWord: call Input_Words ;輸入一組單詞 call Test_Words ;測試識別率 call Statics_Words ;計算單詞識別率 Output Prompt_Str4 ;再測試一組單詞? call Yes_or_No call Output_CTLF call Output_CTLF jc InputWord; Exit_Proc: Output Press_Key ;提示操作完成,按任意鍵結束程序 mov ah,1 int 21h mov ah,4ch ;結束程序 int 21hBuffer: ;數據緩沖區Code ENDSEND Start
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇連云港2024~2025學年高一下冊6月期末考試數學試題學生卷
- 鐵礦石選礦反浮選劑的吸附機理研究考核試卷
- 體育設施信托投資與地方經濟發展關系分析考核試卷
- 智能化通風設備智能語音交互功能設計考核試卷
- 醫療設備智能化設備遠程控制與操作培訓系統考核試卷
- 養鴨業節能減排技術考核試卷
- 乳品產業政策與乳品行業標準化戰略研究考核試卷
- 2025年中國PET抗靜電托盤數據監測報告
- 2025年中國IC卡鎖數據監測報告
- 2025年中國DJ專用麥克風數據監測研究報告
- 商業步行街物業管理服務質量標準
- 煤礦進風井地面用燃煤熱風爐安全技術條件
- 化妝品生產工藝驗證報告范文模板-新規要求工藝參數及關鍵控制點驗證
- 大蒜項目可行性報告
- 學生實習家長知情同意書(完美版)
- 《白夜行》名著導讀讀書分享
- 藍莓可行性研究報告
- 山東省汽車維修工時定額(T-SDAMTIA 0001-2023)
- 二年級勞動教育全冊教案
- 綜合布線設計與施工 第4版 課件全套 第1-13章 網絡綜合布線概述-網絡綜合布線實訓
- 自動扶梯采購投標方案(技術方案)
評論
0/150
提交評論