汇编刷题:统计内存中的一个十六位二进制数 位值为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

 

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

 

你可能感兴趣的:(汇编)