关于汇编and,or的问题。
本帖最后由 s0512 于 2013-5-25 15:27 编辑小弟的电脑是win8,不支持debug和cmd,看到小甲鱼老师的and和or指令,有个问题问问大家,就是这样的语法合法吗?
and al,00100000b ;这是合法的。
and ,00100000b ;这样合法吗?
实际上合法不合法,你可以根据一个原理来进行判断。汇编中的大部分指令都需要源操作数与目的操作数的位数相同。并且若是某个数是立即数,则另一个数应该可以指明操作数的位数。对于第一个来说00100000b 是立即数,但是al制定了操作数应该是一个字节的。因此不违反基本规则。对于第二个来说,00100000b 是立即数,表示一个内存地址的首地址,也不能指明操作数的位数,因此是错误的。
当然是不合法 逻辑操作符:and按位于
and al,00100000b ;这是合法的。
and ,00100000b ;这样是不合法的,因为目的操作数不能为内存地址中的内容。可以为寄存器
楼上好像说错了吧, 目的操作数能为内存地址, 但是不能同时是内存地址 and , ax 是合法的 不行的!表示的是ds:bx这个地址! 貌似这样就可以:lol and byte ptr ,20h 没有明确的地址~~~目标操作数要有具体的地址 第一个合法,第二个不合法 有点蛋疼,这个自己实验下不就知道了吗?才1行代码,立马见效果了 我觉得应该加上强制类型转换 楼主加油,鱼C加油!我们都看好你哦! 无回帖,不论坛,这才是人道。 激动人心,无法言表! 我只是路过打酱油的。
页:
[1]