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

下載本文檔

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

文檔簡介

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

2、移指令 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)移條件。 標志位 指令 轉(zhuǎn)移條件 意義CFJC CF=1 有進位/借位JNC CF=0 無進位/借位ZFJE/JZ ZF=1 相等/等于 0JNE/JNZ ZF=0 不相等/不等于 0SFJS SF=1 是負數(shù)JNS SF=0 是正數(shù)OFJO OF=1 有溢出JNO OF=0 無溢出PFJP/JPE PF=1 有偶數(shù)個 1JNP/JPO PF=0 有奇數(shù)個 12)無符號數(shù)條件轉(zhuǎn)移指令。假設在條件轉(zhuǎn)移指令前使

3、用比較指令,比較兩個無符號數(shù)A,B,指令進行的的操作是 A-B,其轉(zhuǎn)移指令如下:指令 轉(zhuǎn)移條件 意義JA/JNBE CF=0 AND ZF=0 A>BJAE/JNB CF=0 OR ZF=1 A>=BJB/JNAE CF=1 AND ZF=0 A<BJBE/JNA CF=1 OR ZF=1 A<=B3).帶符號數(shù)條件轉(zhuǎn)移指令。指令 轉(zhuǎn)移條件 意義JG/JNLE SF=OF AND ZF=0 A>BJGE/JNL SF=OF OR ZF=1 A>=BJL/JNGE SF OF AND ZF=0 A<BJLE/JNG SF OF OR ZF=1 A<

4、=B四、實驗內(nèi)容與步驟1、判斷方程 AX2+BX+C=0是否有實根。若有實根,則將字節(jié)變量 tag置 1,否則置 0。假 設 A、B、C均為字節(jié)變量,數(shù)據(jù)范圍為-128127。流程圖:(2)程序代碼:DATAS SEGMENTA1 DB ?B1 DB ?C1 DB ? TAG DB ? ;此處輸入數(shù)據(jù)段代碼 DATAS ENDS CODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATAS MOV DS,AXMOV AH,01H;輸入第一個數(shù)據(jù) INT 21HSUB AL,30H;輸入數(shù)據(jù)存入A,并轉(zhuǎn)化為十進制數(shù)MOV A1,ALMOV AH

5、,01H;輸入第二個數(shù)據(jù) INT 21H SUB AL,30H MOV B1,ALMOV AH,01H;輸入第三個數(shù)據(jù) INT 21HSUB AL,30H;輸入數(shù)據(jù)存入C,并轉(zhuǎn)化為十進制數(shù)MOV C1,AL程序結(jié)果: B*B-4AC=0,>0,<0的三種情況MOV AL,B1MUL AL;計算B*B,結(jié)果存入AX MOV BX,AX;B*B結(jié)果存入BXMOV AL,A1 IMUL C1 MOV CL,4IMUL CL;計算4*A*CCMP BX,AX JGE T1 MOV TAG,0 JMP NEXT1T1: MOV TAG,1;有根,將TAG賦值為1 NEXT1:ADD TAG,

6、30HMOV DL,TAG;輸出TAG的值 MOV AH,02H INT 21H MOV AH,4CH INT 21H CODES ENDS END START2、編寫一個程序,判別鍵盤上輸入的字符;若是 1-9字符,則顯示之;若為 A-Z字符,顯示“C”;若為 a-z字符,顯示“ c”;若是回車字符 <CR>(其 ASCII碼為 0DH),則結(jié)束程序, 若為其它字符則顯示顯示“R”。流程圖:DATAS SEGMENT;此處輸入數(shù)據(jù)段代碼結(jié)果DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS

7、,AXMOV AH,01HINT 21HCMP AL,'1'同1比較JNB ONEONE:CMP AL,'9'同9比較JL READJGE TOWREAD:MOV DL,ALMOV AH,02HINT 21HMOV AH,4CHINT 21HTOW: CMP AL,'A'同A比較JGE A A:CMP AL,'Z'同Z比較READ1:MOV DL,'C' MOV AH,02H INT 21H MOV AH,4CH INT 21HTHREE:CMP AL,'a'同a比較 JGE B;>a則轉(zhuǎn)到B

8、 B: CMP AL,'z'同z比較 JL READ2 JGE FOUR READ2: MOV DL,'c' MOV AH,02H INT 21H MOV AH,4CHJL READ1 JGE THREEINT 21HFOUR:CMP AL,0DH JZ CR JNZ FIVE CR: MOV AH,4CH INT 21HFIVE: MOV DL,'R' MOV AH,02HINT 21H ;此處輸入代碼據(jù)段代碼 MOV AH,4CH INT 21H CODES ENDS END START3、(大家再次編成實現(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 SEGMENTNUM DW 30,4,16,-2,0,6,34,0,-4,3 CNT EQU $-NUM POSITIVE db 0 Negative db 0 Zero db 0DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS START:MOV AX,DATASMOV DS,AXLE

10、A SI,NUM ;SI取NUM的偏移地址 MOV CX,CNT/2;CX存入數(shù)據(jù)個數(shù),JMP A Z:INC Zero JMP A A:ADD SI,2 LOOP SADD POSITIVE,30H;把數(shù)字轉(zhuǎn)換為相應的ASCII碼MOV DL,POSITIVE MOV AH,02H INT 21HADD Negative,30H MOV DL,Negative MOV AH,02HINT 21HADD Zero,30H用于控制循環(huán) S:CMP WORD PTR SI,0 JG P JZ Z INC Negative JMP A P:INC POSITIVE程序結(jié)果MOV DL,ZeroMOV

11、 AH,02HINT 21HMOV AH,4CH INT 21H CODES ENDS END START4、編寫程序,在字符串變量 STRING中存有一個以 $為結(jié)尾的 ASCII碼字符串,要求計算字符串的長度,并把它存入 LENGTH單元中。(要求用條件控制循環(huán)方法,并且字符串分數(shù) 據(jù)類型是字節(jié)和字兩種情況) 流程圖:程序代碼: STRING1 DB 100 db ?DB 100 DUP(?) LENGTH1 DB -1STR2 DB 0ah,'The length of the string is',' ','$' DATAS ENDSCO

12、DES SEGMENTMOV AH,0AH LEA DX,STRING1 INT 21H;輸入字符串 LEA SI,STRING1+2 MOV CL,0 S:MOV AH,0CMP BYTE PTRSI,'$'判斷與$是否相等 JZ STOP;相等則跳去STOPINC SIASSUME CS:CODES,DS:DATAS,ES:DATAS START:MOV AX,DATAS;初始化ES,DX MOV DS,AXINC CLMOV LENGTH1,CL;CL每次變化后保存JMP SSTOP:LEA DX,STR2MOV AH,09HINT 21HMOV AH,0結(jié)果ADD CL,30h MOV D

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論