111111
精灵王
精灵王
  • 注册日期2010-12-08
  • 发帖数640
  • QQ
  • 火币1103枚
  • 粉丝120
  • 关注75
  • 社区明星
阅读:2802回复:0

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

楼主#
更多 发布于:2013-01-28 14:20

例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?

喜欢0 评分0
游客

返回顶部