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

转载于:https://www.cnblogs.com/microsoftxiao/archive/2006/08/19/481183.html

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值