Fork me on GitHub

统计寄存器AX中1 的个数

 1 ;====================================
 2 ; 统计寄存器AX中1 的个数
 3 DATAS segment
 4 
 5 DATAS ends
 6 
 7 CODES segment
 8 START:
 9     mov AX,DATAS
10     mov DS,AX
11     ;正式代码部分
12     mov  AX,1001111011B ;2进制数7个1
13     mov  CX,0   ;CX置为0
14     mov  CH,16  ;记录当前操作的第几位数字
15 NEXT:
16     test AX,0001H;让...0001与AX进行 与 运算
17     JZ isZero   ;如果为0继续循环判断下一个
18     inc  CL     ;自增1
19 
20 isZero:
21     dec  CH     ;高位-1
22     JZ   EXIT   ;if(CH=0)则跳转到EXIT
23     SHR  AX,1   ;逻辑右移1位
24     JMP  NEXT
25 EXIT:
26     count db ?,'$';向屏幕打印输出结果
27     add cl,30H
28     mov count,cl
29     Lea dx,count
30     mov AH,09   ;09号功能调用
31     INT  21H    
32 
33     mov  AL,0   ;置退出码
34     mov  AH,4CH ;置功能调用号
35     INT  21H    ;软中断指令:实施功能调用
36 CODES ends
37     end START

 

posted @ 2019-01-08 16:16  粥里有勺糖  阅读(2029)  评论(0编辑  收藏  举报