汇编刷题:统计内存中的一个十六位二进制数 位值为1的位个数之和

DATA SEGMENT
    DATAS DW 100DH                                  ;测试数据100D
DATA ENDS

STACK SEGMENT
    DB 1000 DUP(?)
STACK ENDS

CODE SEGMENT
    ASSUME CS:CODE,DS:DATA,SS:STACK
START:
    MOV AX,DATA
    MOV DS,AX
    
    MOV CX,10H                                             ;循环次数
    MOV AX,0
    LEA BX,DATAS
    MOV DX,[BX]                                             ;将数据段中的测试数据放到寄存器中

SIGN:    ROL DX,1                                         ;不带进位的循环移位指令,这里可以使用其他移位指令
    JNB NEXT                                                  ;若CF位为零则继续循环,若不为零则计数器加一
    INC AX
    
NEXT:    LOOP SIGN
    ADD AX,30H                                               ;0的ASCII码值为30H,dos 02号功能显示的是ascii码,不是图形
    MOV DL,AL                                                 ;因为算法原因这里仅支持最多9位为1
    MOV AH,02H
    INT 21H
    MOV AH,4CH
    INT 21H
    
CODE ENDS
    END START

原文地址:https://www.cnblogs.com/viplanyue/p/12700580.html