问答题
试编写一个子程序统计八位二进制数中有几个取值为“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