循環(huán)程序設(shè)計(jì)_第1頁(yè)
循環(huán)程序設(shè)計(jì)_第2頁(yè)
循環(huán)程序設(shè)計(jì)_第3頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、本文格式為Word版,下載可任意編輯循環(huán)程序設(shè)計(jì) 強(qiáng)制 CPU 重復(fù)執(zhí)行同一指令集合的一種程序結(jié)構(gòu),它可以使很多重復(fù)性工作的程序大為簡(jiǎn)化。 循環(huán)結(jié)構(gòu)一般是依據(jù)某一條件推斷為真或假來(lái)確定是否重復(fù)執(zhí)行循環(huán)體,循環(huán)指令和轉(zhuǎn)移指令可以實(shí)現(xiàn)循環(huán)掌握;還可以采納 MASM 6.x 供應(yīng)的循環(huán)掌握偽指令實(shí)現(xiàn)循環(huán)結(jié)構(gòu).model small.stack.datasum dw ?.code.startupxor ax,ax ; 被加數(shù) AX 清 0mov cx,100again: add ax,cx; 從 100,99,.,2,1 倒序累加loop againmov sum,ax ; 將累加和送入指定單元.ex

2、it 0end 例 1 : 在內(nèi)存 40000H 開(kāi)頭的挨次 30 個(gè)單元中存放著 8 位無(wú)符號(hào)數(shù),若將它們的和放在 DX 中,其程序如下: MOV AX , 4000H MOV DS , AX MOV SI , 0000H MOV CX , 30 XOR AX , AX GOON : ADD AL , SI ADC : AH , 00H INC SI DEC CX JNZ GOON MOV DX , AX HLT 例 2 :在 DS 所打算的數(shù)據(jù)段,從偏移地址 BUFFER 開(kāi)頭挨次存放 100 個(gè)無(wú)符號(hào)的 16 位數(shù),現(xiàn)欲編程序?qū)?100 個(gè)字按大小挨次排列: LEA DI , BUFFE

3、R MOV BL , 99 NEXT0 : MOV SI , DI MOV CL , BL NEXT3 : MOV AX , DI ;第一個(gè)數(shù) -AX ADD SI , 2 CMP AX , SI ;第一個(gè)數(shù)同其次個(gè)數(shù)比較 JNC NEXT5 ;第一個(gè)數(shù) 其次個(gè)數(shù),轉(zhuǎn) NEXT5 MOV DX , SI ;若第一個(gè)數(shù) 其次個(gè)數(shù),其次個(gè)數(shù) - DX MOV DI , DX ; DX- 第一個(gè)位置 MOV SI , AX NEXT5 : DEC CL JNZ NEXT3 ; CL 0 INC DI INC DI DEC BL JNZ NEXT0 HLT 例 3 求 1-100 的和 計(jì)數(shù)掌握循環(huán),

4、 循環(huán)次數(shù)固定mov ah,1 ; 從鍵盤(pán)輸入一個(gè)字符int 21hmov bl,al ;BL AL 字符的 ASCII 碼;DOS 功能會(huì)轉(zhuǎn)變 AL 內(nèi)容,故字符 ASCII 碼存入 BLmov ah,2mov dl,':' ; 顯示一個(gè)分號(hào),用于分隔int 21hmov cx,8 ;CX 8 (循環(huán)次數(shù))again: shl bl,1 ; 左移進(jìn) CF ,從高位開(kāi)頭顯示mov dl,0 ;MOV 指令不轉(zhuǎn)變 CFadc dl,30h ;DL 0 30H CF;CF 若是 0 ,則 DL '0' ;若是 1 ,則 DL '1'mov ah,2i

5、nt 21h ; 顯示loop again ;CX 減 1 ,假如 CX 未減至 0 ,則循環(huán) 例 4: 用二進(jìn)制顯示從鍵盤(pán)輸入的一個(gè)字符的 ASCII 碼 mov bx,offset stringagain: mov al,bx ; 取一個(gè)字符or al,al ; 是否為結(jié)尾符 0jz done ; 是,退出循環(huán)cmp al,'A' ; 是否為大寫(xiě) A Zjb nextcmp al,'Z'ja nextor al,20h; 是,轉(zhuǎn)換為小寫(xiě)字母(使 D5=1 )mov bx,al ; 仍保存在原位置next: inc bxjmp again ; 連續(xù)循環(huán)done

6、: .exit 0例 5. 大小寫(xiě)條件掌握循環(huán) , 利用標(biāo)志退出冒泡法“冒泡法”是一種排序算法,不是最優(yōu)的算法,但它易于理解和實(shí)現(xiàn)冒泡法從第一個(gè)元素開(kāi)頭,依次對(duì)相鄰的兩個(gè)元素進(jìn)行比較,使前一個(gè)元素不大于后一個(gè)元素;將全部元素比較完之后,最大的元素排到了最終;然后,除掉最終一個(gè)元素之外的元素依上述方法再進(jìn)行比較,得到次大的元素排在后面;如此重復(fù),直至完成就實(shí)現(xiàn)元素從小到大的排序這需要一個(gè)雙重循環(huán)程序結(jié)構(gòu)冒泡法的排序過(guò)程比較遍數(shù)序號(hào) 數(shù) 1 2 3 41 32 32 16 15 82 85 16 15 8 153 16 15 8 16 164 5 8 32 32 325 18 85 85 85 8

7、5mov cx,count ;CX 數(shù)組元素個(gè)數(shù)dec cx ; 元素個(gè)數(shù)減 1 為外循環(huán)次數(shù)outlp: mov dx,cx ;DX 內(nèi)循環(huán)次數(shù)mov bx,offset arrayinlp: mov al,bx ; 取前一個(gè)元素cmp al,bx+1 ; 與后一個(gè)元素比較jna next; 前一個(gè)不大于后一個(gè)元素,則不進(jìn)行交換xchg al,bx+1 ; 否則,進(jìn)行交換mov bx,alnext: inc bx ; 下一對(duì)元素dec dxjnz inlp ; 內(nèi)循環(huán)尾loop outlp ; 外循環(huán)尾計(jì)數(shù)掌握雙重循環(huán); 現(xiàn)有一個(gè)以 $ 結(jié)尾的字符串,要求剔除其中的空格.datastring db 'Let us have a try !','$'.code.startupmov si,offset stringoutlp: cmp byte ptr di,'$' 外循環(huán),先推斷后循環(huán)jz done ; 為 $ 結(jié)束cmp byte ptr si,' ' 檢測(cè)是否是空格jnz next ; 不是空格連續(xù)循環(huán)例 : 剔除空格mov di,si ; 是空格,進(jìn)入剔除空格分支; 該分支是循環(huán)程序段inlp: inc dimov al,di ; 前移一個(gè)位置mov di

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論