多重迴圈程式設計

2022-04-06 18:09:22 字數 2728 閱讀 7140

例題1:給十個單位元組無符號數排序:

1

;功能名稱,說明二重迴圈的實現

2dseg segment

3 buffer db 23,12,45,32,127,3,9,58,81,72

4 n equ 10

5dseg ends6;

7cseg segment

8assume cs:cseg,ds:dseg

9start: mov ax,dseg

10mov ds,ax

11 mov bx ,offset buffer -1

12 mov si, 1

13fori:mov di,si

14inc di

15 forj:mov al,[bx+si]

16 cmp al,[bx+di]

17jbe nextj

18 xchg al,[bx+di]

19 mov [bx+si],al

20nextj:inc di

21cmp di,n

22jbe forj

23nexti:inc si

24 cmp si,n-1

25jbe fori26;

27mov ah,4ch

28int 21h

29cseg ends

30 end start

view code

二重法排序,其中si相當於控制外層迴圈變數i,di相當於內層迴圈變數j,為了使i從1開始遞增,排序陣列開始位址先減一,之後再存入bx暫存器

例題2:給字元資料排序

;設字串1在資料段1中,字串2在資料段2中,寫乙個程式

;判別字串2是否是字串1的子字串,如果是子字串,則把字串2中的flag單元置為0

;否則將其置為0,設字串以0結尾

1

;設字串1在資料段1中,字串2在資料段2中,寫乙個程式

2;判別字串2是否是字串1的子字串,如果是子字串,則把字串2中的flag單元置為0

3;否則將其置為0,設字串以0結尾45

;6dseg1 segment

7 strm db "

this is a string!

",0;假設在資料段1中的字串

8dseg1 ends9;

10dseg2 segment

11 strs db "

string

",0;假設在資料段2中的字串

12 flag db ?

13dseg2 ends14;

15code segment

16assume cs:code,ds:dseg1,es:dseg2

17start: mov ax,dseg1

18mov ds,ax ;資料段1中的段值ds

19mov ax,dseg2

20mov es,ax ;資料段2中的段值es21;

22mov di ,offset strs;檢測字串2的長度

23mov bx,di ;儲存字串2的首位址

24xor cx,cx ;清空計數器

25dec di

26while1: inc di ;調整指標

27inc cx ;計數器加1

28 cmp byte ptr es:[di],0

;字串2時候結束

29jnz while1 ;沒結束繼續跳轉到while1

30dec cx ;得到字串2的長度

31mov dx,cx ;儲存32;

33mov si,offset strm ;去字串1的首位址

34mov bp,si

35fori:mov cx,dx;設定要比較的字串個數

36mov di,bx;設定首位址

37forj:mov al,es:[di];

38cmp [si],al;比較一位元組

39jnz next1;不等,從字串1的下乙個字元開始

40nextj:inc di

41inc si

42loop forj;繼續下乙個字元的比較

43 mov flag,1

;設定子字串標誌

44jmp over

45 next1:cmp byte ptr [si],0

;判斷字串1是否結束

46jz notf;結束的話進行跳轉

47inc bp

48mov si,bp

49jmp fori

50 notf:mov flag,0

51over:mov ah,4ch

52int 21h

53code ends

54 end start

view code

迴圈與多重迴圈

迴圈結構 while 條件 dowhile 條件 for 初始值 條件 更改迴圈變數的值 while和 for 迴圈 都是先判斷再執行 語法有些區別 do while 是先執行 再判斷 至少執行一次 迴圈次數確定的情況,通常選用for迴圈 迴圈次數不確定的情況,通常選用while或do while迴...

多重for迴圈巢狀

for迴圈定義 同過乙個簡單的表示式,來完成多次重複性的 功能 格式如下 for 變數初始值 變數取值範圍 變數自增 自減 乙個複雜的for迴圈中可以巢狀多個同級的for迴圈,一般表現如下 for 變數初始值 變數取值範圍 變數自增 自減 for 變數初始值 變數取值範圍 變數自增 自減 多重for...

08 多重迴圈

死迴圈 迴圈語句無法正常停止的情況,就被稱為死迴圈。一般都是缺失了迴圈的出口或者迴圈條件存在問題。按理說,死迴圈並不是一件好事,但是 沒有正邪之分,有正邪之分的是使用的人。如果被你使用正確,它可以解決很多問題。適用的場景 當不確定,或是確定迴圈條件及出口時較為困難 麻煩時,可以採用死迴圈。while...