




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)四分支和循環(huán)程序設(shè)計(jì)實(shí)驗(yàn)(設(shè)計(jì)性實(shí)驗(yàn))一、實(shí)驗(yàn)要求和目的1熟悉匯編語(yǔ)言程序設(shè)計(jì)結(jié)構(gòu);2熟悉匯編語(yǔ)言分支程序基本指令的使用方法;3掌握利用匯編語(yǔ)言實(shí)現(xiàn)單分支、雙分支、多分支的程序設(shè)計(jì)方法;4了解匯編語(yǔ)言循環(huán)程序設(shè)計(jì)的基本流程;5熟悉匯編語(yǔ)言循環(huán)基本指令的使用方法;6掌握利用匯編語(yǔ)言的循環(huán)指令完成循環(huán)程序設(shè)計(jì)方法。二、軟硬件環(huán)境1、硬件環(huán)境:計(jì)算機(jī)系統(tǒng)windows;2、軟件環(huán)境:裝有MASM、DEBUG、LINK、等應(yīng)用程序。三、實(shí)驗(yàn)涉及的主要知識(shí)轉(zhuǎn)移指令:在實(shí)際應(yīng)用中,經(jīng)常根據(jù)一些條件來(lái)選擇一條分支執(zhí)行。匯編語(yǔ)言的條件判斷主要是通 過(guò)狀態(tài)寄存器中的狀態(tài)位、無(wú)符號(hào)數(shù)相減或有符號(hào)相減而導(dǎo)致的結(jié)
2、果來(lái)進(jìn)行。1無(wú)條件轉(zhuǎn)移指令JMP無(wú)條件轉(zhuǎn)移指令JMP 是使程序無(wú)條件轉(zhuǎn)移至目標(biāo)處,又分為段內(nèi)轉(zhuǎn)移、段間轉(zhuǎn)移。2條件轉(zhuǎn)移指令JXX條件轉(zhuǎn)移指令可分為三大類:1)簡(jiǎn)單條件轉(zhuǎn)移指令指令。根據(jù)單個(gè)標(biāo)志位的狀態(tài)判斷轉(zhuǎn)移條件。2)無(wú)符號(hào)數(shù)條件轉(zhuǎn)移指令。假設(shè)在條件轉(zhuǎn)移指令前使用比較指令,比較兩個(gè)無(wú)符號(hào)數(shù)A,B,指令進(jìn)行的的操作是 A-B,其轉(zhuǎn)移指令如下:3).帶符號(hào)數(shù)條件轉(zhuǎn)移指令。循環(huán)結(jié)構(gòu)的組成及其設(shè)計(jì)方法的知識(shí)要點(diǎn)有:1、循環(huán)程序的基本結(jié)構(gòu)通常由3 部分組成1) 初始化部分建立循環(huán)初始值,為循環(huán)做準(zhǔn)備,如設(shè)置地址指針,(BX/SI/DI/BP),初始化循環(huán)控制變量 或計(jì)數(shù)器(CX),數(shù)據(jù)寄存器(AX/DX
3、)初值等.2) 循環(huán)體循環(huán)體是循環(huán)程序的主體,是程序中重復(fù)執(zhí)行的程序段.它是由循環(huán)工作部分、修改部 分、和循環(huán)控制部分。循環(huán)工作部分:完成程序功能的主要程序段,用于解決程序的實(shí)際任務(wù); 修改部分:對(duì)循環(huán)參數(shù)進(jìn)行修改,并為下一次循環(huán)做準(zhǔn)備;循環(huán)控制部分:判斷循環(huán)結(jié)束條件是否滿足。通常判斷循環(huán)結(jié)束方法:用計(jì)數(shù)控制循環(huán);循環(huán)是否進(jìn)行了預(yù)定的次數(shù)。用條件控制循環(huán)。循環(huán)終止條件是否滿足。3)結(jié)束處理處理部分主要是對(duì)循環(huán)的結(jié)果進(jìn)行處理,比如現(xiàn)實(shí)提示信息等,很多時(shí)候沒(méi)有此部分程序。2、循環(huán)控制指令:指令格式 執(zhí)行操作 循環(huán)結(jié)束條件LOOP標(biāo)號(hào) CX=CX-1; 若CX=0,則循環(huán)CX=0LOOPNZ/LOO
4、PNE 標(biāo)號(hào)CX=CX-1; 若CX=0 且ZF=0,則循環(huán)CX=0 或ZF=0LOOPZ/LOOPE 標(biāo)號(hào)CX=CX-1; 若CX=0 且ZF=1,則循環(huán) CX=0 或ZF=1JCXZ 標(biāo)號(hào) 僅測(cè)試(CX)=0? 若等于0,則轉(zhuǎn)移到目標(biāo)地址,否則就順序執(zhí)行3、循環(huán)控制可以分為:計(jì)數(shù)循環(huán)和條件循環(huán)。作為計(jì)數(shù)循環(huán),一般是指循環(huán)次數(shù)是已 知的情況,在程序設(shè)計(jì)的的循環(huán)時(shí),先應(yīng)將循環(huán)次數(shù)送入計(jì)數(shù)器CX 中進(jìn)行計(jì)數(shù),在循環(huán)體 中使用LOOP 等循環(huán)指令。當(dāng)然,也可以通過(guò)其他方式來(lái)進(jìn)行,如cxcx-1,jnz 等結(jié)合實(shí) 現(xiàn)。四、實(shí)驗(yàn)內(nèi)容與步驟1、判斷方程AX2+BX+C=0 是否有實(shí)根。若有實(shí)根,則將字節(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 ;計(jì)算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實(shí)驗(yàn)結(jié)果:2、編寫一個(gè)程序,判別鍵盤上輸入的字符;若是1-9 字符,則顯示之;若為A-Z 字符,顯 示“C”;若為a-z 字符,顯示“c”;若是回車字符<CR>(其ASCII 碼為0DH),則結(jié)束程序, 若為其它字符則顯示顯示“R”。 實(shí)驗(yàn)分析:程序代碼:CODES SEGMENT ASSUME CS:CODES START: MOV AH,1 INT 21H CMP AL,0DH JE EXIT CMP AL,'1' JB L1 CMP AL,'9' 實(shí)驗(yàn)結(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、(大家再次編成實(shí)現(xiàn)實(shí)驗(yàn)一的題目,看是否可以優(yōu)化程序?)
9、分類統(tǒng)計(jì)字?jǐn)?shù)組data 中正 數(shù)、負(fù)數(shù)和零的個(gè)數(shù),并分別存入內(nèi)存字變量Positive、Negative 和Zero 中,數(shù)組元素個(gè) 數(shù)保存在其第一個(gè)字中。使用Debug 查看Positive、Negative 和Zero 三個(gè)變量的數(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ù)代號(hào)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ù)判斷正負(fù) L1: INC SIMOV AL,SI-1 CMP AL,0JL FUSHUJG ZHENGSHU INC AHJMP L2ZHENGSHU: INC BH JMP L2 FUSHU: INC BL 實(shí)驗(yàn)結(jié)果JMP L2 L2:LOOP L1;存儲(chǔ)最后
11、結(jié)果到對(duì)應(yīng)的內(nèi)存單元MOV ZERO,AHMOV POSITIVE,BHMOV NEGATIVE,BL ;輸出對(duì)應(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 中存有一個(gè)以$為結(jié)尾的ASCII 碼字符串,要求計(jì)算 字符串的長(zhǎng)度,并把它存入LENGTH 單元中。(要求用條件控制循環(huán)方法,并且字符串分?jǐn)?shù)據(jù)類型是字節(jié)和字兩種情況) 流程圖:程序代碼:DATAS SEGMENTSTRING DB'WE ARE$'LONGTH DB 0 ;存儲(chǔ)字符串長(zhǎng)度 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 ;顯示要求輸出字符串長(zhǎng)度 ADD LONGTH,30H MOV DL,LONGTH MOV AH,2INT 21H ;將longth轉(zhuǎn)換為ASCII碼輸出MOV AH,4CH INT 21H CODES ENDS ENDSTART實(shí)驗(yàn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度光伏互補(bǔ)型充電樁安裝合同
- 工傷私了賠償協(xié)議范本2025年度:賠償協(xié)議的爭(zhēng)議解決途徑
- 2025年度智能化鋪面出租服務(wù)合同
- 二零二五年度施工安全教育培訓(xùn)與咨詢服務(wù)協(xié)議
- 二零二五年度酒廠文化遺產(chǎn)保護(hù)與傳承合作協(xié)議
- 2025年度校企產(chǎn)學(xué)研合作知識(shí)產(chǎn)權(quán)共享合同
- 2025年度海鮮餐廳承包經(jīng)營(yíng)與食材供應(yīng)合同
- 二零二五年度汽車不過(guò)戶責(zé)任免除及后續(xù)保養(yǎng)及理賠協(xié)議
- 2025年度社區(qū)食堂運(yùn)營(yíng)承包與管理合同
- 舉辦活動(dòng)保證金協(xié)議
- 2023年全國(guó)高考體育單招考試英語(yǔ)試卷試題真題(精校打印版)
- 2023年四川省綿陽(yáng)市中考化學(xué)試卷真題(含答案與解析)
- 財(cái)務(wù)管理中的財(cái)務(wù)指標(biāo)
- 2016-2023年青島酒店管理職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 第二章-環(huán)境數(shù)據(jù)統(tǒng)計(jì)與分析
- 電力各種材料重量表總
- 腸道健康講座活動(dòng)策劃
- 醫(yī)療器械(耗材)項(xiàng)目投標(biāo)服務(wù)投標(biāo)方案(技術(shù)方案)
- 小學(xué)三年級(jí)下冊(cè)數(shù)學(xué)教案3篇
- pci術(shù)后術(shù)肢腫脹處理流程
- 遼寧省營(yíng)口市2023-2024學(xué)年七年級(jí)上學(xué)期期末英語(yǔ)試題
評(píng)論
0/150
提交評(píng)論