+ -
当前位置:首页 → 问答吧 → [填写指令](AL)=BFH,要求屏蔽第0,1两位,则要执行指令( AND AL,3F );如果要求第0,1位变反,可使用指令( XOR AL,3F

[填写指令](AL)=BFH,要求屏蔽第0,1两位,则要执行指令( AND AL,3F );如果要求第0,1位变反,可使用指令( XOR AL,3F

时间:2010-12-25

来源:互联网

(AL)=BFH,要求屏蔽第0,1两位,则要执行指令( AND AL,3F );如果要求第0,1位变反,可使用指令( XOR AL,3F )

为什么是3F,是写错了吧?应该是BF的吧!

作者: kartik   发布时间: 2010-12-25

第0,1两位?D0和D1么?,应该是指低2位吧
如果是D0和D1置0,那么
and al,0fch
xor al,03h
如果是D6,D7高两位,那么
and al,3fh
xor al,3fh
你可以DEBUG下试试

作者: va_zaixuexi   发布时间: 2010-12-25

引用 1 楼 va_zaixuexi 的回复:
第0,1两位?D0和D1么?,应该是指低2位吧
如果是D0和D1置0,那么
and al,0fch
xor al,03h
如果是D6,D7高两位,那么
and al,3fh
xor al,3fh
你可以DEBUG下试试

为什么是3f啊

作者: kartik   发布时间: 2010-12-25

0011 1111 = 3F,高2位置0

作者: va_zaixuexi   发布时间: 2010-12-25

引用 3 楼 va_zaixuexi 的回复:
0011 1111 = 3F,高2位置0

这么说跟AL的值无关了?

作者: kartik   发布时间: 2010-12-25

大哥,AL是8位的啊,不是4位的......

作者: va_zaixuexi   发布时间: 2010-12-25

不是,那0111 1111与3f(即00111111)异或结果应该是01000000
正好是把除了高二位的所有的取反,不就错了吗?

作者: 昕姐99   发布时间: 2013-06-03

对劲,是我错了

作者: 昕姐99   发布时间: 2013-06-03