




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單詞記憶測試器Documentserialnumber【UU89WT-UU98YT-UU8CB-UUUT-UUT108】隨著現代社會的發展,電子技術的進步我們有目共睹,計算機是現代電子技術的成果。在現實生活中、科學研究中計算機起著越來越重要的作用。微型計算機原理這門課程是對計算機進一步的了解與接觸,微型計算機原理是一門培養計算機應用能力的技術基礎課程。本課程主要介紹了有關微型計算機的硬件基礎知識、基本原理,掌握匯編語言的指令以及編程應用。本課程設計是基于微機原理與接口技術的簡單應用。本設計以8086cpu為處理器,利用8255處理芯片的復位功能來實現對于單詞的錄入,讀取。以12854點陣液晶屏為顯示器件,并使用5X6距陣鍵盤為輸入設備,實現了功能全面的人機界面和高速的數據處理功能,,可儲存10-20個英文單詞,作為記憶測試用。關鍵詞:8086cpu;8255處理芯片;12854點陣液晶屏5*6矩陣鍵盤目錄TOC\o"1-5"\h\z\o"CurrentDocument"1緒論 1\o"CurrentDocument"基本內容 1\o"CurrentDocument"用途及特點 12方案選擇及論證 2設計方案 2 2TOC\o"1-5"\h\z\o"CurrentDocument"方案論證 23硬件系統說明 4\o"CurrentDocument"硬件設計思路 4\o"CurrentDocument"中央處理模塊 4\o"CurrentDocument"顯示模塊的硬件部分介紹 4\o"CurrentDocument"矩陣鍵盤 7系統構成框圖 8芯片選擇 9\o"CurrentDocument"8086CPU內部結構及其各引腳 9\o"CurrentDocument"8255A處理芯片 10電路原理圖設計 13\o"CurrentDocument"存儲空間與I/O地址分配 144軟件系統說明 15\o"CurrentDocument"軟件設計思路 15 15 16TOC\o"1-5"\h\z矩陣鍵盤輸入模塊 19\o"CurrentDocument"LCD12864顯示模塊 19\o"CurrentDocument"顯示字模碼的提取模塊 20源程序清單 20\o"CurrentDocument"5所選芯片清單 28總結 29\o"CurrentDocument"致謝 30\o"CurrentDocument"參考文獻 311緒論隨著現代社會的發展,電子技術的進步我們有目共睹,計算機是現代電子技術的成果。在現實生活中、科學研究中計算機起著越來越重要的作用。多媒體技術、網絡技術、智能信息處理技術、自適用控制技術、數據挖掘與處理技術等都離不開計算機。在越來越多的場合中,計算機扮演著意味深遠的角色。微型計算機原理這門課程是對計算機進一步的了解與接觸,微型計算機原理是一門培養計算機應用能力的技術基礎課程。本課程主要介紹了有關微型計算機的硬件基礎知識、基本原理,掌握匯編語言的指令以及編程應用。本次課程設計是基于微機原理與接口技術的簡單應用。基本內容本設計以8086CPU為處理器,利用8255處理芯片的復位功能來實現對于單詞的錄入,讀取。以12854點陣液晶屏為顯示器件,并使用5X6距陣鍵盤為輸入設備,實現了功能全面的人機界面和高速的數據處理功能,,可儲存10-20個英文單詞,作為記憶測試用,具體內容分為:1.輸入單詞,提示輸入單詞,輸入最少5個、最多255個英文單詞,每個單詞不超過20個字符。若直接回車,則結束單詞輸入,進入單詞測試。輸足20個字符,自動進入下一個單詞的輸入。不足20個字符個字符,按回車鍵進入下一個單詞的輸入。2.單詞記憶測試:從輸入的第一個單詞開始測試。鍵入’y'(不分大小寫)或'n',回答是否認識,不需按回車鍵確認,其它按鍵無效。緊接著,沒有提示,可按上移鍵或下移鍵循環測試。按Esc鍵結束測試。3.計算單詞識別率并顯示輸出。4.提示是否進行下一組單詞的輸入和測試,鍵入’y'(不分大小寫)或'n'選擇是否繼續,不需按回車鍵確認,其它按鍵無效。用途及特點本論文的研究對象是基于808CPU的單詞記憶測試器的設計,此單詞記憶測試器可以實現單詞的輸入并判斷輸入的單詞是否正確,單詞背完后給出正確率。此項設計為現實生活中人們學習英語提供了很大的幫助,在現代社會有著廣泛的應用。2方案選擇及論證設計方案本題目實質上是一個具有一定復雜程度鍵盤掃描程序,可將單詞存儲在一個二維數組中。根據課題要求,使用 8086CPU進行編程,采用8255處理芯片以及復位電路和時鐘電路,建立字符型數組存放單詞,通過LCD顯示所存放的單詞。根據設計書的基本內容,有兩種設計方案。首先利用了編程程序,編輯8255芯片控制字,對其進行初始化,使其工作在方式0,即基本輸入輸出狀態,將8255的A端口設置為輸出,C端口進行,經CPU運算后,輸出到CPU芯片的A端口中,由此實現對其的初始化。其次接入鍵盤和顯示屏,進行初始化,然后錄入單詞,測試單詞,可以輸入5個單詞,但不超過255個,單詞不超過20個字符,按回車鍵進行下一個單詞的輸入,然后進行單詞記憶測試:從輸入的第一個單詞開始測試。鍵入’y'(不分大小寫)或'n',回答是否認識,不需按回車鍵確認,其它按鍵無效。緊接著,沒有提示,可按上移鍵或下移鍵循環測試。按Esc鍵結束測試。計算單詞識別率并顯示輸出。提示是否進行下一組單詞的輸入和測試,鍵入’y'(不分大小寫)或'n'選擇是否繼續,不需按回車鍵確認,其它按鍵無效。對CPU和8255A先進行初始化,再對鍵盤和顯示屏進行初始化,然后錄入單詞,測試單詞,可以輸入5個單詞,但不超過255個單詞,單詞的輸入分為兩種情況,第一種是單詞必須夠20個字符,自動進入下一個單詞的輸入,第二種是單詞輸入不超過20個單詞,按回車鍵進行下一個單詞的輸入,出現哪個執行哪個,然后進行單詞記憶測試,從輸入的第一個單詞開始測試。鍵入’y'(不分大小寫)或'n',回答是否認識,不需按回車鍵確認,其它按鍵無效。緊接著,沒有提示,可按上移鍵或下移鍵循環測試。按Esc鍵結束測試。計算單詞識別率并顯示輸出。提示是否進行下一組單詞的輸入和測試,鍵入'y'(不分大小寫)或'n'選擇是否繼續,不需按回車鍵確認,其它按鍵無效。方案論證認真對比兩個方案,方案一和方案二都有自己的優點和缺點,我們選擇的是方案二,方案一的單詞沒有輸入夠20個字符,需要按鍵才能進行下一個單詞的讀寫,這樣的話沒有考慮到輸入夠20個字符。方案二是輸入夠20個字符,不需要按鍵就能進行下一個單詞的讀寫,輸入不夠20個字符,需要按鍵才能進行下一項,我們可以兩個都采用,輸足20個字符,自動進入下一個單詞的輸入,不足20個字符個字符,按回車鍵進入下一個單詞的輸入。這樣可以考慮到所有的情況,可以實現單詞的寫入。此次設計的課題分為硬件和軟件兩部分。硬件方面主要由處理芯片和時鐘振蕩電路,復位電路整個實現字符的輸入、輸出以及電子顯示液晶屏的清屏操作。硬件系統部分包括三個模塊:中央處理模塊、顯示模塊、鍵盤輸入模塊。中央處理模塊選用8086CPU,8255處理芯片以及復位電路和時鐘電路。輸出顯示模塊主要由單色點陣液晶屏來實現。矩陣鍵盤輸入模塊主要由5*6的矩陣電路來實現。硬件設計思路此次設計的課題分為硬件和軟件兩部分。硬件系統部分包括三個模塊:中央處理模塊、顯示模塊、鍵盤輸 入模塊。中央處理模塊選用8086CPU,8255處理芯片以及復位電路和時鐘電路。顯示模塊主要由單色點陣液晶屏來實現。矩陣鍵盤輸入模塊主要由5*6的矩陣電路來實現。中央處理模塊中央處理模塊選用8086CPU組成,電路包括:8255處理芯片、復位電路、時鐘振蕩電路。8086cpu需要在復位電路和時鐘振蕩電路組成的最小系統下工作,時鐘電路采用頻率采用為12MHZ的晶振。復位電路采用電解電容與電阻串聯,。用戶可以通過切斷電源進行手動復位,或者通過重新下載新的程序進行復位。顯示模塊的硬件部分介紹顯示模塊采用單色點陣液晶屏12864模塊,該模塊在點陣液晶屏基礎上集成了控制器kS0108,用戶只需設計好接口程序,就可讓模塊顯示出各種字符和圖像。12864為一塊128X64點陣的LCD顯示模塊,模塊上的LCM采用COG技術將控制(包括顯存)、驅動器集成在LCM的玻璃上,接口簡單、操作方便;為方便用戶的使用,在LCM的基礎上設計了12864模塊,將模塊所必需的外圍電容電阻集成到模塊上,并引出多種形式的引線接口方便用戶使用。12864模塊與各種MCU均可進行方便簡單的接口操作。LCD的接口:圖LCD引腳說明圖顯示RAM區映射情況:對于LCD模塊,應該了解清楚驅動控制IC當中的顯存與LCD玻璃上的點的對應關系是非常重要的,這是編寫LCD的驅動程序的基礎。12864液晶顯示模塊的顯示器(玻璃)上的顯示點與驅動控制芯片中的顯示緩存RAM是一一對應的。驅動控制芯片的顯示RAM區每個byte的數據對應屏上的點的排列方式為:縱向排列,低位在上高位在下圖驅動控制芯片的顯示RAM區12864液晶顯示模塊的顯示屏上的每一個點都對應有控制器片內的顯示緩存RAM中的一個位,顯示屏上64X128個點分別對應著顯示RAM的8個Page,每一個Page有128個byte的空間對應。因此可知顯示RAM區中的一個Page空間對應8行的點,而該Page中的一個byte數據則對應一列(8個點)。圖6為顯示RAM區與顯示屏的點映射圖:圖顯示RAM區與顯示屏的點映射圖矩陣鍵盤要測試記憶的單詞,就要有字母的輸入接口,本接口設計為5X6矩陣鍵盤輸入,接入CPU的P1口和P3口進行鍵盤掃描。最大程度地提高了CPU的IO口的利用率,設計共30個接鍵,包括了26個英文字母以及四個功能鍵:“確定”、“不認識”、“上一個”、“下一個”。矩陣鍵盤如圖10,由30個輕觸按鍵按照6行5列排列,連接到P1、P3端口。其掃描的原理是:先將行線所接的CPU的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下了。然后再將行線所接的CPU的I/O口作為輸入端,而列線所接的I/O口則作為輸出,以相同的方法讀一次端口,程序中就可識別是這個坐標的按鍵按下了。圖矩陣鍵盤原理圖系統構成系統主要由8086CPU,8255A系統主要由8086CPU,8255A,點陳液晶屏還有矩陣型鍵盤輸入組成。矩陣型鍵盤輸入芯片選擇8086CPU內部結構及其各引腳圖8086cpu引腳圖8086cpu的內部結構8086CPU從功能上劃分成兩部分:總線接口單元BIU(BusInterfaceUnit)和執行單元EU(ExecutionUnit).??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時,系統處于最小工作模式。最小模式系統適用于單組成的小系統,系統中通常只有一個微處理器,所有的總線控制信號都直接由8086CPU產生,系統中的總線控制被減到最少。2.最大工作模式(MN/=0):當把8086的33引腳接地時,系統處于最大工作模式。此時,系統中存在兩個或兩個以上的微處理器,其中有一個主處理器8086,其他處理器稱為協處理器。8255A處理芯片圖8255內部結構圖8255的引腳圖:圖8255A引腳圖8255的方式選擇控制字:(1) 方式選擇控制字把入、B、CM個端口分為A、B兩組來設定工作方式。A組包括端口A和端口C的上半部,B組包括端口B和端口C的下半部。(2) 端口A可工作于3種方式中的任何一種:端口B只能工作于方式0和方式1;而端口C除用作輸入、輸出口(方式0)外,通常用來配合端口A和端口B提供聯絡控制信號和狀態信號。(3) 歸在同一組的兩個端口可分別作為輸入端口或輸出端口,不要求同為輸入或輸出。圖方式選擇控制字8255端口C按位置位/復位控制字(1) 端口C按位置位/復位控制字盡管是對端口C進行操作的,但此控制字必須寫入控制口,而不寫入端口C。(2) 一個控制字只能完成端口C中某一位置的置1或置0,要對多位置1或置0,必須使用多個控制字。圖C端口的方式控制字采用的方式控制字使用8255的B口作為數據輸入端,與開關相連接(即D1:1);使用工作方式0(即D6D5:00)。綜上:8255的方式控制字為:10000010(即82H)圖時鐘電路圖
圖復位電路圖電路原理圖設計電路原理圖設計使用集原理圖設計、PCB設計、電路仿真功能為一體的PROTUES軟件。以該軟件設計的電路原理圖。圖單詞記憶測試器電路原理圖電路設計參數:(1) C1C2為20-30PF瓷片電容,與12M晶振組成時鐘振蕩電路;(2) 復位電路使用R1為10K電阻、C3為10uF電解電容;(3) 12864液晶模塊與CPUP0口連接,因P0口為真正的三態門結構,因些作數據總線使用時要外接上拉電阻,可使用10K的排阻;(4) 按鍵如圖的行相連,列相連的矩陣接法連入CPU的IO口;(5) 電路的供電為5V直流電源;(6) D1為輸入錯誤的狀態指示燈,加220歐限流電阻連到VCC,因為CPUIO的電流灌入能力要強于電流輸出能力,因此一般使IO為低電平時點亮LED燈。存儲空間與I/O地址分配本設計以8086為中心,通過譯碼器74LS138對各個芯片的工作進行地址分配,控制各個芯片在何種工作狀態,當第一個單詞輸入后通過采集放到內存,顯示在LED上,依次執行完所有請求,直到單詞記憶測試完成。語言來編寫程序,整個程序代碼設計分別將代碼和數據存儲在代碼段、數據段以及附加段中。掃描單詞、輸入單詞再將二進制無符號數轉換成顯式的十進制ASCII碼,并送顯示屏顯示。清顯示屏,經復位電路到單詞鏈表進入主程序的循環結構。以此反復以至于達到單詞測試記憶的目的。軟件設計思路因本系統為模塊化設計,為方便軟件編寫和移植,程序設計采用匯編語言,程序流程圖如 一顯示屏初始化鍵盤掃描輸入有按鍵命執行按鍵命令顯示下.輸入正確.NY圖程序流程圖主程序的定義與錄入Y顯示正確確N8255入初始化2CPU顯示屏初始化鍵盤掃描輸入有按鍵命執行按鍵命令顯示下.輸入正確.NY圖程序流程圖主程序的定義與錄入Y顯示正確確N8255入初始化2CPU初始化顯示主程序首先進行存儲變量的定義:存儲各測試單詞的長度,如果輸入的單詞長度與存儲的不同,也為錯誤。為能動態地顯示測試的單詞,先將要測試的單詞存在一個二維數組中,顯示了該數組中的字符時,顯示函數也會被調用b6db1000hdup('$')b9db'Youdonotknowthefollowingwords,pleaserememberthemagian',0ah,0dh,'$'f1db'verygood,congratulationstoyou',0ah,0dh,'$'主程序的主循環主程序的主循環部分代碼及注釋如下:movWords,cl;保存單詞數目leasi,Buffer;數據緩沖區地址movbx,[]mov口,bx;把第一個節點的前一個節點地址指向最后一個節點mov口,si;把最后一個節點的下一個節點地址指向第一個節點,形成循環鏈表鍵盤的輸入是通過矩陣掃描的方法,通過矩陣掃描可找到按鍵所在的某行某列,但要得到一個英文字母值,還得在返回的某行某列位置預先定義個字母值,因此5*6矩陣鍵盤的整個返回字母表可定義一個二維數組存儲。該二維數組為行*列10*5,即10行5列,10行表示有10個單詞,實際根據存儲ROM的大小,可以增加單詞數;列數表示單詞在存儲器中占的字符數,以最長單詞(5個字符)定義,不足5個字符的單詞后補空格表示。輸入單詞:提示輸入單詞,輸入最少5個、最多255個英文單詞,每個單詞不超過20個字符;若直接回車,則結束單詞輸入,進入單詞測試;輸足20個字符,自動進入下一個單詞的輸入;不足20個字符個字符,按回車鍵進入下一個單詞的輸入。單詞錄入模塊程序代碼段:Input_WordsProcNear;輸入一組單詞xorcl,cl;輸入的單詞數目初值leabx,Buffer;數據緩沖區地址movdi,bxOutputPrompt_Str1;提示輸入單詞@@Input_Words:cmpcl,255jz@@Termanate;限定最多255個單詞mov:],No;初始化識別標志mov口,di;前一個節點地址mov[],Chrs+1;每個單詞最多字符數movdi,bxleadx,[];鍵盤輸入緩沖區地址movah,0ah;輸入單詞int21hmovsi,dxincsilodsb;讀入實際輸入的字符個數,即單詞長度testal,al;直接回車?jz@@Termanate;是,結束單詞輸入inccl;累計輸入的單詞數目xorah,ahaddsi,axmov[si],'$';使之能用dos功能調用9號功能顯示這個字符串(單詞)incsimov口,si;下一個節點地址movbx,sicallOutput_CTLF;輸出一個回車、換行jmp@@Input_Words;輸入下一個單詞@@Termanate:cmpcl,10jb@@Input_Words;限定最少5個單詞movWords,cl;保存單詞數目leasi,Buffer;數據緩沖區地址movbx,[]mov[],bx;把第一個節點的前一個節點地址指向最后一個節點mov口,si;把最后一個節點的下一個節點地址指向第一個節點,形成循環鏈表callOutput_CTLFretInput_WordsEndP
圖單詞錄入模塊單詞記憶測試:從輸入的第一個單詞開始測試。鍵入'y'(不分大小寫)或'n',回答是否認識,不需按回車鍵確認,其它按鍵無效。緊接著,沒有提示,可按上移鍵或下移鍵循環測試。按Esc鍵結束測試。然后計算單詞識別率并顯示輸出。提示是否進行下一組單詞的輸入和測試,鍵入'y'(不分大小寫)或'n'選擇是否繼續,不需按回車鍵確認,其它按鍵無效。單詞測試程序代碼段:Test_WordsProcNearcallOutput_CTLFcallOutput_CTLFleadx,[][2]movah,9int21hcallOutput_CTLFOutputPrompt_Str2;要求回答是否認識這個詞匯,回答字母不分大小寫@@Recognise:or口,YescallYes_or_Nojc@@Up_Downand[],No@@Up_Down:xorah,ahint16hcmpah,KBEscjnz$+3retcmpah,KBUpjnz@@Next_KBDownmovsi,[]jmpTest_Words@@Next_KBDown:cmpah,KBDownjnz@@Up_Downmovsi,[]jmpTest_WordsTest_WordsEndP圖單詞測試模塊圖矩陣鍵盤輸入模塊矩陣鍵盤采用5X6列與行掃描法,P1口依次接鍵盤的每一行,而P3口依次接鍵盤的每一列,程序開始先令P1全為高電平,P3口全為低電平,這樣一旦矩陣鍵盤中有一個鍵按下時,就會在某一行中出現低電平,而某一列中出現高電平,程序先讀P1口,以檢測到有低電平來確定行。再使P1全為低電平,P3口全為高電平,再讀P3口,以檢測到低電平來確定列。這里還要考慮按鍵的機械抖動問題,因為按鍵的機械特性,可能在按下瞬間會有一組抖動的脈沖,一般程序中采用延時方法來去抖動。LCD12864顯示模塊LCD12864顯示模塊的程序作為顯示部分的底層程序,用戶可直接調用其函數來達到驅動和顯示功能。清顯示屏,將LCD上的顯示字符清空。字符的顯示,將輸入的字符,單詞顯示在液晶顯示屏上。進入主程序后,先對LCD12864屏進行初始化和清屏操作,然后在LCD12864屏上顯示單片機單詞記憶測試器的靜態的圖文,需要動態刷新的字符則在主循環中進行。LCD12864的顯示效果如下,此時系統進入單詞輸入測試就緒狀態。圖單詞測試就緒狀態在系統進入單詞輸入測試就緒狀態后,主程序即進入while(1)的主循環中,循環進行鍵盤掃描,并判斷鍵盤輸入值,再與待測試的單詞進行比較,如果輸入的字符和字符長度均與被測試的單詞一致,則顯示correct加1,即為加1分,并進入下一個單詞的測試,測試完10個單詞后,重新進入第1個單詞的測試。顯示字模碼的提取模塊為了使LCD12864能夠顯示用戶存儲的中文漢字和英文單詞,用戶必須將要顯示的漢字字模及英文字母字模碼存入存儲器中,因LCD12864只能顯示點陣圖形,因此存儲入單片機的字模碼必須是通過點陣碼轉換而成,為了軟換更方便,設計使用了字模轉換軟件實現英文碼的取模。源程序清單b6db1000hdup('$')b9db'Youdonotknowthefollowingwords,pleaserememberthemagian',0ah,0dh,'$'f1db'verygood,congratulationstoyou',0ah,0dh,'$'callzi4;輸出不認識的單詞movah,02h;回車換行movdl,0dhint21hmovah,02hmovdl,0ahint21hcallzi2;將不認識的單詞存到B6所指單元callzi2;將不認識的單詞存到B6所指單元m2:incdimovsi,z;保留SI的地址zi4procpushaxpushbxpushcxpushdxpushsipushdi
leadx,b9;輸出不認識的單詞movah,09hint21hleadx,b6movah,09hint21hpopdipopsipopdxpopcxpopbxpopaxretzi4endpCodeSegmentAssumeCS:Code,DS:Code; 功能:顯示指定地址(Str_Addr)的字符串入口:Str_Addr=字符串地址(要求在數據段)用法:OutputStr_Addr用法:OutputStr_Addr用法舉例:OutputPromptStr)OutputMACROStr_AddrOutputMACROStr_Addrpushaxleadx,Str_Addrmovah,9int21hpopaxEndM; ;功能:輸出一個字符;入口:dl=要顯示的字符Output_ChrprocNearpushaxmovah,02hint21hpopaxretO:蘭蘭—;功能:輸出回車換行Output_CTLFprocNearpushaxpushdxmovah,02hmovdl,0dhint21hmovdl,0ahint21hpopdxpopaxretOutput_CTLFendp; ;功能:把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,并送顯示屏顯示;入口:AX=X進制數;出口:在當前光標位置顯示轉換后的ASCII碼數字Dec_ASCIIProcNearpushdxpushbxpushdimovbx,10leadi,@@Temp_Save[6]movBYTEptr[di],'$'decdi@@Divide:xordx,dxdivbxordl,30hmov[di],dldecditestax,0ffffhjnz@@Divideincdipushdipopdxmovah,9int21hpopdipopbxpopdxret@@Temp_Savedb7dup(?)Dec_ASCIIEndP;功能:鍵盤輸入一個字符,若輸入的是'y'或'n'(不分大小寫),則顯示并返回;入口:無;出口:若輸入的是'y',進位標志置位;若輸入的是'n',進位標志復位。Yes_or_NoprocNearpushdxpushax@@Input_Chr:movah,7;不帶回顯的鍵盤輸入int21hmovdl,alandal,0dfhcmpal,'Y'jnz$+5stcjmp$+7cmpal,'N'jnz@@Input_Chrclcmovah,2int21hpopaxpopdxretYes_or_NoEndp; Input_WordsProcNear;輸入一組單詞xorcl,cl;輸入的單詞數目初值leabx,Buffer;數據緩沖區地址movdi,bxOutputPrompt_Str1;提示輸入單詞@@Input_Words:cmpcl,255jz@@Termanate;限定最多255個單詞mov:],No;初始化識別標志mov[],di;前一個節點地址mov[],Chrs+1;每個單詞最多字符數movdi,bxleadx,口;鍵盤輸入緩沖區地址movah,0ah;輸入單詞int21hmovsi,dxincsilodsb;讀入實際輸入的字符個數,即單詞長度testal,al;直接回車?jz@@Termanate;是,結束單詞輸入inccl;累計輸入的單詞數目xorah,ahaddsi,axmov[si],'$';使之能用dos功能調用9號功能顯示這個字符串(單詞)incsimov口,si;下一個節點地址movbx,sicallOutput_CTLF;輸出一個回車、換行jmp@@Input_Words;輸入下一個單詞@@Termanate:cmpcl,5jb@@Input_Words;限定最少5個單詞movWords,cl;保存單詞數目leasi,Buffer;數據緩沖區地址movbx,[]mov[],bx;把第一個節點的前一個節點地址指向最后一個節點mov[],si;把最后一個節點的下一個節點地址指向第一個節點,形成循環鏈表callOutput_CTLFretInput_WordsEndP; TestWordsProcNear\。…CTLFcallOutput_ClLFcallOutput_CTLFleadx,[][2]movah,9int21hcallOutput_CTLFOutputPrompt_Str2;要求回答是否認識這個詞匯,回答字母不分大小寫@@Recognise:or[],YescallYes_or_Nojc@@Up_Downand[],No@@Up_Down:xorah,ahint16hcmpah,KBEscjnz$+3retcmpah,KBUp
jnz@@NextKBDownmovsi,口jmpTestWords@@NextKBDown:cmpah,KBDownjnz@@Up_Downmovsi,口jnz@@NextKBDownmovsi,口jmpTestWords@@NextKBDown:cmpah,KBDownjnz@@Up_Downmovsi,口jmpTestWordsTestWordsEndPStatics_WordsProcNear;計算單詞識別率movcl,Words;取單詞數xorch,chleasi,Buffer;數據緩沖區地址movbx,[]xorax,ax@@L0:addal,口;累加識別率movsi,[]loop@@L0movbl,100mulbldivWordsOutputPrompt_Str3;提示顯示單詞識別率callDec_ASCII;把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,并送顯示屏顯示movdl,'%'callOutput_Chr;顯示輸出一個字符retStatics_WordsEndP; Chrsequ20;單詞最多字符數Yesequ1;認識Noequ0;不認識KBEscequ1;Esc鍵掃描碼KBUpequ48H;1鍵掃描碼KBDownequ50H;1鍵掃描碼;定義結構類型Words_TableStruc;單詞鏈表Recognisedb?;識別標志(是否認識這個單詞)previousdw?;前一個節點地址Nextdw?;下一個節點地址Words_TableEndS; Prompt_Str1db'Pleaseinputwords:',13,10,'$';“請輸入單詞”提示信息Prompt_Str2db'doyouknowit?(y/n):$';“是否認識單詞”提示信息Prompt_Str3db7,13,10,13,10,'youranswerrateis:$';“單詞識別率”提示信息Prompt_Str4db7,13,10,13,10,'Doyouwanttotestagain(y/n)?$';“測試下一組單詞?”提示信息Wordsdb0;實際輸入的單詞數目Press_Keydb7,13,10,13,10,'Thecomplated.Pressanykeytoexit...$';操作完成按任意鍵結束程序提示信息Start: pushcspopdspushcspopes;使數據段、附加段與代碼段同段@@InputWord:callInput_Words;輸入一組單詞callTest_Words;測試識別率callStatics_Words;計算單詞識別率OutputPrompt_Str4;再測試一組單詞?callYes_or_NocallOutput_CTLFcallOutput_CTLFjc@@InputWord; Exit_Proc:OutputPress_Key;提示操作完成,按任意鍵結束程序movah,1int21hmovah,4ch;結束程序int21hBuffer:;數據緩沖區CodeENDSENDStart;編譯到此結束5所選芯片清單總結時光飛逝,短短的兩周的課程設計即將結束,現在回頭想想兩周的設計,我們對自己的這次設計有了更深,更新
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥品分成協議書
- 茶館合伙協議書
- 簽訂貿易協議書
- 夫妻吵架解決好協議書
- 王楠離婚協議書
- 聯合應急協議書
- 服裝店員工聘用協議書
- 在職研究生定向協議書
- 房產代理人合同協議書
- 村環境衛生保潔協議書
- 液化天然氣汽車加氣站技術規范
- (正式版)SHT 3158-2024 石油化工管殼式余熱鍋爐
- 加油站百日攻堅行動實施方案
- 供電企業輿情的預防及處置
- GB/T 41666.4-2024地下無壓排水管網非開挖修復用塑料管道系統第4部分:原位固化內襯法
- 4、《通向金融王國的自由之路》
- 大學生職業素養(高職)全套教學課件
- 涉密內網分級保護設計方案
- 木地板培訓資料大全
- 康養旅游概念及市場現狀分析
- 99版-干部履歷表-A4打印
評論
0/150
提交評論