回 帖 发 新 帖 刷新版面

主题:小问题

AND AL,AL  ;怎么维持AL不变?是不是因为AL非0?


////////////////////////////////////////////////

OR AL,80H  ;为什么可以将AL的D7位置1??

AL的D7位无非就是0或1,OR指令是全0才为1,那怎么可能把D7位置1??


//////////////////////////////////////////////////
XOR DI,0FFH
为什么可以取DI的反???
都不知道DI是个什么值,就确定能取反了?

回复列表 (共2个回复)

沙发

and al,al当然不会变
因为每一位对应都相同,与之后还与原来的是一样的啊

////////////////////////////////////////////////
or是或指令
也就是说80H的D7位是1,这样的话,与AL进行或之后,AL的D7位肯定就是1
////////////////////////////////////////////////
XOR是异或指令
任何数与1进行异或都相当于取反操作
所以DI与0FFH异或相当于对每一位取反

板凳

有些东西是固定的:一个数自己与自己进行AND和OR操作,其值不变;进行XOR操作结果为零。这样做的目的是清除进位位CF。
有一些规则是这样的:
两个位AND,都为1时结果为1,其他情况为0;
两个位OR,都为0时才为0,其他情况为1;
两个位XOR,相同结果为0,不同结果为1。
你套用一下,所有的问题就都解决了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册