标题:作业加急~
只看楼主
wangsf8
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-12-20
 问题点数:0 回复次数:4 
作业加急~
求教:统计AX中1和0的个数~~我是菜鸟!!!
本人要求:把0的个数存入CH中,把1的个数存入CL中
最后并输出结果,最好是每句有详解
谢谢了,大哥大姐们了!!
搜索更多相关主题的帖子: 加急 作业 详解 大姐 
2006-12-20 22:37
lefttime
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2006-10-6
得分:0 

就来个例子吧:
......
MOV CX,1000H ;在这里我假设0的个数为16,1的个数为0
MOV BL,16 ;判断的位数初始化
NEXT0: TEST AX,1 ;与1相与,用于判断0或1;在这里与2的整数次方相与都行,当然不能超过8000H
JZ NEXT1 ;如果第一位为0则转移,这时就不用更改CX
INC CL ;如果第一位为1则 CH减1,CL加1
DEC CH
SHL AX,1 ;左移一位,把其它没判断的位移到第一位进行判断
NEXT1: DEC BL ;判断次数减1
JNZ NEXT0 ;次数不为0转移,继续判断
......


我是金子,我要闪光的
2006-12-21 15:22
曾小
Rank: 1
等 级:新手上路
威 望:1
帖 子:239
专家分:0
注 册:2006-9-27
得分:0 

DSEG SEGMENT
S1 DB ?
D2 DB ?
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START:MOV AX,DSEG
MOV DS,AX
MOV S1,0
MOV S2,0
MOV AX,1234h;给AX 赋值
MOV CX,16
SIGN:SHL AX,1
JC STEP1;若 CF=1
INC S1
MOV CL,S1
DEC CX
JCXNZ SIGN
STEP1:INC S2
MOV CH,S2
JCXNZ SIGN
DEC CX
MOV AH,4CH
INT 21H
CSEG ENDS
END START
我现在想从键盘上输入AX的值,要怎么办?并且样测出它的位数,赋给CX啊?


2006-12-21 19:05
lefttime
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2006-10-6
得分:0 
[QUOTE]我现在想从键盘上输入AX的值,要怎么办?并且样测出它的位数,赋给CX啊?[/QUOTE]

输入给AX必定是16啦,如果你要测出实际的数是几位,我们用移位指令不就行啦
来个例子:(在AX获得数值后)
......
MOV CX,4
NEXT: CMP AX,0
JZ EXIT ;这里的标号EXIT是用来跳出循环的
SHL AX,CL
INC CH
JMP NEXT
EXIT: MOV CL,CH
MOV CH,0
......

我是金子,我要闪光的
2006-12-21 19:23
lefttime
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2006-10-6
得分:0 
对啦,忘了说了,上述是用于测试数是有几位16进制数,而不是几位二进制数

我是金子,我要闪光的
2006-12-21 19:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-110941-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.510313 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved