理工 匯編語言 實驗四 分支和循環(huán)程序_第1頁
理工 匯編語言 實驗四 分支和循環(huán)程序_第2頁
理工 匯編語言 實驗四 分支和循環(huán)程序_第3頁
理工 匯編語言 實驗四 分支和循環(huán)程序_第4頁
理工 匯編語言 實驗四 分支和循環(huán)程序_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗四分支和循環(huán)程序設(shè)計實驗(設(shè)計性實驗)一、實驗要求和目的1熟悉匯編語言程序設(shè)計結(jié)構(gòu);2熟悉匯編語言分支程序基本指令的使用方法;3掌握利用匯編語言實現(xiàn)單分支、雙分支、多分支的程序設(shè)計方法;4了解匯編語言循環(huán)程序設(shè)計的基本流程;5熟悉匯編語言循環(huán)基本指令的使用方法;6掌握利用匯編語言的循環(huán)指令完成循環(huán)程序設(shè)計方法。二、軟硬件環(huán)境1、硬件環(huán)境:計算機系統(tǒng)windows;2、軟件環(huán)境:裝有MASM、DEBUG、LINK、等應(yīng)用程序。三、實驗涉及的主要知識轉(zhuǎn)移指令:在實際應(yīng)用中,經(jīng)常根據(jù)一些條件來選擇一條分支執(zhí)行。匯編語言的條件判斷主要是通 過狀態(tài)寄存器中的狀態(tài)位、無符號數(shù)相減或有符號相減而導(dǎo)致的結(jié)

2、果來進行。1無條件轉(zhuǎn)移指令JMP無條件轉(zhuǎn)移指令JMP 是使程序無條件轉(zhuǎn)移至目標處,又分為段內(nèi)轉(zhuǎn)移、段間轉(zhuǎn)移。2條件轉(zhuǎn)移指令JXX條件轉(zhuǎn)移指令可分為三大類:1)簡單條件轉(zhuǎn)移指令指令。根據(jù)單個標志位的狀態(tài)判斷轉(zhuǎn)移條件。2)無符號數(shù)條件轉(zhuǎn)移指令。假設(shè)在條件轉(zhuǎn)移指令前使用比較指令,比較兩個無符號數(shù)A,B,指令進行的的操作是 A-B,其轉(zhuǎn)移指令如下:3).帶符號數(shù)條件轉(zhuǎn)移指令。循環(huán)結(jié)構(gòu)的組成及其設(shè)計方法的知識要點有:1、循環(huán)程序的基本結(jié)構(gòu)通常由3 部分組成1) 初始化部分建立循環(huán)初始值,為循環(huán)做準備,如設(shè)置地址指針,(BX/SI/DI/BP),初始化循環(huán)控制變量 或計數(shù)器(CX),數(shù)據(jù)寄存器(AX/DX

3、)初值等.2) 循環(huán)體循環(huán)體是循環(huán)程序的主體,是程序中重復(fù)執(zhí)行的程序段.它是由循環(huán)工作部分、修改部 分、和循環(huán)控制部分。循環(huán)工作部分:完成程序功能的主要程序段,用于解決程序的實際任務(wù); 修改部分:對循環(huán)參數(shù)進行修改,并為下一次循環(huán)做準備;循環(huán)控制部分:判斷循環(huán)結(jié)束條件是否滿足。通常判斷循環(huán)結(jié)束方法:用計數(shù)控制循環(huán);循環(huán)是否進行了預(yù)定的次數(shù)。用條件控制循環(huán)。循環(huán)終止條件是否滿足。3)結(jié)束處理處理部分主要是對循環(huán)的結(jié)果進行處理,比如現(xiàn)實提示信息等,很多時候沒有此部分程序。2、循環(huán)控制指令:指令格式 執(zhí)行操作 循環(huán)結(jié)束條件LOOP標號 CX=CX-1; 若CX=0,則循環(huán)CX=0LOOPNZ/LOO

4、PNE 標號CX=CX-1; 若CX=0 且ZF=0,則循環(huán)CX=0 或ZF=0LOOPZ/LOOPE 標號CX=CX-1; 若CX=0 且ZF=1,則循環(huán) CX=0 或ZF=1JCXZ 標號 僅測試(CX)=0? 若等于0,則轉(zhuǎn)移到目標地址,否則就順序執(zhí)行3、循環(huán)控制可以分為:計數(shù)循環(huán)和條件循環(huán)。作為計數(shù)循環(huán),一般是指循環(huán)次數(shù)是已 知的情況,在程序設(shè)計的的循環(huán)時,先應(yīng)將循環(huán)次數(shù)送入計數(shù)器CX 中進行計數(shù),在循環(huán)體 中使用LOOP 等循環(huán)指令。當然,也可以通過其他方式來進行,如cxcx-1,jnz 等結(jié)合實 現(xiàn)。四、實驗內(nèi)容與步驟1、判斷方程AX2+BX+C=0 是否有實根。若有實根,則將字節(jié)

5、變量tag 置1,否則置0。假 設(shè)A、B、C 均為字節(jié)變量,數(shù)據(jù)范圍為-128127。流程圖:程序代碼:DATAS SEGMENTAA DB?;存放數(shù)據(jù)ABB DB?;存放數(shù)據(jù)BCC DB?;存放數(shù)據(jù)CTAG DB?;存放數(shù)據(jù)0或1,以顯示是否有根FOUR DB 4STR1 DB 0DH,0AH,'the equationcan solve$'STR2 DB 0AH,'the equation cannotsolve$' DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS M

6、OV DS,AX IRP X,<AA,BB,CC> MOV AH,01H INT 21H SUB AL,30HMOV X,ALENDM ;采用不定重復(fù)匯編將AA,BB,CC系數(shù)輸入 MOV AL,BB IMUL BBMOV BX,AX ;計算BB*BB MOV AL,AA IMUL CC IMUL FOUR ; CMP BX,AX JNB EXIST MOV TAG,0LEA DX,STR2 MOV AH,09H INT 21H JMP EXIT EXIST: MOV TAG,1 LEA DX,STR1 MOV AH,09H INT 21H EXIT:MOV AH,4CH INT

7、21H CODES ENDS ENDSTART實驗結(jié)果:2、編寫一個程序,判別鍵盤上輸入的字符;若是1-9 字符,則顯示之;若為A-Z 字符,顯 示“C”;若為a-z 字符,顯示“c”;若是回車字符<CR>(其ASCII 碼為0DH),則結(jié)束程序, 若為其它字符則顯示顯示“R”。 實驗分析:程序代碼:CODES SEGMENT ASSUME CS:CODES START: MOV AH,1 INT 21H CMP AL,0DH JE EXIT CMP AL,'1' JB L1 CMP AL,'9' 實驗結(jié)果:JA L2 MOV DL,AL JMP L

8、3L2:CMP AL,'A' JB L1 CMP AL,'Z' JA L4 MOV DL,'C' JMP L3 L4:CMP AL,'a' JB L1CMP AL,'z' JA L1 MOV DL,'c' JMP L3L1:MOV DL,'R' L3:MOV AH,2 INT 21HEXIT:MOV AH,4CH INT 21H CODES ENDS ENDSTART輸入數(shù)字1:輸入小寫字母d:輸入大寫字母D: 輸入其它字符:3、(大家再次編成實現(xiàn)實驗一的題目,看是否可以優(yōu)化程序?)

9、分類統(tǒng)計字數(shù)組data 中正 數(shù)、負數(shù)和零的個數(shù),并分別存入內(nèi)存字變量Positive、Negative 和Zero 中,數(shù)組元素個 數(shù)保存在其第一個字中。使用Debug 查看Positive、Negative 和Zero 三個變量的數(shù)據(jù)流程圖:程序代碼:DATAS SEGMENTDATA DB 1,-2,0,-1,-2,-3,0,0,4,5 COUNT EQU $-DATA POSITIVE DB 0 NEGATIVE DB 0 ZERO DB 0;顯示要輸出的數(shù)據(jù)代號STR1 DB'POSITIVE:$'STR2 DB 0AH,0DH,'ZERO:$'STR

10、3 DB 0AH,0DH,'NEGATIVE:$' DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATAS MOV DS,AX MOV BL,0 MOV AH,0 MOV BH,0 LEA SI,DATAMOV CX,COUNT ;比較所取數(shù)據(jù)判斷正負 L1: INC SIMOV AL,SI-1 CMP AL,0JL FUSHUJG ZHENGSHU INC AHJMP L2ZHENGSHU: INC BH JMP L2 FUSHU: INC BL 實驗結(jié)果JMP L2 L2:LOOP L1;存儲最后

11、結(jié)果到對應(yīng)的內(nèi)存單元MOV ZERO,AHMOV POSITIVE,BHMOV NEGATIVE,BL ;輸出對應(yīng)的字符串和數(shù)據(jù) MOV AH,9 LEA DX,STR1 INT 21HADD POSITIVE,30H MOV DL,POSITIVE MOV AH,2 INT 21HMOV AH,9 LEA DX,STR2 INT 21H ADD ZERO,30H MOV DL,ZERO MOV AH,2 INT 21HMOV AH,LEA DX,STR3 INT 21HADD NEGATIVE,30H MOV DL,NEGATIVE MOV AH,2 INT 21H MOV AH,4CH I

12、NT 21H CODES ENDS ENDSTART4、編寫程序,在字符串變量STRING 中存有一個以$為結(jié)尾的ASCII 碼字符串,要求計算 字符串的長度,并把它存入LENGTH 單元中。(要求用條件控制循環(huán)方法,并且字符串分數(shù)據(jù)類型是字節(jié)和字兩種情況) 流程圖:程序代碼:DATAS SEGMENTSTRING DB'WE ARE$'LONGTH DB 0 ;存儲字符串長度 STR2 DB 0AH,0DH,'THE LENGTH IS:$'STR3 DB 0AH,0DH,'INPUT IS BYTE$' STR4 DB 0AH,0DH,

13、9;INPUT IS WORD$' STR5 DB 0AH,0DH,'COOSE WORD OR BYTE:$' DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼 STACKS ENDSCODES SEGMENT ASSUMECS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATAS MOV DS,AX MOVAH,9LEA DX,STRINGINT 21H ;顯示字符串 LEA SI,STRING MOV AH,9 LEA DX,STR5INT 21H ;選擇字節(jié)操作或者字操作 MOV AH,01HINT 21H

14、 ;輸入0則選擇字操作,輸入1則選擇字節(jié)操作 CMP AL,'0' JE COMP1 JNE COMP2 COMP1:MOV AH,9 LEA DX,STR3 INT 21H JMP LOOP1LOOP1:CMP BYTE PTRSI,'$'字節(jié)操作循環(huán)JE EXIT INC LONGTH INC SIJMP LOOP1COMP2:MOV AH,9 LEA DX,STR4 INT 21H JMP LOOP2LOOP2: CMP WORD PTRSI,'$'字操作循環(huán) JE EXIT ADD SI,2 INC LONGTHJMP LOOP2 EXIT:MOV AH,9 LEA DX,STR2INT 21H ;顯示要求輸出字符串長度 ADD LONGTH,30H MOV DL,LONGTH MOV AH,2INT 21H ;將longth轉(zhuǎn)換為ASCII碼輸出MOV AH,4CH INT 21H CODES ENDS ENDSTART實驗

溫馨提示

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

評論

0/150

提交評論