| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 355 人关注过本帖
标题:为什么我的这个小程序统计的0的个数有误?
收藏  订阅  推荐  打印 
hero2007
Rank: 2
来自:湖北武汉
等级:注册会员
威望:1
帖子:130
积分:1450
注册:2007-3-22
为什么我的这个小程序统计的0的个数有误?

DATAS SEGMENT
BUF DW 00000000B,00000000B,11110000B,00001111B
n =$-BUF
OUTPUT DB 'The number of zero is '
X DW 0
Y1 DB 0AH,0DH,'The number of Positive is '
Y DW 0
Z1 DB 0AH,0DH,'The number of Negative is '
Z DW 0
OUTEND DB '$'
DATAS ENDS

STACKS SEGMENT
DB 200 DUP(?)
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
LEA BX,BUF
MOV CX,n

AGAIN:
TEST BX,BX
TEST BYTE PTR[BX],0FFH
JZ COUNTX
AND BYTE PTR[BX],80H
JZ COUNTY
JMP COUNTZ
JMP EXIT

OUTPUTN:ADD X,30H
ADD Y,30H
ADD Z,30H
LEA DX,OUTPUT
MOV AH,9
INT 21H
JMP EXIT

COUNTX: INC X
INC BX
DEC CX
JNZ AGAIN
JMP OUTPUTN
JMP EXIT
COUNTY: INC Y
INC BX
DEC CX
JNZ AGAIN
JMP OUTPUTN
JMP EXIT
COUNTZ: INC Z
INC BX
DEC CX
JNZ AGAIN
JMP OUTPUTN
JMP EXIT
EXIT: MOV AH,4CH
INT 21H
CODES ENDS
END START



为什么统计的0的个数有误?而且是比实际的数目大$-BUF个(上面的程序是比实际的大4)。
虚心请教!

搜索更多相关主题的帖子: STACKS  SEGMENT  The  DATAS  
2007-5-9 16:06
hero2007
Rank: 2
来自:湖北武汉
等级:注册会员
威望:1
帖子:130
积分:1450
注册:2007-3-22

这个程序是判断BUF中存的二进制数,统计其中正、负、0的个数并输出。
2007-5-9 16:14
曾小
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:235
积分:2458
注册:2006-9-27

课本上应该有例题吧!

2007-5-9 17:49
爱以走远
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:52
帖子:7500
积分:75172
注册:2007-3-16

呵呵 没错哈 运行出来是0的个数是6个
你是定义的dw撒 但是你在后面 bx 是加的一 安字节在算 所以 第一的个数有2个0 二的个数有2个0
三的个数有1个0 四的个数有1个0 就是6个0拉

   好好活着,因为我们会死很久!!!
2007-5-9 18:50
hero2007
Rank: 2
来自:湖北武汉
等级:注册会员
威望:1
帖子:130
积分:1450
注册:2007-3-22

恩,明白了。
发现自己类型意识、层次意识不够强。
3Q
2007-5-9 22:20
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.058925 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved