


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、b6db 1000h dup($)b9db You do not know the following words , please remember them agian,0ah,0dh,$fl db very good,congratulations to you,0ah,0dh,$call zi4;輸出不認識的單詞mov ah,02h;回車換行mov dl,0dhint 21hmov ah,02hmov dl,0ahint 21hcall zi2;將不認識的單詞存到 B6所指單元call zi2;將不認識的單詞存到 B6所指單元m2:inc dilea si,b6;將不認識的單詞放到 B
2、6所指單元mov si,z;保留SI的地址zi4procpush axpush bxpush cxpush dxpush sipush dilea dx,b9;輸出不認識的單詞mov ah,09hint 21hlea dx,b6mov ah,09hint 21hpop dipop sipop dxpop cxpop bxpop axretzi4endp操作說明:一、輸入單詞:;1、提示輸入單詞,輸入最少5個、最多255個英文單詞,每個單詞不超過20個字符。2、若直接回車,則結束單詞輸入,進入單詞測試;3、輸足20個字符,自動進入下一個單詞的輸入;4、不足20個字符個字符,按回車鍵進入下一個單詞
3、的輸入。;二、單詞記憶測試:1、從輸入的第一個單詞開始測試2、鍵入y(不分大小寫)或n,回答是否認識,不需按回車鍵確認,其它按鍵無效;3、緊接著,沒有提示,可按上移鍵或下移鍵循環測試;4、按Esc鍵結束測試。 三、計算單詞識別率并顯不需按回示輸出;四、提示是否進行下一組單詞的輸入和測試,鍵入y(不分大小寫)或n選擇是否繼續,車鍵確認,其它按鍵無效。本程序在MASMPIus 1.2集成環境下通過編譯,經過調試,運行正確。Code SegmentAssume CS:Code,DS:Code功能:顯示指定地址(Str_Addr )的字符串入口: Str_Addr =字符串地址(要求在數據段)用法:O
4、utput Str_Addr用法舉例:Output PromptStr )Output MACRO Str_Addrpush axlea dx,Str_Addrmov ah,9int 21hpop axEndM;功能:輸岀一個字符;入口: dl=要顯示的字符Output_Chr proc Nearpush axmov ah,02hint 21hpop axretOutput_Chr endp;功能:輸岀回車換行Output_CTLF proc Nearpush axpush dxmov ah,02hmov dl,0dhint 21hmov dl,0ahint 21hpop dxpop axre
5、tOutput_CTLF endp功能:把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,并送顯示屏顯示入口: AX=X進制數;岀口:在當前光標位置顯示轉換后的ASCII碼數字Dec_ASCII Proc Nearpush dxpush bxpush dimov bx,10lea di,Temp_Save6mov BYTE ptr di,$dec diDivide: xor dx,dxdiv bxor dl,30hmov di,dldec ditest ax,0ffffhjnz Divideinc dipush dipop dxmov ah,9int 21hpop dipop bxpop
6、 dxretTemp_Save db 7 dupDec_ASCII EndP;功能:鍵盤輸入一個字符,若輸入的是y或n(不分大小寫),則顯示并返回;入口:無;岀口:若輸入的是y,進位標志置位;若輸入的是n,進位標志復位。Yes_or_No proc Nearpush dxpush axInput_Chr: mov ah,7 ; 不帶回顯的鍵盤輸入int 21hmov dl,aland al,0dfhcmp al, Yjnz $+5stcjmp $+7cmp al,Njnz lnput_Chrclcmov ah,2int 21hpop axpop dxretYes_or_No Endplnput
7、_Words Proc Near ;輸入一組單詞xor cl,cl ; 輸入的單詞數目初值lea bx,Buffer ; 數據緩沖區地址mov di,bxOutput Prompt_Str1 ;提示輸入單詞lnput_Words: cmp cl,255初始化識別標志前一個節點地址 每個單詞最多字符數jz Termanate ;限定最多255個單詞mov bx.Recognise,No ;mov bx.previous,di ;mov bx.Next,Chrs+1 ;mov di,bxlea dx,bx.Next;鍵盤輸入緩沖區地址mov ah,0ah ;輸入單詞int 21hmov si,dx
8、inc silodsb ;讀入實際輸入的字符個數,即單詞長度test al,al ;直接回車?jz Termanate ; 是,結束單詞輸入inc cl ;累計輸入的單詞數目xor ah,ahadd si,axmov si,$;使之能用dos功能調用9號功能顯示這個字符串(單詞)inc simov bx.Next,si ;下一個節點地址mov bx,sicall Output_CTLF ;輸出一個回車、換行jmp Input_Words ;輸入下一個單詞Termanate: cmp cl,5jb Input_Words ;限定最少5個單詞mov Words,cl ; 保存單詞數目lea si,
9、Buffer ;數據緩沖區地址mov bx,bx.previousmov si.previous,bx ;把第一個節點的前一個節點地址指向最后一個節點mov bx.Next,si ;把最后一個節點的下一個節點地址指向第一個節點,形成循環鏈表call Output_CTLFretlnput_Words EndPTest_Words Proc Nearcall Output_CTLFcall Output_CTLFlea dx,si.Next2mov ah,9int 21hcall Output_CTLFOutput Prompt_Str2 ;要求回答是否認識這個詞匯,回答字母不分大小寫Recog
10、nise: or si.Recognise,Yescall Yes_or_Nojc Up_Downand si.Recognise,NoUp_Down: xor ah,ahint 16hcmp ah,KBEscjnz $+3retcmp ah,KBUpjnz Next_KBDownmov si,si.previousjmp Test_WordsNext_KBDown: cmp ah,KBDownjnz Up_Downmov si,si.Nextjmp Test_WordsTest_Words EndPJStatics_Words Proc Near ;計算單詞識別率mov cl,Words ;
11、取單詞數xor ch,chlea si,Buffer ;數據緩沖區地址mov bx,si.Nextxor ax,axL0: add al,si.Recognise; 累加識別率mov si,si.Nextloop L0mov bl,100mul bldiv WordsOutput Prompt_Str3 ;提示顯示單詞識別率call Dec_ASCII ;把AX中的二進制無符號數轉換成顯式的十進制ASCII碼,并送顯示屏顯示mov dl,%call Output_Chr ;顯示輸出一個字符retStatics_Words EndPChrs equ 20 ;單詞最多字符數Yes equ1 ;認識
12、No equ0 ;不認識KBEscequ1 ;Esc鍵掃描碼KBUpequ48H ;T鍵掃描碼KBDownequ50H ;J鍵掃描碼;定義結構類型Words_Table Struc ; 單詞鏈表Recognise db ?;識別標志(是否認識這個單詞)previous dw ?;前一個節點地址Next dw ?;下一個節點地址Words_Table EndSPrompt_Str1 db Please input words:,13,10,$;請輸入單詞”提示信息Prompt_Str2 db do you know it ?(y/n):$;“是否認識單詞”提示信息Prompt_Str3 db 7
13、,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.$;操作完成按任意鍵結束程序提示信息Start: push cspop dspush cspop es ;使數據段、附加段與代碼段同段InputWord: call Input_Wor
14、ds ;輸入一組單詞call Test_Words ;測試識別率call Statics_Words ;計算單詞識別率Output Prompt_Str4 ;再測試一組單詞?call Yes_or_Nocall Output_CTLFcall Output_CTLFjc lnputWordExit_Proc: Output Press_Key ;提示操作完成,按任意鍵結束程序mov ah,1int 21hmov ah,4ch ;結束程序int 21hBuffer:; 數據緩沖區Code ENDSEND Start ; 編譯到此結束1. 實現單詞的錄入(為使程序具有可演示性,單詞不少于10個)。
15、2. 單詞根據按鍵控制依次在屏幕上顯示,按鍵選擇認識還是不認識,也可以直接進入下一個或者上一個。3. 單詞背完后給岀正確率。Code Segme ntAssume CS:Code,DS:CodeOutput MACRO Str_Addr push axlea dx,Str_Addrmov ah,9int 21hpop axEn dMOutput_Chr proc Near push ax mov ah,02h int 21hpop axretOutput_Chr endpOutput_CTLF proc Near push ax push dx mov ah,02hmov dl,Odhint
16、21hmov dl,Oahint 21hpop dxpop axretOutput_CTLF endpDec_ASCII Proc Nearpush dxpush bxpush dimov bx,10lea di,Temp_Save6 mov BYTE ptr di,$dec diDivide: xor dx,dx div bx or dl,30h mov di,dl dec ditest ax,0ffffhjnz Divide inc di push di pop dx mov ah,9int 21hpop dipop bxpop dxretTemp_Savb 7 dup(?) Dec_AS
17、CII EndP;功能:鍵盤輸入一個字符,若輸入的是y或n(不分大小寫),則顯示并返 回;入口:無;出口:若輸入的是y,進位標志置位;若輸入的是n,進位標志復位。Yes_or_No proc Nearpush dxpush axlnput_Chr: mov ah,7 ;不帶回顯的鍵盤輸入 int 21hmov dl,aland al,Odfhcmp al, Yjnz $+5stcjmp $+7cmp al, Njnz I nput_Chrclcmov ah,2int 21hpop axpop dxretYes_or_No EndpInput_Words Proc Near;輸入一組單詞xor
18、cl,cl ;輸入的單詞數目初值lea bx,Buffer ;數據緩沖區地址mov di,bxOutput Prompt_Str1;提示輸入單詞I nput_Words:cmp cl,255jz Termanate ;限定最多255個單詞mov bx.Recognise,No;初始化識別標志mov bx.previous,di ;前一個節點地址mov bx.Next,Chrs+1 ;每個單詞最多字符數mov di,bxlea dx,bx.Next ;鍵盤輸入緩沖區地址mov ah,0ah ;輸入單詞int 21hmov si,dxinc silodsb ;讀入實際輸入的字符個數,即單詞長度te
19、st al,al;直接回車?jz Termanate ;是,結束單詞輸入inc cl;累計輸入的單詞數目xor ah,ahadd si,axmov si,$;使之能用dos功能調用9號功能顯示這個字符串(單詞)inc simov bx.Next,si;下一個節點地址mov bx,sicall Output_CTLF;輸出一個回車、換行jmp lnput_Words ;輸入下一個單詞Terma natecmp cl,10jb Input_Words ;限定最少5個單詞mov Words,cl ;保存單詞數目lea si,Buffer;數據緩沖區地址mov bx,bx.previousmov si
20、.previous,bx;把第一個節點的前一個節點地址指向最后一個節占八、mov bx.Next,si;把最后一個節點的下一個節點地址指向第一個節點,形成循環鏈表call Output_CTLFretIn put_Words EndPTest_Words Proc Nearcall Output_CTLFcall Output_CTLFlea dx,si.Next2mov ah,9int 21hcall Output_CTLFOutput Prompt_Str2;要求回答是否認識這個詞匯,回答字母不分大小寫Recog nise:or si.Recog ni se,Yescall Yes_or_
21、Nojc Up_Dow nand si.Recog ni se,NoUp_Dowxor ah,ahint 16hcmp ah,KBEscjnz $+3retcmp ah,KBUpjnz Next_KBDow nmov si,si.previousjmp Test_WordsNext_KBDowcmp ah,KBDow njnz Up_Dow nmov si,si.Nextjmp Test_WordsTest Words EndPStatics_Words Proc Near ;計算單詞識別率mov cl,Words;取單詞數xor ch,chlea si,Buffer;數據緩沖區地址mov b
22、x,si.Nextxor ax,axL0: add al,si.Recognise;累加識別率mov si,si.Nextloop L0mov bl,100mul bldiv WordsOutput Prompt_Str3;提示顯示單詞識別率call Dec_ASCII;把AX中的二進制無符號數轉換成顯式的十進制 ASCII碼,并送顯示屏顯示mov dl, %call Output_Chr ;顯示輸出一個字符retStatics_Words EndPChrsequ 20 ;單詞最多字符數Yesequ1;認識Noequ0;不認識KBEscequ 1 ;Esc鍵掃描碼KBUpequ 48H; T鍵掃描碼KBDow nequ 50H; /鍵掃描碼;定義結構類型Words_Table Struc ;單詞鏈表Recognise db ?;識別標志(是否認識這個單詞) p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 來華留學生中級漢語綜合課多模態線上教學研究
- 餐飲衛生安全教育培訓
- 自我認知與心理健康
- 小班幼兒游戲活動課件設計
- 大班健康:吃進去的食物去哪了
- 解讀護理條例案例
- 我愛游泳健康教育指南
- 頸椎影像檢查技術課件教學
- 2025年吉林省中考招生考試數學真題試卷(真題+答案)
- 客服培訓與發展戰略
- 江蘇揚州經濟技術開發區區屬國有企業招聘筆試真題2024
- CT增強掃描造影劑外滲的預防與處理
- 深靜脈置管的維護與護理
- 孤獨癥業務管理制度
- 勞務服務購買協議書范本
- Alport綜合征基因診斷
- 搜身帶離技術課件
- 校準員試題及答案
- 2025-2030年中國臨空經濟行業深度評估及市場研究發展研究報告
- 蕪湖勞動合同書版模板
- DB31/T 921-2015婚慶服務規范
評論
0/150
提交評論