灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3109回复:0

汇编循环结构

楼主#
更多 发布于:2012-09-10 18:56

循环结构是一个重要的程序结构,它具有重复执行某段程序的功能。通常,循环结构包括以下四个组成部分:

1、循环初始化部分――初始化循环控制变量、循环体所用到变量;

2、循环体部分――循环结构的主体;

3、循环调整部分――循环控制变量的修改、或循环终止条件的检查;

4、循环控制部分――程序执行的控制转移。

以上四部分可以在程序中用各种不同的形式体现出来,有时也并非清析地表达出来。常用的循环结构如图6.3所示。

(a)、Do―While结构(b)、While结构

图6.3 常用的循环结构示意图

一、用循环指令构成循环结构

在编写循环结构的程序片段时,我们可以多种方法来循环结构。如:循环次数是已知的,可用LOOP指令来构造循环;当循环次数是未知或不定的,则可用条件转移或无条件转移来构成循环结构。

例6.10 分类统计字数组data中正数、负数和零的个数,并分别存入内存字变量Positive、Negative和Zero中,数组元素个数保存在其第一个字中。

解:显示解答

例6.11 计算数组score的平均整数,并存入内存字变量Average中,数组以-1为结束标志。

解:

DATA1SEGMENT

dataDW 90, 95, 54, 65, 36, 78, 66, 0, 99, 50, -1

AverageDW 0

DATA1ENDS

CODE1SEGMENT

ASSUME CS:CODE1, DS:DATA1

START:MOVAX, DATA1

MOVDS, AX

XORAX, AX

XORDX, DX;用(DX,AX)来保存数组元素之和

XORCX, CX;用CX来保存数组元素个数

LEASI, data;用指针SI来访问整个数组

again:MOVBX, word ptr [SI]

CMPBX, 0

JLover

ADDAX, BX

ADCDX, 0;把当前数组元素之值加到(DX,AX)中

INCCX;数组元素个数加1

ADDSI, 2

JMPagain

over:JCXZexit;防止零作除数,即数组是空数组

DIVCX

MOVAverage, AX

exit:MOVAX, 4C00H

INT21H

CODE1ENDS

ENDSTART

喜欢0 评分0
游客

返回顶部