北京理工大學(xué)匯編第四次(分支和循環(huán)程序設(shè)計(jì)實(shí)驗(yàn))報(bào)告_第1頁(yè)
北京理工大學(xué)匯編第四次(分支和循環(huán)程序設(shè)計(jì)實(shí)驗(yàn))報(bào)告_第2頁(yè)
北京理工大學(xué)匯編第四次(分支和循環(huán)程序設(shè)計(jì)實(shí)驗(yàn))報(bào)告_第3頁(yè)
北京理工大學(xué)匯編第四次(分支和循環(huán)程序設(shè)計(jì)實(shí)驗(yàn))報(bào)告_第4頁(yè)
北京理工大學(xué)匯編第四次(分支和循環(huán)程序設(shè)計(jì)實(shí)驗(yàn))報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、匯編第四次(分支和循環(huán)程序設(shè)計(jì)實(shí)驗(yàn))報(bào)告匯編第四次(分支和循環(huán)程序設(shè)計(jì)實(shí)驗(yàn))報(bào)告一、實(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í)在實(shí)際應(yīng)用中,經(jīng)常根據(jù)一些條件來(lái)選擇一條分支執(zhí)行。匯編語(yǔ)言的條件判斷主要是通過(guò)狀態(tài)寄存器中的狀態(tài)位、無(wú)符

2、號(hào)數(shù)相減或有符號(hào)相減產(chǎn)生的結(jié)果來(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)移條件。下表表示條件轉(zhuǎn)移指令標(biāo)志位的狀態(tài): 標(biāo)志位 指令 轉(zhuǎn)移條件 意義 JC CF=1 有進(jìn)位/借位 CF JNC CF=0 無(wú)進(jìn)位/借位 JE/JZ ZF=1 相等/等于 0 ZF JNE/JNZ ZF=0 不相等/不等于 0 JS SF=1 是負(fù)數(shù) SF JNS SF=0 是正數(shù) JO OF=1 有溢出 OF JNO OF=0 無(wú)溢出 JP/JPE PF

3、=1 有偶數(shù)個(gè) 1 PF JNP/JPO PF=0 有奇數(shù)個(gè) 1 2) 無(wú)符號(hào)數(shù)條件轉(zhuǎn)移指令。假設(shè)在條件轉(zhuǎn)移指令前使用比較指令,比較兩個(gè)無(wú)符號(hào)數(shù) A,B,指令進(jìn)行的的操作是 A-B,其轉(zhuǎn)移指令如下: 指令 轉(zhuǎn)移條件 意義 JA/JNBE CF=0 AND ZF=0 AB JAE/JNB CF=0 OR ZF=1 A=B JB/JNAE CF=1 AND ZF=0 AB JBE/JNA CF=1 OR ZF=1 AB JGE/JNL SF=OF OR ZF=1 A=B JL/JNGE SF OF AND ZF=0 AB JLE/JNG SF OF OR ZF=1 A=4ACtag=1tag=0結(jié)

4、 束 tag db 0data endscode segmentassume cs:code,ds:datastart: mov ax,data mov ds,ax mov al,B mul al mov cx,ax mov al,A mul C mov bx,ax mov ax,4 mul bx sbb ax,cx cmp ax,0 jl yep jmp nopeyep: mov al,1 mov tag,alnope: mov ah,4ch int 21hcode endsend start(2)主要操作初始值 a=5,b=10,c=5 顯然有實(shí)根使用-u、-g 命令查看結(jié)果,可知確實(shí)有

5、tag=al=1更改 a=1,b=1,c=1,再次查看知 al 未賦值“1” ,故 tag 仍為初始值“0”-q 退出2、編寫(xiě)一個(gè)程序,判別鍵盤(pán)上輸入的字符;若是1-9字符,則顯示之;若為A-Z字符,顯示“C” ;若為a-z 字符,顯示“c” ;若是回車字符(其ASCII碼為0DH),則結(jié)束程序,若為其它字符則顯示顯示“R” 。流程圖如下: Y N Y N Y N Y N(1)代碼DATA SEGMENT開(kāi)始輸入字符 chch=0DH1=ch=9A=ch=Za=ch0 0 =0 開(kāi)始賦值數(shù)據(jù)段計(jì)算長(zhǎng)度并賦予 cx挨個(gè)數(shù)字與 0 比較存入 positive存入 zero存入 negetive N

6、 Y(1)代碼data segment buf db 9,5,4,2,0,0,0,-1,-2,-3 positive dw 0 negative dw 0 zero dw 0data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov si,0相應(yīng)計(jì)數(shù)器+1cx=0計(jì)數(shù)器存入相應(yīng)數(shù)據(jù)變量的第一個(gè)字中結(jié)束 mov cx,10s: cmp cx,0 je done dec cx cmp byte ptr si,0 je s1 jg s2 jl s3s1: inc zero inc si jmp ss2: i

7、nc positive inc si jmp ss3: inc negative inc si jmp sdone: mov ax,positive mov bx,zero mov dx,negative mov ah,4ch int 21hcode endsend start(2)主要操作 易知,按輸入數(shù)據(jù) buf db 9,5,4,2,0,0,0,-1,-2,-3 結(jié)果應(yīng)為四個(gè)正數(shù),3 個(gè)零,三個(gè)負(fù)數(shù)即 ax=4、bx=3、dx=3,使用-u、-g 指令查看寄存器結(jié)果如下圖:結(jié)果正確!-q 退出即可。4、編寫(xiě)程序,在字符串變量STRING中存有一個(gè)以$為結(jié)尾的ASCII碼字符串,要求計(jì)算字

8、符串的長(zhǎng)度,并把它存入LENGTH單元中。 (要求用條件控制循環(huán)方法,并且字符串分?jǐn)?shù)據(jù)類型是字節(jié)和字兩種情況)DB型(1)代碼:DATA SEGMENT STRING DB SABERSABEREXCALIBUR$ LEN DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,0 MOV DI,0S: CMP BYTE PTR DI,$ JZ END1 INC DI INC AX JMP SEND1: MOV WORD PTR LEN,AX MOV AX,4CH INT 21HCO

9、DE ENDSEND START (2)操作:查看寄存器 AX=13(即十進(jìn)制 19),與輸入吻合,檢測(cè)成功DW 型(1)代碼DATA SEGMENT BUF DB S,A,B,E,R,$ L DB 0DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV SI,0L1: MOV AL,BUFSI CMP AL,$ JE DONE INC L INC SI JMP L1DONE: MOV AL,L MOV AH,4CH INT 21HCODE ENDSEND START(2)操作:查看寄存器 AX

10、=5,與輸入吻合,檢測(cè)成功由于一些極端情況比如當(dāng)源字符串為“ssssssssss” ,子串為“ss”時(shí)子串?dāng)?shù)量究竟應(yīng)當(dāng)有多少,按照之前給出的算法,第一次循環(huán)結(jié)束后,si=1,再次比較時(shí)會(huì)從第三個(gè)“s”開(kāi)始,即結(jié)果只有五個(gè)子串,實(shí)際上子串應(yīng)當(dāng)有 9 個(gè),所以簡(jiǎn)化的算法其實(shí)有錯(cuò)誤,故使用保守做法:data segmentstr1 db ssssssssss,$len1 equ $-str1str2 db sslen2 equ $-str2count db 0data endscode segmentassume ds:data,cs:codestart: mov ax,datamov ds,axmov es,axmov bx,len1lea si,str1bazinga: mov cx,len2 lea di,str2cldrepz cmpsbjnz s2inc countsub si,(l

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論