mov al,3AH ;原始数据
mov cl,4 ;i = 4
cmp cl,6 ; i<=6
jg exit ; 大于则退出
mov bl,3 ; 利用0011 = 3作为掩码
shl bl,cl ; 根据cl值来定位需要的掩码位置得到需要的掩码
and al,bl ; 逻辑与来截取相应位为1的值
not bl ;
and [mem],bl ; 清空除i i+1外的位
or [mem],al ; 并来将i i+1位写入mem
这是来子CSDN汇编版块
DelphiGuy() 给出的算法
我的算法是
mov al,3AH ;原始数据
mov bl,4 ;i = 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
其算法的计算掩码部分根本就没有计算相对掩码
转载于:https://www.cnblogs.com/microsoftxiao/archive/2006/08/19/481183.html