mov al,3AH ;原始数据
mov cl,4 ;i = 4
cmp cl,6 ; i<&#61;6
jg exit ; 大于则退出
mov bl,3 ; 利用0011 &#61; 3作为掩码
shl bl,cl ; 根据cl值来定位需要的掩码位置得到需要的掩码
and al,bl ; 逻辑与来截取相应位为1的值
not bl ;
and [mem],bl ; 清空除i i&#43;1外的位
or [mem],al ; 并来将i i&#43;1位写入mem
这是来子CSDN汇编版块DelphiGuy() 给出的算法
我的算法是
mov al,3AH ;原始数据
mov bl,4 ;i &#61; 4
cmp bl,6
jg exit
cmp bl,0
jz num_i0;
cmp bl,1
jz num_i1
cmp bl,2
jz num_i2
cmp bl,3
jz num_i3
cmp bl,4
jz num_i4
cmp bl,5
jz num_i5
cmp bl,6
jz num_i6
jmp numOut
num_i0:
and al,03h
jmp numOut
num_i1:
and al,06h
jmp numOut
num_i2:
and al,0Ch
jmp numOut
num_i3:
and al,18h
jmp numOut
num_i4:
and al,30h
jmp numOut
num_i5:
and al,60h
jmp numOut
num_i6:
and al,0C0h
numOut:mov [MEM],al
其算法的计算掩码部分根本就没有计算相对掩码