實(shí)驗(yàn)4 分支結(jié)構(gòu)_第1頁
實(shí)驗(yàn)4 分支結(jié)構(gòu)_第2頁
實(shí)驗(yàn)4 分支結(jié)構(gòu)_第3頁
實(shí)驗(yàn)4 分支結(jié)構(gòu)_第4頁
實(shí)驗(yàn)4 分支結(jié)構(gòu)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)四 分支結(jié)構(gòu)程序設(shè)計(jì)實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?1掌握分支結(jié)構(gòu)程序設(shè)計(jì)的基本設(shè)計(jì)方法; 2掌握條件轉(zhuǎn)移指令和無條件轉(zhuǎn)移指令的使用方法; 3掌握指令對標(biāo)志寄存器中各標(biāo)志位的影響情況; 4掌握多分支結(jié)構(gòu)程序設(shè)計(jì)的三種方法:樹型結(jié)構(gòu)法、地址常數(shù)表法和指令常數(shù)表法。 二、實(shí)驗(yàn)要求 1學(xué)會使用DEBUG的T命令,跟蹤檢查指令對標(biāo)志位的影響情況; 2學(xué)會使用DEBUG中的P命令,對INT指令的跟蹤方法; 3學(xué)會利用設(shè)置斷點(diǎn)調(diào)試程序的方法; 4了解大寫、小寫字母及數(shù)字在計(jì)算機(jī)內(nèi)的表示方法及轉(zhuǎn)換方法。 三、實(shí)驗(yàn)內(nèi)容1編寫程序,已知在DATA開始的內(nèi)存單元中,連續(xù)存放著三個一位十六進(jìn)制數(shù),找出其中最大數(shù)及最小數(shù),存

2、放在指定的內(nèi)存單元中。 2編寫程序,從鍵盤輸入若干個任意字符,如果是小寫字母az之間的字符,請將它們轉(zhuǎn)換成相應(yīng)的大寫字母,若為其它字符,則保持不變,將轉(zhuǎn)換后的新字符保存在指定的存儲單元中。四、解題思路1先對DATA內(nèi)存單元連續(xù)存放三個一位十六進(jìn)制數(shù)。先對DATA內(nèi)存單元里的前兩個數(shù)據(jù)比較,較大的數(shù)據(jù)再和第三個數(shù)據(jù)比較,從而得到最大數(shù)據(jù)存到MAX內(nèi)存單元里。把兩次比較得到的兩個較小的數(shù)據(jù)進(jìn)行比較,從而得到最小數(shù)據(jù)存到MIN內(nèi)存單元里。兩個無符號數(shù)據(jù)比較后,用JA/JNBE、JAE/JNB/JNC/、JB/JNAE/JC和JBE/JNA來判別兩數(shù)的大小關(guān)系,這些條件轉(zhuǎn)移指令是把進(jìn)位標(biāo)志CF和零標(biāo)志

3、位ZF結(jié)合起來判別的。2先開辟20個字節(jié)的內(nèi)存單元DATA用來存儲輸進(jìn)來字符串和修改后的字符串。對字符串的輸入是以#為結(jié)束字符的,當(dāng)字符的個數(shù)少于20時,只要輸入的字符串是以#結(jié)尾,就代表字符串輸入結(jié)束(其中結(jié)束字符#也是字符串中的一個字符存儲到內(nèi)存單元里)。每次輸入一個字符,就對其進(jìn)行判別。若輸入的字符在字符a到z之間,那么就對其進(jìn)行轉(zhuǎn)換成對應(yīng)的大寫字母(方法把小寫字母的值減去32即可),然后再存到指定的內(nèi)存單元中;否則,直接把輸入的字符存到指定的內(nèi)存單元中去。存儲結(jié)束,要對輸入的字符與字符#比較,若不相等,就跳到下次輸入,進(jìn)行新的輸入;否則,表示輸入結(jié)束,并對內(nèi)存單元里存儲的字符進(jìn)行輸出。

4、五、程序清單并注釋及程序流程圖 1.源程序SSEG SEGMENT STACK ;設(shè)置堆棧段STK DB 20 DUP (0)SSEG ENDSDSEG SEGMENTDATA DB 15H,0AH,05H ;DATA內(nèi)存單元中連續(xù)存放三個一位十六進(jìn)制數(shù)MAX DB? ;存最大值MIN DB? ;存最小值DSEG ENDSCSEG SEGMENT ASSUMECS: CSEG, DS: DSEG ASSUME SS: SSEGSTART: MOV AX, DSEG MOV DS, AX開始 MOV AX, SSEG MOV SS, AX MOV SP, SIZE STK設(shè)置數(shù)據(jù)段地址設(shè)置堆棧段

5、地址 LEA SI,DATA ;取DATA首地址 MOV AL, SI MOV BL, SI+1 CMP AL,BL;比較前兩個數(shù)設(shè)置堆棧指針 JAE FMAX1 MOV AH,AL;交換數(shù)據(jù) MOV AL, BLAL 第一個數(shù)BL 第二個數(shù) MOV BL, AHFMAX1:CMP AL,SI+2;較大的與第三個數(shù)比較 JAE FMIN1兩個數(shù)比較大小AL-BL MOV AL,SI+2;保存最大值 JMP MOVEFMIN1:CMP BL,SI+2;兩個較小的數(shù)比較AL=BL JAE FMIN2 JMP MOVEYFMIN2:MOV BL,SI+2;保存最小值MOVE: MOV MAX, AL

6、NAL和BL交換 MOV MIN, BL MOV AH, 4CH INT 21HAL與第三個數(shù)比較大小CSEG ENDS END STARTAL大?NYAL 第三個數(shù)BL與第三個數(shù)比較大小2.源程序DSEG ENDSCSEG SEGMENTBL大? ASSUME CS: CSEG, DS: DSEGN ASSUME SS: SSEGSTART: MOV AX, DSEG MOV DS, AXYBL 第三個數(shù) MOV AX, SSEG MOV SS, AX MOV SP, SIZE STKAL中的數(shù)為最大值BL中的數(shù)為最小值 MAX AL MIN BL LEA SI,DATA ;取內(nèi)存單元首地址INPUT:MOV AH,01H ;輸入字符 INT 21H CMP AL,a ;與a比較 JB FUZHI CMP AL,z ;與z比較保存結(jié)果 JA FUZHI SUB AL,a-A;小寫轉(zhuǎn)換大寫FUZHI:MOV SI,AL;存儲結(jié)果結(jié)果 INC SI CMP AL,#;判別是否結(jié)束 JNE INPUT MOV AH, 4CH INT 21

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論