汇编程序设计王爽版第四章(循环).pptVIP

  • 0
  • 0
  • 约3.43千字
  • 约 18页
  • 2017-06-30 发布于江苏
  • 举报
汇编程序设计王爽版第四章(循环)

第4章 汇编语言程序设计 四、 循环程序设计 本节内容是本章的重点,难点是指令的选取和编程的思路 四、 循环程序设计 循环结构一般是根据某一条件判断为真或假来确定是否重复执行循环体 循环指令和转移指令可以实现循环控制; 1、循环指令(loop) 循环指令默认利用CX计数器,方便实现计数循环的程序结构 循环程序的常见结构形式如图(a)、(b)所示。 3 单重循环程序设计  计数控制  条件控制 (1)计数控制 data SEGMENT RESULT DW ? data ENDS code SEGMENT ASSUME CS:code,DS:data START: MOV AX,data MOV DS,AX (1)计数控制 data SEGMENT RESULT DW 0 data ENDS code SEGMENT ASSUME CS:code,DS:data START: MOV AX,data MOV DS,AX (1)计数控制 【例5.8】已知有几个数存放在以BUF为首址的字节存贮区中,试统计其中正数的个数,结果放在NUM单元。 分析:显然,每个数为一个8位有符号二进制数,统计其中正数的个数可用循环程序实现。 CODE SEGMENT     ASSUME CS:CODE,DS:DATA,SS:STACK START:     MOV AX,DATA MOV DS,AX LEA BX,BUF MOV CX,N XOR AX,AX L1: CMP BYTE PTR [BX],0 JLE L2 INC AL L2: INC BX Loop DEC CX JNE L1 MOV NUM,AL MOV AH,4CH INT 21H CODE ENDS END START (2)条件控制 【例5.9】在内存单元BUF中定义1个字数据,编程统计这个字数据中含1的个数,并将结果存入内存的字节单元COUNT 中。 DATA SEGMENT BUF DW 2345H COUNT DB 0 DATA ENDS STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,BUF MOV CL,0 COPA: AND AX,AX JE EXIT SHL AX,1 JNC COPA INC CL JMP COPA EXIT: MOV COUNT,CL MOV AH,4CH INT 21H CODE ENDS END START 4 多重循环程序设计 【例5.10】在以BUF为首址的字存储区中存放有N个有符号数,现需将它们按由大到小的顺序排列在BUF存储区中,试编程实现。 我们采用冒泡排序算法从第一个数开始依次对相邻两个数进行比较,如次序对,则不交换两数位置;如次序不对则使这两个数交换位置。可以看出,第一趟需比较(N-1)次,此时,最小的数已经放到了最后;第二趟比较只需考虑剩下的(N-1)个数,即只需比较(N-2)次;第三趟只需比较(N-3)次,……整个排序过程最多需(N-1)趟。如下面的4个数即是采用冒泡排序比较的例子。 4 多重循环程序设计 数 10 8 16 90 32 第一趟 10 16 90 32 8 第二趟 16 90 32 10 8 第三趟 90 32 16 10 8 第四趟 90 32 16 10 8 程序流程图如图4.9所示。 源程序如下: DATA  SEGMENT BUF   DW 3,-4,6,7,9,2,0,-8,-9,-10,20 N=($-BUF)/2 DATA  ENDS STACK SEGNMENT STAC

文档评论(0)

1亿VIP精品文档

相关文档