tomas6628 发表于 2013-4-20 12:25:42

关于汇编and,or的问题。

本帖最后由 s0512 于 2013-5-25 15:27 编辑

小弟的电脑是win8,不支持debug和cmd,看到小甲鱼老师的and和or指令,有个问题问问大家,就是这样的语法合法吗?
and al,00100000b         ;这是合法的。
and ,00100000b    ;这样合法吗?

1144290241 发表于 2013-4-20 12:25:43

实际上合法不合法,你可以根据一个原理来进行判断。汇编中的大部分指令都需要源操作数与目的操作数的位数相同。并且若是某个数是立即数,则另一个数应该可以指明操作数的位数。对于第一个来说00100000b         是立即数,但是al制定了操作数应该是一个字节的。因此不违反基本规则。对于第二个来说,00100000b         是立即数,表示一个内存地址的首地址,也不能指明操作数的位数,因此是错误的。

icedrop 发表于 2013-4-20 12:52:42

当然是不合法

1971827035 发表于 2013-4-20 19:25:13

逻辑操作符:and按位于
and al,00100000b         ;这是合法的。
and ,00100000b    ;这样是不合法的,因为目的操作数不能为内存地址中的内容。可以为寄存器

icedrop 发表于 2013-4-20 19:48:48

楼上好像说错了吧, 目的操作数能为内存地址, 但是不能同时是内存地址   and , ax 是合法的

Samples、懂么 发表于 2013-4-21 18:15:37

不行的!表示的是ds:bx这个地址!

风筝1025 发表于 2013-4-21 21:59:46

貌似这样就可以:lol and byte ptr ,20h

252013680 发表于 2013-4-22 17:36:14

没有明确的地址~~~目标操作数要有具体的地址

、_归属 发表于 2013-4-22 19:18:56

第一个合法,第二个不合法

dAb 发表于 2013-5-2 16:00:34

有点蛋疼,这个自己实验下不就知道了吗?才1行代码,立马见效果了

monk-half 发表于 2013-5-9 16:03:40

我觉得应该加上强制类型转换

☆小韦QQ 发表于 2013-5-12 00:08:49

楼主加油,鱼C加油!我们都看好你哦!

540167078 发表于 2013-5-13 18:14:03

无回帖,不论坛,这才是人道。

互微时代 发表于 2013-5-13 19:19:36

激动人心,无法言表!

540167078 发表于 2013-5-13 19:38:30

我只是路过打酱油的。
页: [1]
查看完整版本: 关于汇编and,or的问题。