编程统计,在BLOCK1、BLOCK2两个单元中,对应的位有多少个是不同的。
题目链接:http://zhidao.baidu.com/question/553072831.html
要想查出不同的位,只需进行两者的异或运算,结果为1的位,对应位就是不同的。
然后,统计一下异或后的结果中,有多少个1,即可。
做而论道编写的程序如下:
;================================
DATA SEGMENT ;数据段
;下面随意的设置两个数据
BLOCK1 DW 2345H ;0010 0011 0100 0101
BLOCK2 DW 5A6BH ;0101 1010 0110 1011
;这两个数据,共有9个位不同
DATA ENDS
;--------------------------------I
CODE SEGMENT ;代码段.
ASSUME CS: CODE, DS: DATA
START:
MOV AX, DATA
MOV DS, AX
;--------------------------------
MOV AX, BLOCK1
XOR AX, BLOCK2
MOV BX, 0
MOV CX, 16 ;判断16位数.
DDDD:
CMP AX, 8000H
JB EEEE
INC BX ;个数加一.
EEEE:
SHL AX, 1 ;左移.
LOOP DDDD ;CX-1,非零转移.
MOV AX, BX
;--------------------------------
DISP: ;以十进制显示AX内容
MOV BX, 10
MOV CX, 0
D_1:MOV DX, 0
DIV BX
ADD DL, '0'
PUSH DX
INC CX
CMP AX, 0
JNE D_1
MOV AH, 2
D_2:POP DX
INT 21H
LOOP D_2
;--------------------------------
MOV AH, 4CH ;到此结束
INT 21H
;--------------------------------
CODE ENDS
END START
;================================
程序运行结果,显示出来:9
这个结果,和数据的特点相吻合。
有兴趣的网友,可以试试其它的数据。
提问者评价:谢谢啦。