问答题 试编写一个子程序统计八位二进制数中有几个取值为“1”的位。另编写一个程序,利用这个子程序,统计数组BINX各元素中二进制位是“1”的个数,并将统计结果存放在数组BITN对应的元素中。
   ORG    10H
   BINX:DB    28,150,45,90
   DB    160,99,210,63
   NIIN    EOU    $-BINX
   BITN:    DS    NUM
【正确答案】;数据定义
   BOT    EQU OFEH    ;栈底地址
   ORG    1OH
   BINX:DB    28,150,45,90
   DB    160,99,210,63
   NUM    EQU    $-BINX
   BITN:DS    NUM
   ;二进制“1”位数统计子程序
   ORG    20H
   BITNUM:PUSH    BR
   PUSH    IX
   LD    BR,#0    ;置“1”位计数初值
   LD    IX,#8    ;置循环计数初值
   BLOOP:    ROL    AR    ;移出AR一位到CF
   ADC    BR,#0    ;“1”位计数:BR←BR+CF
   DEC    IX    ;循环计数
   JNZ    BLOOP    ;若BR≠0转BLOOP
   MOV    AR,BR    ;AR←“1”位计数结果
   POP    IX
   POP    BR
   RET
   ;主程序
   ORG    38H
   START:LD    SP,#BOT    ;SP指向栈底
   LD    IX,#0    ;置下标偏移初值
   LOOP:LD    AR,BINX[IX]    ;取一数据
   CALL    BITNUM    ;统计二进制数位是“1”的个数
   ST    AIR,BITN[IX]    ;存结果
   INC    IX    ;调整下标偏移
   CMP    IX,#NUM
   JNZ LOOP    ;若IX≠NUM继续处理
   JMP    $    ;停止往下执行
   END    START
【答案解析】