经典汇编语言教程:10.2 数据的分类统计程序

10.2 数据的分类统计程序

数据的分类和统计也是一类非数值计算,数据的分类统计方法在6.10中已介绍,下面通过一个例子介绍数据的分类存储问题。

例10.5 统计从地址0040H:0000H开始的100个字中,把正数和负数按照它们先后出现的次序分别存储在缓冲区Data1和Data2,并把每类的个数存入相应缓冲区的第一个字单元中。

解:由于在指定地址之后的100个字中,可能存在全是正数或负数的情况,所以,缓冲区Data1和Data2的容量都应是100个字。
.MODEL SMALL
.DATA
Num = 100

Data1

DW ?, Num dup(?)

Data2

DW ?, Num dup(?)
.CODE
.STARTUP

MOV

AX, 40H

MOV

ES, AX

LEA

SI, Data1+2;指向存储正数的缓冲区

LEA

DI, Data2+2;指向存储负数的缓冲区

XOR

BX, BX;BX用于扫描存储单元

MOV

CX, 100;字符个数
.REPEAT

MOV

AX, ES:[BX]

ADD

BX, 2

CMP

AX, 0
.CONTINUE .IF ZERO?

JL

next1

MOV

[SI], AX;向正数缓冲区内存储数据

ADD

SI, 2
.CONTINUE
next1:

MOV

[DI], AX;向负数缓冲区内存储数据

ADD

DI, 2
.UNTILCXZ

SUB

SI, OFFSET Data1+2

SUB

DI, OFFSET Data2+2

SHR

SI, 1

SHR

DI, 1

MOV

Data1, SI

MOV

Data2, DI;把每类的统计个数存入缓冲区的第一个字单元

.EXIT

0
END

上页:上一课 下页:下一课

经典汇编语言教程·相关目录

第1章 汇编语言的由来,数据类型第2章 CPU资源和存储器
第3章 操作数的寻址方式第4章 标识符和表达式
第5章 微机CPU的指令系统第6章 程序的基本结构
第7章 子程序和库第8章 输入输出和中断
第9章 宏第10章 应用程序设计
第11章 数值运算协处理器第12章 汇编语言和C语言
汇编语言重要附录Windows API函数大全
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号