多重循环程序设计

例题1:给十个单字节无符号数排序:

 1 ;功能名称,说明二重循环的实现
2 DSEG SEGMENT
3 BUFFER DB 23,12,45,32,127,3,9,58,81,72
4 N EQU 10
5 DSEG ENDS
6 ;
7 CSEG SEGMENT
8 ASSUME CS:CSEG,DS:DSEG
9 START: MOV AX,DSEG
10 MOV DS,AX
11 MOV BX ,OFFSET BUFFER -1
12 MOV SI, 1
13 FORI:MOV DI,SI
14 INC DI
15 FORj:MOV AL,[BX+SI]
16 CMP AL,[BX+DI]
17 JBE NEXTJ
18 XCHG AL,[BX+DI]
19 MOV [BX+SI],AL
20 NEXTJ:INC DI
21 CMP DI,N
22 JBE FORJ
23 NEXTI:INC SI
24 CMP SI,N-1
25 JBE FORI
26 ;
27 MOV AH,4CH
28 INT 21H
29 CSEG ENDS
30 END START

二重法排序,其中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结尾
4
5 ;
6 DSEG1 SEGMENT
7 STRM DB "THIS IS A STRING!",0;假设在数据段1中的字符串
8 DSEG1 ENDS
9 ;
10 DSEG2 SEGMENT
11 STRS DB "STRING",0;假设在数据段2中的字符串
12 FLAG DB ?
13 DSEG2 ENDS
14 ;
15 CODE SEGMENT
16 ASSUME CS:CODE,DS:DSEG1,ES:DSEG2
17 START: MOV AX,DSEG1
18 MOV DS,AX ;数据段1中的段值DS
19 MOV AX,DSEG2
20 MOV ES,AX ;数据段2中的段值ES
21 ;
22 MOV DI ,OFFSET STRS;检测字符串2的长度
23 MOV BX,DI ;保存字符串2的首地址
24 XOR CX,CX ;清空计数器
25 DEC DI
26 WHILE1: INC DI ;调整指针
27 INC CX ;计数器加1
28 CMP BYTE PTR ES:[DI],0;字符串2时候结束
29 JNZ WHILE1 ;没结束继续跳转到while1
30 DEC CX ;得到字符串2的长度
31 MOV DX,CX ;保存
32 ;
33 MOV SI,OFFSET STRM ;去字符串1的首地址
34 MOV BP,SI
35 FORI:MOV CX,DX;设置要比较的字符串个数
36 MOV DI,BX;设置首地址
37 FORJ:MOV AL,ES:[DI];
38 CMP [SI],AL;比较一字节
39 JNZ NEXT1;不等,从字符串1的下一个字符开始
40 NEXTJ:INC DI
41 INC SI
42 LOOP FORJ;继续下一个字符的比较
43 MOV FLAG,1;设置子字符串标志
44 JMP OVER
45 NEXT1:CMP BYTE PTR [SI],0;判断字符串1是否结束
46 JZ NOTF;结束的话进行跳转
47 INC BP
48 MOV SI,BP
49 JMP FORI
50 NOTF:MOV FLAG,0
51 OVER:MOV AH,4CH
52 INT 21H
53 CODE ENDS
54 END START

多重循环程序设计,布布扣,bubuko.com

时间: 2024-10-20 16:08:56

多重循环程序设计的相关文章

Java中如何跳出多重循环?

在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环.例如, ok: for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { System.out.println(“i=” + i + “,j=” + j); if(j == 5) break ok; } } 另外,不建议使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中

java 多重循环

1 //http://www.weixueyuan.net/view/6311.html 2 //多重循环 3 import java.util.Scanner; 4 public class Test16{ 5 public static void main(String args[]){ 6 Scanner in =new Scanner(System.in); 7 for (int i=1;i<=3;i++){ //最外层循环 8 int sum=0; 9 for (int j=1;j<

跳出多重循环 JS

关于如何跳出多重循环 loop: //循环标记 for(var key in jsonObj){   for(var i=0;i<jsonObj[key].length;i++){      if(jsonObj[key][i].password=='123456'){         break loop;//跳出双重循环      }   } }

for 的多重循环--java

for的多重循环--java 利用for的多重循环打印出四种不同的三角形的图案. 图案如下: 4种不同三角形图案打印如下------------------******------------------******------------------  * *****------------------*** **  *------------------ code : import java.util.*;public class Sanjiaoxing {    /*     *    *

慕课网-安卓工程师初养成-4-14 Java 循环语句之多重循环

来源:http://www.imooc.com/code/1497 循环体中包含循环语句的结构称为多重循环.三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环.在二重循环中,外层循环每执行一次,内层循环要执行一圈. 如下所示: 例如:使用 * 打印长方形: 实现代码为: 执行流程:当 i = 1 时,外层循环条件成立,进入内层循环,开始打印第一行内容.此时, j 从 1 开始,循环 8 次,内层循环结束后换行,实现第一行 8 个 * 的输出.接下来返回外层循环 i 变为 2 ,准备打

java之跳出多重循环

在java 中 要想跳出多重循环,可以在想要跳出的循环外,加上一个标号,然后跳出此标号,也就是跳出相应的循环.如: 我们希望的是当里面的for循环的b=8时,结束整个循环,但是加上break后只是跳出当前的一层for循环,但是我们又不想结束整个方法,所以不能用return,这个时候可以在想要跳出的循环外,加上一个标号,然后跳出此标号,也就是跳出相应的循环.如: 或者可以在想要跳出循环的时候加上可以跳出外部循环的条件.如:

ThinkPHP 3.2.2 在 volist 多重循环嵌套中使用 if 判断标签

今天在 ThinkPHP 3.2.2 的试图模板中使用多重循环,用来把相应类别下对应的文章都依次循环出来,但是无论如何只能循环出类别,类别下的文章无法循环出,( 错误 ) 代码如下: <volist name="list" id="vo"> <tr class='{$vo.help_category_id}'> <td>{$vo.help_category_id}</td> <td class='display_

Java 循环语句之多重循环

循环体中包含循环语句的结构称为多重循环.三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环.在二重循环中,外层循环每执行一次,内层循环要执行一圈. 如下所示: 例如:使用 * 打印长方形: 实现代码为: 执行流程:当 i = 1 时,外层循环条件成立,进入内层循环,开始打印第一行内容.此时, j 从 1 开始,循环 8 次,内层循环结束后换行,实现第一行 8 个 * 的输出.接下来返回外层循环 i 变为 2 ,准备打印下一行,依此类推,直到完成长方形的打印

在java中,如何跳出当前的多重循环?

</pre>直接用break ;具体举例如下:<p></p><p></p><p></p><pre name="code" class="java"><span style="font-size:18px;"> package com.test; public class test {     public static void main(