|
发表于 2004-5-18 20:48:11
|
显示全部楼层
最初由 luoyong 发表
jz跳到exit去了
jnz跳到shift去了
shift后面的jmp又跳到repeat去了
好像正好把inc隔开了
晕~~~~~建议兄弟好好温习一下汇编语言。
- MOV AX,[BX] ;赋值AX为Y
- REPEAT: TEST AX,0FFFFH ;[color=green]循环R[/color],至AX为全零时结束循环
- JZ EXIT ;AX与0FFFFH相与,结果若非全零,说明Y至少有一个1,若为全零,说明Y不含1或者移位结束,跳转到EXIT
- JNS SHIFT ;判断CY(保存了移出的位,初始值为0)是否为1,[color=red]若为1,则继续下一条指令,即CX++;若为0,则跳转到SHIFT,直接移位[/color]
- INC CX ;CX自增
- SHIFT : SHL AX,1 ;移位
- JMP REPEAT ;跳转到[color=green]循环R[/color]开头
- EXIT: MOV COUNT,CX ;赋值COUNT为CX,即Y中1的总个数
复制代码 |
|