實驗3分支程序實驗_第1頁
實驗3分支程序實驗_第2頁
實驗3分支程序實驗_第3頁
實驗3分支程序實驗_第4頁
實驗3分支程序實驗_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 南昌大學實驗報告學生姓名: 萬升強 學 號: 6100412020 專業(yè)班級: 電三121班 實驗類型: 驗證 綜合 設計 創(chuàng)新 實驗日期: 2013.12.08 實驗成績: 實驗3 分支程序實驗一實驗目的1 掌握單分支、雙分支、多分支程序的設計方法;2 掌握利用DEBUG或CODEVIEW修改參數(shù)、檢查結果的方法;1 熟悉匯編語言源程序的編輯、匯編、連接及調試過程。二實驗內容1猜數(shù)程序,預設一數(shù)字字符M,從鍵盤輸入一個數(shù)字字符N,判斷:若N <M,顯示“TOO BIG”;若N >M 則顯示“TOO SMALL”;否則顯示“YOUR ARE RIGHT”data segment

2、hex dw 35h message_1 db 0dh,0ah,'please input a number',0dh,0ah,'$' message_2 db 0dh,0ah,'too big',0dh,0ah,'$' message_3 db 0dh,0ah,'too small',0dh,0ah,'$' message_4 db 0dh,0ah,'your are right',0dh,0ah,'$'data endscode segment assume cs

3、:code,ds:datastart:mov ax,data mov ds,ax mov dx,offset message_1 mov ah,9 int 21h mov ax,hex mov bx,axagain:mov ah,1 ;輸入比較數(shù) int 21h cmp al,1bh ;比較大小 je exit cmp bl,al jc age_2 ;小則跳轉到age_2 ja age_3 ;大則跳轉到age_3 je age_4 ;相等則跳轉到 age_4age_2:mov dx,offset message_2 mov ah,9 int 21h jmp againage_3:mov dx,

4、offset message_3 mov ah,9 int 21h jmp againage_4:mov dx,offset message_4 mov ah,9 int 21h jmp again exit:mov ah,4ch ;程序結束 int 21hcode ends end start2 編寫一個程序,判別鍵盤上輸入的字符;若是1-9字符,則顯示“IT IS A DIGITAL”;若為A-Z或a-z字符,均顯示“IT IS A LOWCASE LETTER”;若是回車字符<CR>(其ASCII碼為0DH),則結束程序,若為其它字符則不顯示,繼續(xù)等待新的字符輸入。data

5、segment message_1 db 0ah,'it is a digital',0ah,'$' message_2 db 0ah,'it is a alowcase letter',0ah,'$' message_3 db 0ah,'please input a key',0ah,'$'data endscode segment assume ds:data,cs:codestart:mov ax,data mov ds,ax mov dx,offset message_3 mov ah,9

6、int 21hagain:mov ah,1 ;輸入數(shù)據(jù) int 21h cmp al,0dh ;比較是否為回車,是就退出程序 je exit cmp al,30h ;比較是數(shù)字還是字母 jc again cmp al,39h jbe age_1 cmp al,41h jc again cmp al,5ah jbe age_2 cmp al,61h jc again cmp al,7ah jbe age_2 ja againage_1:mov dx,offset message_1 mov ah,9 int 21h jmp againage_2:mov dx,offset message_2 m

7、ov ah,9 int 21h jmp againexit:mov ah,4ch int 21hcode ends end start 3 預留字符串口令,輸入口令串與預留密碼串比較。若匹配則顯示“MATCH”,否則顯示“NOMATCH!,PROGRAM TERMINATED!”data segment message1 db 'jason' message1_len equ $-message1 message3 db 0dh,0ah,'match!$' message2 db 0ah,0dh,'nomatch,progam terminated!$&

8、#39; buffer db '50',?,50 dup(?)data endscode segment assume cs:code,ds:datastart:mov ax,data mov ds,axagain:lea dx,buffer ;輸入字符串 mov ah,0ah int 21h cmp al,1bh ;是esc則退出程序 je exit xor cx,cx mov cl,buffer1 cmp cl,message1_len ;比較預留字符與輸入字符長度 jne age_2 ;長度不相等則跳轉age_2 mov di,0 mov si,2lop: mov al,

9、message1di ;逐一比較預留字符和輸入字符 mov bl,buffersi cmp al,bl jne age_2 ;比較中出現(xiàn)不同跳轉至age_2 inc si inc di loop lopdisplay:lea dx,message3 ;完全相同則顯示message3 mov ah,9 int 21h mov ah,4ch int 21hage_2:lea dx,message2 mov ah,9 int 21h jmp againexit:mov ah,4ch int 21h code ends end start45 上述程序1、2、3分別完成后請編寫一個程序來實現(xiàn)簡單的程序

10、菜單顯示。(采用地址跳躍表法實現(xiàn))顯示一個菜單要求用戶從下表中選擇:(1) GUESS NUMBER GAME (對應>程序1)(2) CHAR SELECTION PROGRAM(對應>程序)(3) PASSWORD PROGRAM(對應>程序)(4) PRESS “ESC” TO QUIT用戶作出選擇13時,顯示輸出要執(zhí)行操作的名字,如“Your selection is 1,the program will execute GUESS NUMBER GAME!”然后轉向相應的程序去執(zhí)行,執(zhí)行結束前進行退出的判斷,顯示一個提示信息“will you continue pr

11、ogram really?(Y:N)”要求用戶從鍵盤鍵入字符,若是“Y”鍵,則繼續(xù)程序的執(zhí)行,若是“N”鍵,則返回到菜單。若用戶選擇4,要求程序顯示提示信息“Please press ESC key to exit!”,并能按要求正確退出。DATA SEGMENT table dw start dw opt_1 ;子程序地址表 dw opt_2 dw opt_3 dw opt_4 menu db 0dh,0ah,'(1)Guess numble game '顯示菜單 db 0dh,0ah,'(2)Char selection progrem ' db 0dh,0

12、ah,'(3)Password progrem ' db 0dh,0ah,'(4)Press "Esc" To quit ' db 0dh,0ah,'Your selection is $' str01 db 0dh,0ah,'The program will execute "Guess number game"!$' str02 db 0dh,0ah,'The program will execute "Char selection progrem"!$

13、9; str03 db 0dh,0ah,'The program will execute "Password progrem"!$' str04 db 0dh,0ah,'Press "Esc" To quit!$' str05 db 0dH,0aH,'Will you continue program really?(Y:N)$' str11 db 0dh,0ah,'Too big!$' str12 db 0dh,0ah,'Too small!$' str13 db 0dh

14、,0ah,'You are right!$' str14 db 0dh,0ah,'Please input a numble(press "Esc" to go back to the main menu):$' str21 db 0dh,0ah,'It is a digital!',0dh,0ah,'$' str22 db 0dh,0ah,'It is a lowcase letter!',0dh,0ah,'$' str23 db 0dh,0ah,'Please inp

15、ut a char(press "Esc" to go back to the main menu):$' key db 'jason$' ;預留密碼為jason input db 7,?,7 dup(?) str31 db 0dh,0ah,'Match!$' str32 db 0dh,0ah,'Nomatch!,program terminated!$' str33 db 0dh,0ah,'Please input the password(six numbles):$'DATA ENDSCODE S

16、EGMENT ASSUME CS:CODE,DS:DATAstart: MOV AX,DATA MOV DS,AX lea si,table ;把地址表首地址給si lea dx,menu ;顯示主菜單 mov ah,09h int 21h mov ah,01h ;輸入選項 int 21h xor ah,ah sub al,30h shl ax,1 add si,ax jmp tablesi ;跳轉到相應程序opt_1: ;程序1 lea dx,str01 mov ah,09h int 21hagain1: mov bl,35h lea dx,str14 mov ah,09h int 21h

17、mov ah,01h ;輸入字符N int 21h cmp al,1bh ;按“Esc”返回到菜單 je start cmp al,bl ;比較N,M大小 ja lp11 ;大于跳轉顯示字符串1 jb lp12 ;大于跳轉顯示字符串2 lea dx,str13 ;等于跳轉顯示字符串3并退出程序 mov ah,09h int 21h jmp continue ;結束前退出的判斷 lp11:lea dx,str11 ;大于跳轉顯示字符串1并重新輸入 mov ah,09h int 21h jmp again1 lp12:lea dx,str12 ;小于跳轉顯示字符串2并重新輸入 mov ah,09h

18、 int 21h jmp again1opt_2: lea dx,str02 mov ah,09h int 21h lea dx,str23 mov ah,09h int 21hagain2: mov ah,01h ;輸入字符 int 21h cmp al,1bh je start cmp al,0dh ;按回車退出 je continue cmp al,30h ;跟0比較,小于則重新輸入 jb again2 cmp al,39h ;跟9比較,不大于則是數(shù)字 ja lp21 lea dx,str21 mov ah,09h int 21h jmp again2 lp21:cmp al,41h ;

19、跟A比較,小于則重新輸入 jb again2 cmp al,5ah ;跟Z比較,不大于則是字母 ja lp23 lp22:lea dx,str22 mov ah,09h int 21h jmp again2 lp23:cmp al,61h ;跟a比較,小于則重新輸入 jb again2 cmp al,7ah ;跟z比較,不打于則是字母 ja again2 jmp lp22opt_3: lea dx,str03 mov ah,09h int 21h lp31:lea dx,str33 ;顯示輸入提示 mov ah,09h int 21h lea dx,input ;輸入字符串,保存到input里

20、 mov ah,0ah int 21h mov cx,06h mov si,0 mov di,0again3: mov al,keydi ;input與key里的字符逐一比較 mov bl,inputsi+2 cmp al,bl jnz lp32 ;一旦出現(xiàn)不同,退出循環(huán),跳轉到lop2 inc si inc di loop again3 lea dx,str31 ;完全匹配,則密碼正確,并退出程序 mov ah,09h int 21h jmp continue lp32:lea dx,str32 ;顯示密碼錯誤,并重新輸入 mov ah,09h int 21h jmp lp31opt_4:

21、lea dx,str04 mov ah,09h int 21h mov ah,01h int 21h cmp al,1bh je exitcontinue: lea dx,str05 ;用戶是否繼續(xù)執(zhí)行當前程序 mov ah,09h int 21h mov ah,01h int 21h cmp al,'y' ;按繼續(xù),按N退出 je yes cmp al,'Y' je yes cmp al,'n' je start cmp al,'N' je start jmp continue yes:jmp tablesi exit:MOV AH,4CH INT 21

溫馨提示

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

評論

0/150

提交評論