80x86汇编语言编程:求两个单元中,有多少个对应的位是不同的

来源:互联网 发布:网络摄像机工程宝 编辑:程序博客网 时间:2024/04/29 20:51

编程统计,在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


这个结果,和数据的特点相吻合。


有兴趣的网友,可以试试其它的数据。


提问者评价:谢谢啦。


0 0
原创粉丝点击