microsoftxiao

记忆 流逝

导航

编制程序将AL中的第i,i+1位写入MEM单元的第i,i+1位,其他位不变

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
其算法的计算掩码部分根本就没有计算相对掩码

posted on 2006-08-19 12:19  龙巢NET刀  阅读(1049)  评论(0)    收藏  举报