汇编小结6:逻辑运算指令、移位指令、循环移位指令和堆栈

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhao3132453/article/details/81585400

1、对于与或来说,只有当所有操作数都为真的时候,整个表达式才为真;对于异火来说,当所有操作数都为真的时候,结果正好为假

2、在设置、检测或转换比特位的时候,可以分别使用or、and和xor指令

3、在使用shl和shr指令的时候,如果后面需要用到原始数据,那么需要对原始数据进行保存

4、作为其他操作的副产品,可以使用shl和shr指令对寄存器或内存空间进行清零操作,不过考虑到移位指令比mov或xor指令运算速度要慢一些,通常情况下会选择使用后边这两个指令

5、在井陉乘以2或者除以2的运算时,可以分别使用sal和sar指令,要让其他人能明白这里进行的是算术运算操作,同时在进行除法运算的时候确保负数能够被适当的处理

6、如果对比特位组合进行循环移位的次数正好等于他所在的寄存器的长度大小或内存单元的长度大小,那么就不需要再对这个比特位组合进行数据保存和恢复了

7、在使用push和pop指令进行保存和恢复数据时,请记清楚最后一个被放入到堆栈的数据时最先被弹出堆栈的数据(LIFO)

8、在使用push和pop指令时,使用关联线有助于创建和调试代码

9、对内存中的数据进行交换的时候,只使用mov指令的话会占用更多的寄存器,但是运算速度更快,相比之下,如果使用push和pop指令的话,他不需要占用任何的寄存器但是运算速度慢一些。如果同时考虑到寄存器和运算速度的话,使用xchg指令以及相应的的mov指令将是一个更好的折中选择。

猜你喜欢

转载自blog.csdn.net/zhao3132453/article/details/81585400