经典汇编语言教程:10.2 分类统计程序举例

10.2 分类统计程序举例

例10.6 用键盘输入任意一字符串,分类统计该字符串中每个数字和字母的出现次数。

解:
.MODEL SMALL
.DATA
N = 80

Buff

DB N, ?, N DUP(?)

Num

DW 36 DUP(0);每个字用于存放'0'~'9','A'~'Z'出现的个数
.CODE
.STARTUP

LEA

DX, Buff

MOV

AH, 0AH

INT

21H;输入一个字符串

XOR

CH, CH

MOV

CL, Buff+1;CX=输入字符串的个数

LEA

SI, Buff+2

XOR

BX, BX
.REPEAT

MOV

BL, [SI];考虑下面的思考题

INC

SI
.IF BL>='0' && BL<='9';分类统计'0'~'9'中的每个数字的个数

SUB

BL, '0'

ADD

BX, BX

INC

Num[BX]
.CONTINUE
.ENDIF
.IF BL>='a' && BL<='z'

SUB

BL, 20H;小写变大写
.ENDIF
.IF BL>='A' && BL<='Z';分类统计'A'~'Z'中的每个字母的个数

SUB

BL, 'A'-10

ADD

BX, BX

INC

Num[BX]
.ENDIF
.UNTILCXZ
.EXIT   0
END

思考题:在本例中,用指令“MOV BL, [SI]”来把当前检测的字符存入BL,当然,我们也可以用AL来代替BL,有关指令要作相应的改动,但这样做,会更方便吗?希望读者能知道:为什么要用BL,而不用AL?

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

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

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