本人要求:把0的个数存入CH中,把1的个数存入CL中
最后并输出结果,最好是每句有详解
谢谢了,大哥大姐们了!!
就来个例子吧:
......
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转移,继续判断
......
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啊?